Internet Radio mit mpd und Web-Bedienung auf RasPi 4

  • Hallo,


    habe mir kürzlich einen RasPi 4 mit 2 GB RAM zugelegt und habe mir ein Webradio mit mpd nach dieser youtube-Anleitung installiert. Funktioniert soweit tadellos an meinem Hifi-Reveiver mittels HDMI-Kabel. Ich hänge das bisherige Web-Projekt mal an diesen Beitrag an.


    Jetzt würde ich das Web-Froentend aber gerne noch etwas ausbauen, und die Kommunitaktion mit dem mpd über tcp port 6600 abwickeln. Vor allem weil ich auch noch eine Laufschrift mit dem aktuell laufenden Titel haben möchte. Ich habe es mal mit Javascript versucht, aber es funktioniert nicht. Ich bin aber auch kein guter Programmierer und habe mit Javascript kaum Erfahrung. Meine index.html sieht momentan folgendermaßen aus:



    Den Laufschriftbereich habe ich schon eingefügt, aber ich habe nicht wirklich eine Erfahrung wie man den Text mit Javascript über eine tcp Verbindung lädt. Ich bräuchte die Möglichkeit einen Befehl abzuschicken und dann die Rückgabe lesen zu können. Sobald das mit der Laufschrift geht und ich weiss wie das mit der tcp-Verbindung läuft, würde ich die Technik auch auf das Senden der Befehle zum Abspielen, Stoppen, Lauter und Leise anwenden.


    Alternativ habe ich mir mal MyMPD angeschaut und installiert. Der gefällt mir nicht schlecht und funktioniert auch gut. Nur zeigt er mir die einzelnen radio streams in der playlist nicht mit Namen und Bild an. Das wäre mir wichtig und ein Grund das vorgenannte Projekt noch weiter anzugehen.

  • Guten Morgen,


    für einen Tipp bezüglich einer TCP-Verbindung über Javascript würde ich mich sehr freuen, ich erwarte keinen fertig Code. Ein Link würde mir schon helfen :)


    Grüße

    Runningman

  • 13 Minuten Video aus dem Jahr 2014.

    Ich hab das hier aus dem Jahr 2013 :)

    https://github.com/codebude/Ra…/tree/master/Webinterface

    Den Ordner "webradio" auf der Seite hab ich einfach nach /var/www/html/ kompiert und mit http://localhost/webradio aufgerufen.

    Und ja, ich hab viele Extra Knöpfe wie Aufnahme mit Streamripper eingebaut.

    Aber wie die Seite funktioniert kann ich nicht sagen.

    Hab nur das Schema verstanden, und in PHP funktionen eingebaut.

    Ich glaub aber verstanden zu haben das die KNÖPFE alle samt über Javascript PHP-Funktionen aufrufen, und PHP den Streamripper starten kann, dazu hab ich dem Streamripper in der /etc/sudoers Datei jeglichen zugriff erlaubt.

    Da der Webserver mit dem User www-data läuft und somit auch php.


    Kurz gesagt: Java-Script ruft eine PHP-Funktion auf .

    Das oben verlinkte Webinterface für mpd, ist hoch kompliziert.

    Man kann es aber schaffen so etwas zu realisieren wenn man das Schema versteht. Es ist kompiziert.... echt

  • Danke det_lev_da , ich habe in der Zwischenzeit mal einiges gelesen und gegoogelt, dabei kam folgende funktionierende HTML-Datei raus (leider noch nicht mit einer TCP-Vberbindung sondern mit AJAX):



    Das php-Script "current-php" enthält nur einen System-Aufruf an den mpc. Das aktuelle Projekt hänge ich nochmals neu an den Ursprungs-Post an.


    Trotzdem würde mich noch interessieren wie man eine TCP-Verbindung in Javascript macht. Gerne einfach nur ein Lese-Link :)

  • Wenn du willst schau ich mal wie ich das bash Script starte.

    Ich hab vor Jahren eine record.sh geschrieben die aufgerufen wird.

    In dem webradio-Ordner Project ob wird in Interwallen auch der Titel aktuallisier.

    In meinem bash Script steht das drin um die Playlist abzufragen:


    /bin/echo "playlist" | nc localhost 6600|/bin/grep file:

  • Jo netcat ist auch eine gute Lösung, danke :)


    Die Frage ist, ob meine Vorstellung von einer TCP-Verbindung vom Browser zum mpd-Server überhaupt in Javascript möglich ist. Würde mir schon helfen wenn jemand mir dazu antworten könnte.

  • hehe der Titel kann auch so ausgelesen werden jederzeit, und das nicht nur von JavaScript in einem ExtraScript mit Endlosschleife:


    'echo "currentsong" | busybox nc localhost 6600 | grep -e "^Title: " -e "^Name: "'


    Hier hab ich die busybox nc Funktion verwenden, lief auch schon auf android :) :)