Seite 1 von 1

Phyton script welches neue mp3 files auf dem raspi automatisch abspielt

Verfasst: Sonntag 3. Juli 2022, 11:03
von svenmeyer
Hey Leute,
ich hoffe das kommt jetzt nicht dumm oder heuchlerisch rüber. Aber ich habe ein Problem und zwar habe ich am Dienstag ein Projekt für die Schule hierzu habe ich eine Android App im Appinventor gebaut. Jetzt fehlt mir leider noch die letzte Funktion, mithilfe welcher man am Handy Audiofiles aufzeichnen kann welche dann automatisch auf einem Lautspecher abgespielt werden, welcher am RasPi angeschlossen ist. Ich habe es bereits geschafft dass die Dateien automatisch durch einen SFTP Server auf dem RasPi gespeichert werden in einem definierten Order.

Jetzt kommt mein Problem und zwar benötige ich eigentlich nur ein simples Phyton Skript, welches erkennt wenn sich eine neue MP3 Datei im Ordner befindet und diese dann automatisch abspielt. Leider hatte ich bisher keinerlei Berührungspunkte mit Phyton und habe wirklich gar keine Ahnung.

Ein fertiges Skript zu finden gestaltet sich irgendwie auch schwieriger als gedacht..
Denkt ihr jemand von euch kann mir da eventuell etwas helfen? Oder eventuell benutzt jemand von euch ja schon ein Skript genau für diese Zweck.
Für mich klingt das ganze für jemanden, der sich mit Phyton auskennt relativ simpel, für mich jedoch ist das echt nicht machbar.
Freue mich auf die ein oder andere Antwort von euch! :geek:

Re: Phyton script welches neue mp3 files auf dem raspi automatisch abspielt

Verfasst: Montag 4. Juli 2022, 19:49
von noisefloor
Hallo,

muss das mit Python sein? Verzeichnisse kann man z.B. mit inotify (siehe z.B. https://wiki.ubuntuusers.de/inotify/) überwachen. Und jedes Mal, wenn eine Datei dazu kommt, damit was machen. Z.B. mit dem Audioplayer des Systems abspielen.

Natürlich kannst du das auch mit Python machen, aber in dem Falle wäre Python nur der Wrapper für inotify und den Audioplayer - also nicht so richtig sinnvoll.

Gruß, noisefloor

Re: Phyton script welches neue mp3 files auf dem raspi automatisch abspielt

Verfasst: Dienstag 5. Juli 2022, 15:20
von DeaD_EyE
Ich würde es mit Inotify machen, da man dann auch die Information hat, dass die Datei fertig übertragen ist.

Wegwerfcode:

Code: Alles auswählen

from __future__ import annotations

import subprocess
from inotify.adapters import Inotify
# https://pypi.org/project/inotify/


def predicate(event_types: list[str]):
    return len(event_types) == 1 and "IN_CLOSE_WRITE" in event_types


def main(root: str, suffixes: list[str]):
    while True:
        for event in Inotify(root).event_gen(yield_nones=False):
            event, event_types, path, file = event

            if not file or not predicate(event_types):
                continue
                
            if not any(file.endswith(suffix) for suffix in suffixes):
                continue
            
            # blockiert
            subprocess.run(["mpv", file])
            # print(event, event_types, path, file)


main("/home/pi/Musik", [".mp3", ".m4a", ".ogg", ".opus"])
Wenn ich mit SCP Dateien lokal kopiere, bekomme ich zweimal das Ereignis "IN_CLOSE_WRITE" mit dem gleichen Dateinamen.
Beim Dateimanager `Dolphin` auch zweimal, aber die Datei hat zusätzlich noch `.part` am Ende.
Bei sftp kommt "IN_CLOSE_WRITE" nur einmal. Das ist gut.

Das Beispiel überwacht /home/pi/Musik und spielt die Dateien mp3, m4a, ogg und opus mit dem mpv Player ab.

Re: Phyton script welches neue mp3 files auf dem raspi automatisch abspielt

Verfasst: Mittwoch 6. Juli 2022, 06:00
von sparrow
Bei (S)FTP Verbindungen ist es auch nicht unüblich, das Ausloggen des Benutzers als Trigger zu verwenden, mit der Verarbeitung der Daten zu beginnen.