Techdemo Playground Audiosrv

⭐ Easy | Entrylevel

Minimalistischer audioserver auf Basis von busybox

reinhard@finalmedia.de Fri 05 Apr 2024 06:50:41 PM CEST

Hintergrund

Du hast eine kleine Sammlung an Audiodateien und möchtest diese gerne durchsuchbar im Netzwerk verfügbar machen. Dabei willst du keine zusätzlichen Tools installieren und auch die Gegenseite soll einfach einen normalen Browser zur Wiedergabe benutzen können.

Dabei hast du alle Audiodateien in einem Ordner mit vielen Unterordnern abgelegt und kannst diesen Hauptordner im Netzwerk bedenkenlos freigeben.

Was muss ich tun?

Einfach das shellscript audiosrv herunterladen, in ein Stammverzeichnis wechseln, in dem viele .mp3 oder .opus Dateien liegen. Dann das script aufrufen. Kurz warten. Fertig. Es nutzt find und busybox httpd im Vordergrund.

Gib mir nen Schritt-Für-Schritt Installer

curl https://finalmedia.de/code/techdemo/audiosrv/audiosrv > /usr/bin/audiosrv
sha256sum /usr/bin/audiosrv | grep "2cbffe87992fe869426c5727b98522275f17a14aa5b43ea57780b5ae45a9ef3d" && chmod +x /usr/bin/audiosrv
cd /dein/audioverzeichnis/irgendwo/
audiosrv

Dann einen Browser öffnen auf http://127.0.0.1:8000

Du kannst dann die Suchmaske verwenden, um die Einträge zu filtern. Sobald du einen Link anklickst, wird die Datei in den Player im Browser geladen.

Wie funktionierts?

Letztlich findet einfach inital einmalig ein Aufruf von

find -type f -regex ".*\(mp3\|.opus\)$" -printf "<a href=\"%p\">%p</a>\n" | sort
statt und wir erstellen damit eine index.html im Hauptordner. Wir suchen also ausgehend vom aktuellen Verzeichnis rekursiv nach allen .mp3 und .opus Dateien und sortieren diese dann.

Das Ergebnis schreiben wir dann als Links in eine statische Datei index.html. In der html Datei platzieren wir zudem einen automatischen darkmode switch, sowie ein minimalistisches javascript basierte filter/suche und ein standard HTML5 audio Element, das wir via Javascript auf Zuruf bespielen können.

Im Anschluss starten wird dann

busybox httpd -f -p 8000 -vv
im Vordergrund und halten diesen aktiv. Mehr ist es nicht.

Wozu soll das gut sein?

Ein bequemer Audioplayer für alle deine Audiofiles. Arbeitet mit einer statischen Datei und du musst nichts weiter installieren. In den meisten Fällen wirst du eh einen Browser auf deinem System haben. z.B. Firefox oder Chrome. Safari funktioniert auch, allerdings nur für .mp3, denn opus wird dort leider nur begrenzt unterstützt. Ist generell kein Javascript verfügbar, wird dennoch ein reguläres HTML Dokument dargestellt, sodass die Dateien normal herunterladbar sind.

Nur auf 127.0.0.1 ?

Nein. Standardmäßig bindet der busybox httpd an alle IP-Adressen deines Systems! Du exponierst den Service also auch z.B. im LAN! Nutze eine Firewall auf deinem System, wenn du das nicht möchtest.

Wie funktioniert der Live-Filter bzw. die Suchfunktion?

Absolut rudimentär. Wir suchen nur über den Dateinamen, nicht über Metadaten. Daher ist das schnell und robust. Packe daher alles an in Info in die Dateinamen hinein und nicht in Metadaten. Alternativ kannst du natürlich auch zuvor mit einem anderen Script die Metadaten extrahieren und die Dateien umbenennen. Das ist jetzt aber out-of-scope für diesen Artikel.

Geht das auch für mp4 Videos?

Ja. Ersetze einfach audiosrv durch das Script videosrv, das dann 1:1 einen video-Tag verwendet und auf .mp4 und .webm sucht.