neues Modul: 98_MediaList.pm zur Erstellung einer Playlist für TabletUI

Begonnen von Tobias, 19 Dezember 2016, 15:55:43

Vorheriges Thema - Nächstes Thema

Tobias

Hi,
also die gesamte Sammlung kann eigentlich unendlich gross sein, nur die Tracks pro Folder bzw die Einträge jeweils in den playlists sollten nicht mehr als 50 sein.
Meine mp3-Sammlung umfasst ca 700Gb.
Eine Suchmaschine auf Tag-Basis habe ich noch nicht eingebaut aber schon mal dran gedacht - auf Basis einer sqlite-DB
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

ch.eick

Wie würde sich denn dann die Struktur aufbauen?
Aus den Pfadnahmen des Fileshare oder aus den mp3 Informationen?
Habe ich dann hinterher für 7000 Alben einzelne Abspiellisten?
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Tobias

Zitat von: ch.eick am 24 September 2019, 14:24:58
Wie würde sich denn dann die Struktur aufbauen?
Aus den Pfadnahmen des Fileshare oder aus den mp3 Informationen?
Habe ich dann hinterher für 7000 Alben einzelne Abspiellisten?

Pfadnamen, so wie sie auch im NFS liegen
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

ch.eick

Puh, das wird mir dann etwas zu unübersichtlich, das ist schon jetzt am Rechner kaum zu bändigen.
Ich denke für kleinere Samlungen wird es gut gehen.
Bei mir ist es dann momentan doch besser mit itunes und itunes remote auf dem ipad.

Vielen Dank für den Gedankenaustausch
     Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Prof. Dr. Peter Henning

Fehler gefunden:

Zitat2019.10.09 17:24:26 1: PERL WARNING: Argument "" isn't numeric in addition (+) at /opt/fhem/FHEM/98_MediaList.pm line 378.
Undefined subroutine &main::ReadingsSingleUpdate called at /opt/fhem/FHEM/98_MediaList.pm line 201.

Muss readingsSingleUpdate heißen.

Ansonsten bin ich Willens, die entsprechende Erweiterung für BOSE-Boxen mitzuentwickeln.

LG

pah

Prof. Dr. Peter Henning

#125
Noch'n Fehler:
Zitatmalformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Klassik") at /opt/fhem/FHEM/98_MediaList.pm line 373.
Crasht FHEM. Hat wohl irgendwie zu tun mit dem Attribut MediaList_PathReplaceTo

Tipp: https://metacpan.org/pod/Test::JSON

benutzen, um diesen Crash zu vermeiden.

Noch'n Fehler:
ZitatCan't use an undefined value as a symbol reference at /opt/fhem/FHEM/98_MediaList.pm line 332.
Crasht FHEM.

Warnungen:
Zitat2019.10.09 18:22:08 1: PERL WARNING: Use of uninitialized value in addition (+) at /opt/fhem/FHEM/98_MediaList.pm line 383.
2019.10.09 18:22:26 1: PERL WARNING: Use of uninitialized value in subtraction (-) at /opt/fhem/FHEM/98_MediaList.pm line 415.
ZitatDatei nicht gefunden at /opt/fhem/FHEM/98_MediaList.pm line 610.

Ich habe diese spezielle FHEM-Installation jetzt durch das Modul mindestens 10x gecrasht, einfach nur durch Verwendung der set-Befehle in meinem NAS-Share mit MP3s. Für den Moment gebe ich auf...


LG

pah

Tobias

#126
Hatte ich imho schon geschrieben, bitte nicht die set neu und rename Befehle benutzen. Die muss ich noch ausbauen. Siehe Post #119

Für Anpassungen bitte einen github pullrequest stellen


Gesendet von iPhone mit Tapatalk
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Prof. Dr. Peter Henning

#127
Oh, ich habe diese Befehle und diverse andere Kleinigkeiten in einer Spezialversion des Moduls jetzt schon behoben und eine Ausgabe der Playlist auf Bose-Boxen errreicht - geht prima.

Werde das demnächst mal schicken - vielleicht magst Du es übernehmen.

Derzeit habe ich noch eine Baustelle, und zwar habe ich (das ist erlaubt ...) auf meiner NAS viele Musikverzeichnisse mit einem Leerzeichen im Namen. Die werden im select-Widget nicht richtig angezeigt (und auch nicht richtig übernommen). Ich muss mal nachgraben, ob es dafür irgendeine Option des select-Widgets gibt - sonst muss man irgendeinen Workaround konstruieren.

Edit: Das passiert immer dann, wenn das select-Widget seine Liste aus einem Reading bezieht - nicht, wenn diese Liste statisch als Argument mitgeliefert wird.
EditEdit: Auch schon gelöst - es muss nur der data-delimiter explizit auf ":" gesetzt werden. Wenn man das unterlässt, wird ein Leerzeichen ebenfalls als delimiter aufgefasst.

LG

pah

Tobias

Ich übernehme immer gerne sinnvolle Erweiterungen. Aber bitte als PullRequest in meinem GitHub (siehe Sig)
Normalerweise ist das Modul unabhängig zur Hardware (MPD, SONOS, BOSE) da man den Übergabebefehl zum Device selbst als Attribut vergeben kan. Aber ich bin auf deine Version gespannt
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Prof. Dr. Peter Henning

Viele Unterschiede im Handling sind es nicht. BOSE kann keine direkt übergebene Playlist abspielen. Damit man dem Server auch sicher mitteilt, dass sich die Playlist geändert hat, wird diese zuerst gelöscht, dann neu geschrieben.

Außerdem habe ich das crashen von FHEM abgefangen, wenn das Cache-Verzeichnis nicht schreibbar ist, sowie in die Verzeichnisliste nur Verzeichnisse aufgenommen uvm. Einige Kleinigkeiten halte.

LG

pah

Prof. Dr. Peter Henning

@Tobias:

Kannst Du mir mal erklären, welchen Sinn das mit dem "mkTempCopy" als symlink hat ? Das spart zwar etwas an Schreiboperationen ein, wenn das Zielverzeichnis auf derselben Kiste liegt - aber wenn es sich um einen Samba-Share handelt, führt das zu einer erhöhten Netzlast.

LG

pah

Tobias

Die Entscheidung ob als symlink oder echter Kopie kann jeder Anwender selbst entscheiden.  Man muss sich zwischen beiden aber entscheiden wenn man den MPD als AusgabeDevice nutzt.
Ich z.B. nutze die Symlink Methode und habe alle Musik vom NAS am Server eingebunden. Läuft perfekt.


Gesendet von iPhone mit Tapatalk
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Prof. Dr. Peter Henning

#132
Machen wir es einfacher: Pull Request ist drin. Viele "-" sind nicht ernst zu nehmen, weil meine Änderungen auf einer etwas älteren Version von MediaList beruhen. Das ist aber nicht Kritisches.


LG

pah

Tobias

hi pah,
github erstellt automatisch ein diff wenn du den pullrequest stellst. Allerdings nicht durch "simples" Datei hochladen, sondern durch einen Fork, ändern der Datei im Fork und direkt aus dem Fork den Pullrequest stellen.
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Prof. Dr. Peter Henning