[Projekt] jukebox4kids (Jukebox für Kinder)

  • Hallo zusammen,


    ich habe noch etwas bezüglich Track auslesen für ein Display herausgefunden.

    Der VLC Player kann per LUA-Interpreter eine Status XML bereitstellen.

    Durch Python lässt sich diese Status XML abrufen, und man erhält sämtliche relevanten Daten zum Song.


    Im VLC-Player muss folgendes unter Werkzeuge / Einstellungen eingestellt werden:


    Bei Interface die Einstellungen anzeigen auf Alle stellen. (links unten).

    Dort im Baum auf Interfaces / Hauptinterfaces klicken und das Interface-Modul Web anklicken.

    Unter Hauptinterfaces/Lua bei Lua-HTTP ein Passwort hinterlegen. Als Quellpfad den VLC Quellpfad angeben.

    Bei mir: /usr/share/vlc/lua/http


    Wenn man nun den VLC-Player in der GUI startet kann man die XML per Link einsehen:

    http://localhost:8080/requests/status.xml


    Diese Link lässt sich per Python abfragen.


    Die Freude war rießig. Ich dachte das Ziel erreicht zu haben. Aber nein leider nicht..


    Das Script von https://github.com/MiczFlor/RPi-Jukebox-RFID.git startet den VLC-Player wohl über eine Art telnet rc controll.

    Damit wird leider nicht der Lua-Interpreter gestartet.


    Hat jemand eine Ahnung wie ich in der nachfolgenden Befehlszeile angeben kann, dass der Lua Interpreter per HTTP gestartet werden kann um eine Status XML zu bekommen?.


    (cvlc -I rc --rc-host localhost:4212 $PATHDATA/../playlists/$FOLDERNAME.m3u &)


    Hat ggf. jemand einen anderen Lösungsansatz bzw. bin ich hier auf dem richtigen weg?


    Danke Joachim

  • Hi JoachimJOY ,


    habe versucht den VLC per localhost etc aufzurufen. Eider ohne Erfolg. Ich soll user und pw eingeben, aber das Popup kommt immer wieder - habe mich auch nich vertippt. Kannst Du evt mit ein paar Screenshots beifügen. Wäre auch sehr interessiert.

    Viele Grüße

    X-Ray

  • JoachimJOY habe hier was gefunden:

    https://stackoverflow.com/ques…ow-playing-xml-attributes

    aber ich bekomme es bei mir nicht zum laufen, egal was ich ausgebe, oder ich benötige irgendwo noch das Passwort ?


  • Hi Jochen,

    hab ziemlich lange mit dem Login gekämpft. Anbei der Code:


    from xml.dom import minidom

    import urllib2, base64


    request = urllib2.Request('http://localhost:8080/requests/status.xml')

    base64string = base64.b64encode('%s:%s' % ('', 'MeinPasswort'))

    request.add_header("Authorization", "Basic %s" % base64string)

    result = urllib2.urlopen(request)



    gruß Joachim

  • Hallo Jochen,


    es kommt darauf an, was du machen möchtest.


    Ich habe derzeit eine weitere Python Datei erstellt, um das Display anzubinden. Du kannst natürlich auch die zerobutton.py Datei bearbeiten bzw. ergänzen.


    Hat jemand noch einen Code wie man von der vlc Status.xml einzelnen Tracks ins Python auslesen kann?


    Gruß Joachim

  • webjochen,

    vielen Dank, das hat funktioniert


    JoachimJOY : Kannst Du Dein Script mal komplett posten undunsverraten, welches Display Du verwendest. Ich habe mal überlegt die Box auch mit einem Display zu erweitern - am liebst mal mit einem e-Ink. Aber das ist nicht so wichtig im Moment.


    Und noch eine Frage - ich bin kein linux oder python Profi - wie kann ich die urllib2 installieren. Zur Zeit läuft bei mir Python 3.4.2. mit pip install.. findet er die Bibliothek nicht bzw es gibt wohl urllib3, aber dann funktioniert das script nicht (auch nicht wenn ich urllib 2 gegen urllib3 ersetze). Wäre super wenn ihr auch das verraten könntet.

    Es ist halt ein Weg der kleinen Schritte, aber man kann an diesem Forum gut sehen, dass man Zusammen mehr erreciht und schneller ist.


    Viele Grüße

    X-Ray

  • Du kannst nich beliebig die imports ändern und erwarten, dass es läuft. Auch den Unterschied zwischen der Python Standard Library und 3rd-party Paketen beachten. urllib2 ist in der Python 2 standard Library enthalten und wurde in Python 3 auf verschiedene Module verteilt und umbenannt: https://docs.python.org/2/library/urllib2.html


    Urllib3 ist ein externes Paket, was mit pip installierbar ist: https://urllib3.readthedocs.io/en/latest/

  • Hi Linus,


    Vielen Dank für den Hinweis. Bin in Python nicht so bewandert, aber in anderen Sprachen durchaus. Wie auch immer ich habe beim import- Befehl der urllib2 im Script eine Fehlermeldung erhalten. Hatte auch gelesen, dass diese in Python enthalten ist - bin auf Release 3.4.2.. wie auch immer, ich habe dann zugegebenermaßen etwas exploratorisch rumprobiert und kurz beschrieben was ich schon gemacht habe.

    Wie auch immer die Frage ist, muss ich noch etwas beachten, damit der import wie im Beispiel von JoachimJOY funzt. Ich gebe gerne zu, dass ich derzeit kaum Zeit habe, um mich auf intensive Ursachenforschung zu begrben. Weil das Problem offenkundig von anderen gelöst ist frage ich halt. Also wer weiß die Antwort?


    Viele Grüße

    X-Ray

  • HI DrSteffenT ,


    zu 1: versuche es mit

    sudo apt-get install lighttpd php5-common php5-cgi php5

    Falls das nicht funktioniert dann:

    sudo apt-get install lighttpd php-common php-cgi php


    zu 2. Ich schätze fast, wenn PHP sauber installiert ist, sollte sich 2 erledigt haben.

    Ansonsten frage nochmal nach.


    Viel Erfolg

    X-Ray

  • Danke für den Tipp, PHP & Co sind nun installiert. Auch nach einem Reboot kommt "command not found".

  • "command not found" kommt bei mir auch auf den Schirm wenn ich eine Karte scanne.

    Vermutlich liegt das daran, dass der RFID-Reader die Kartennummer gefolgt von Enter ausgibt. Da es keinen Befehl wie "12345678" gibt, kommt diese Fehlermeldung. Das Skript fängt jedoch die Kartennummer ab und spielt das entsprechend hinterlegte Hörspiel ab.


    Hast Du schon eine Karte zugewiesen?

  • Meine Jukebox nimmt auch Gestalt an.

    Gehäuse ist fertig. Warte nur noch auf Abstandshalter um den Raspberry einzubauen.


    Beim Einbinden der GPIO-Buttons aus dem Skript von hailogugo ist mir aufgefallen, dass Bei meinem RPi2 nur der "Previous Track"-Button funktioniert hat. Weiß der Teufel warum... Mit anderen GPIOs funktioniert alles wie geschmiert. Habe gefühlte 8 Stunden meine gelötete Platine geprüft und verflucht.


    Fotos folgen, wenn ich alles zusammengebaut habe.

  • hi,


    wie kann ich den pfad ändern?


    der pfad zu den audiofiles lautet ja wie folgt:

    /home/pi/RPi-Jukebox-RFID/shared/audiofolders


    in welcher datei finde ich diesen pfad ums zu ändern?

    zwecks auslagerung auf ein usb-stick


    konnte bis jetzt nichts eindeutiges ausmachen.