Hallo ihr lieben,
ich wollte euch mal ein kleines Update bzgl. meiner Fortschritte beim Spulen geben. splitti79 war so lieb und hat sich bei mir aufm Rechner via TEAMViewer eingeloggt und mir ne kleine Unterrichtsstunde gegeben. VIELEN DANK dafür, du bist der Beste!
Nachdem splitti79 die gpio_button.py ein wenig modifiziert hat, hat es zwar manchmal geklappt mit dem Vorspulen, aber leider auch nicht immer. Ich habe daraufhin vermutet, dass es an meiner zur Zeit noch sporadisch zusammengesteckten Hardware liegen könnte (was es vielleicht sogar tut, keine Ahnung).
Nach unserer gemeinsamen Unterrichtsstunde, habe ich mich dann selber noch bissel dran gemacht, was zu optmieren und habe festgestellt, warum die gpio_button.py von schlizbäda bei mir leider nicht funktioniert hat. Es war eigentlich ganz einfach, die Pfade, welche auf die playout_control.sh verwiesen haben, stimmten nicht mit den meinen überein. Und nachdem ich die alle angepasst hatte, konnte ich seine Datei mit meiner Phoniebox verwenden.
Allerdings habe ich immer noch dass Problem, dass die gpio_button.py manchmal zum nächsten Song skipt, obwohl ich den Button ganz reingedrückt habe...
Da das zuückspulen ohne hin ziemlich sinnlos ist, weil man nicht über den Anfang eines Tracks hinaus zum nächsten Track zurückspulen kann, habe ich den Rewindpart aus schlizbädas Code gänzlich rausgenommen.
Dann kam ich auf die Idee, dass es für mich besser wäre, dass beim Drücken auf "Zurück" die Funktion "playerprev" nur aufgerufen wird, wenn der Track sich noch ganz am Anfang (in den ersten 5 Sekunden des Stückes) befindet. Anderenfalls soll der Track von vorn abgespielt werden.
def def_prev():
mpcstatus = str((get_mpc("mpc status"))).replace(" "," ")
mpcstatus = str(mpcstatus).replace(" "," ")
playtime = (mpcstatus).split("\n")[1].split(" ")[2].split("/")[0].split(":")
#playtime besitzt die aktuelle Laufzeit in Minuten und Sekunden
if cls_seekbuttons.gl_button_seekduration < 1 :
if int(playtime[0]) == 0 and int(playtime[1]) >5 :
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playerreplay", shell=True)
cls_seekbuttons.gl_button_seekduration = 0
elif int(playtime[0]) > 0 :
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playerreplay", shell=True)
cls_seekbuttons.gl_button_seekduration = 0
else :
check_call(jukebox4kidsPath+"/scripts/playout_controls.sh -c=playerprev", shell=True)
cls_seekbuttons.gl_button_seekduration = 0
elif cls_seekbuttons.gl_button_seekduration >= 1 :
cls_seekbuttons.gl_button_seekduration = 0
Display More
Das hat super funktionert. Bitte lacht nicht über meine mega unübersichtliche Programmierung ... ich bin ein absoluter NOOB
Die Hauptsache ist der Code tut was er soll!
Der Grund warum ich mir die ganze Mühe mit dem Spulen etc. überhaupt gemacht habe, war ja eigentlich der, dass ich mehrere Folgen von Benjamin Blümchen (o.ä.) auf eine Karte packen möchte. Dazu habe ich dann meine einzelnen Stücke einer Folge zu einer einzigen Datei zusammengefasst und musste leider feststellen, dass bei überschreiten der 10min Marke, das OLED-Display den Text der abgespielten Datei nicht mehr angezeigt hat, sondern stattdessen mir das LOGO ausgegeben hat.
Also habe ich mir splitti79s Code der oled_phoniebox.py etwas genauer angeschaut und festgestellt, dass wenn der Track länger als 9:59min geht, die Variable mpcstatus aufgrund des nun wegfallenden "LEERZEICHENS" nicht mehr in die richtigen Teile aufgesplittet wird. Und somit der Code von splitti79 ab der 10ten Minute in die except Zeile am Ende des Codes springt.
Da ich die Lite und die Mixed Variante des OLED-Displays so wie so nicht verwendet habe, habe ich diese Zeilen bei mir im Code entfernt. Zudem wollte ich eine laufende Trackzeitanzeige implementieren, sodass ich den Code dahingehend auch ein bisschen angepasst habe.
So, vielleicht hilft es ja dem einen oder anderen.
Habt noch einen schönen Tag!
LG Sven
P.S.: Ach damit die gpio-button.py funkioniert, musste ich die o4p_functions.py von Splittis OLED-Display kopieren und in den selben Ordner wie die gpio-button.py, packen, um auf die Daten vom mpc status zugreifen zu können. Das wäre bestimmt auch einfacher gegangen aber wie gesagt ich bin froh dass es so geklappt hat!!!