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

Shadow3561

Hallo,
Ist es möglich, die Cover von Internet-Radio-Streams anzuzeigen?
Im Wiki steht ja wie lokale Cover behandelt werden, jedoch klappt es irgendwie nicht bei Radiostreams.
Habe meine Radiostreams in einem extra Ordner abgelegt(***.m3u) und passende Cover gespeichert.
Jedoch werde diese anscheinend ignoriert.

Mit freundlichen Grüßen

Tobias

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

Tobias

da ich hier keine Rückmeldung bekomme gehe ich mal davon aus das alles tut wie es soll?
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

Beagel

Hallo,
komme irgendwie nicht weiter, es wird eine Playlist erstellt im mpd-player auch angezeigt "WebRadio.m3u" aber nach der Auswahl kommt:
MPD_Msg ACK ERROR [2@3] {play} Bad song index
meine Einstellungen sind:
Internals:
   DEF        /media/music/
   NAME       MyMediaList
   NR         208
   ROOT       /media/music/
   STATE      ???
   TYPE       MediaList
   Readings:
     2017-03-14 18:19:38   CurrentDir      /media/music//Barfuss
     2017-03-14 18:19:38   FolderContent   Back:Absolutely Entertaining .mp3:And I Feel Piano.mp3:And I Feel.mp3:Barefoot.mp3:Barfuss.txt:Don't Leave Home.mp3:Drei Tage.mp3:Electric.mp3:End Of The Road.mp3:Free Floating.mp3:Get Ready.mp3:Good Times.mp3:Got Me Swinging.mp3:Hallelujah.mp3:Hope.mp3:Ich Habe Sein Herz Gehört.mp3:It's Alright (2).mp3:It's Alright.mp3:Leilas Theme Part 1.mp3:Leilas Theme Part 2.mp3:Shaking That Boogie.mp3:Smile.mp3:Still Falling.mp3:The Day Has Come.mp3:This Is The Day.mp3:Walk With Me.mp3:White Sands.mp3
     2017-03-14 18:19:38   SelectedItem    /media/music//Barfuss
     2017-03-14 18:19:44   currentdir_playlist [{"Album":"Barfuss","Artist":"Music","Cover":"http://is1.mzstatic.com/image/thumb/Video/v4/20/6f/96/206f968b-2caa-2179-df7c-755423975f77/source/100x100bb.jpg","Title":"Still Falling","Time":213,"File":"/media/music//Barfuss/Still Falling.mp3"},{"Time":126,"Title":"The Day Has Com..........................
..................{"File":"/media/music//Barfuss/Smile.mp3","Title":"Smile","Time":195,"Cover":"http://is1.mzstatic.com/image/thumb/Video/v4/20/6f/96/206f968b-2caa-2179-df7c-755423975f77/source/100x100bb.jpg","Album":"Barfuss","Artist":"Music"}]
     2017-03-14 18:19:44   currentdir_playlistduration 3625
   Helper:
Attributes:
   MediaList_CacheFileDir /var/lib/mpd/playlists/
   MediaList_PathReplaceFrom /media/music/
   MediaList_PlayerDevice WebRadio
   room       WZ


WebRadio:
Internals:
   DeviceName 127.0.0.1:6600
   HOST       127.0.0.1
   IPID       722
   NAME       WebRadio
   NR         206
   PORT       6600
   PRESENCE   present
   STATE      stop
   SUBVERSION 19
   TIMEOUT    2
   TYPE       MPD
   VERSION    0.19.0
   Readings:
     2017-03-14 18:34:16   Album
     2017-03-14 18:34:13   Artist
     2017-03-14 18:34:16   Cover           http://is1.mzstatic.com/image/thumb/Video/v4/20/6f/96/206f968b-2caa-2179-df7c-755423975f77/source/100x100bb.jpg
     2017-03-14 18:34:13   Date
     2017-03-14 18:34:13   Genre
     2017-03-14 18:34:09   Id              13
     2017-03-14 18:34:13   Last-Modified
     2017-03-14 18:34:13   Name
     2017-03-14 18:34:09   ...........
-------755423975f77/source/100x100bb.jpg","Artist":"Music","Album":"Barfuss"},{"File":"/media/music//Barfuss/Smile.mp3","Title":"Smile","Time":195,"Cover":"http://is1.mzstatic.com/image/thumb/Video/v4/20/6f/96/206f968b-2caa-2179-df7c-755423975f77/source/100x100bb.jpg","Album":"Barfuss","Artist":"Music"}]
     2017-03-14 18:34:13   playlist_num    0
     2017-03-14 18:15:33   playlistcollection WebRadio:playlist
     2017-03-14 18:19:50   playlistduration 3625
     2017-03-14 18:34:09   playlistinfo    [{"Artist":"SWR3 Verkehrszentrum","Title":"Alle Stau-Infos auch auf swr3.de","Album":"","Time":"","File":"http://swr-mp3-m-swr3.akacast.akamaistream.net/7/720/137136/v1/gnl.akacast.akamaistream.net/swr-mp3-m-swr3","Track":"","Cover":"/fhem/icons/1px-spacer"}]
     2017-03-14 18:34:16   playlistlength  0
     2017-03-14 18:34:13   playlistname    WebRadio
     2017-03-14 18:34:16   playtime        35
     2017-03-14 18:34:16   presence        present
     2017-03-14 18:34:16   random          0
     2017-03-14 18:34:16   rawTitle
     2017-03-14 18:34:16   repeat          0
     2017-03-14 18:34:16   single          0
     2017-03-14 18:34:09   song            0
     2017-03-14 18:34:09   songid          13
     2017-03-14 18:34:16   songs           0
     2017-03-14 18:34:16   state           stop
     2017-03-14 18:34:09   time            1:0
     2017-03-14 18:34:16   uptime          1506
     2017-03-14 18:34:16   volume          85
   Helper:
     Running_pid:
       abortArg
       abortFn
       arg        WebRadio
       bc_pid     4
       finishFn   MPD_IdleDone
       fn         MPD_IdleStart
       pid        722
       Timeout:
     Playlistcollection:
       0          WebRadio
       1          playlist
       val        1
Attributes:
   devStateIcon play:rc_PLAY:stop stop:rc_STOP:play pause:rc_PAUSE:pause error:icoBlitz
   icon       it_radio
   image_size 0
   loadPlaylists 1
   player     mpd
   room       WZ
   statePlaylists 1
   titleSplit 1
   unknown_artist_image /fhem/icons/1px-spacer


meine mp3 liegen auf einer externen Festplatte.
ach so die "WebRadio.m3u" sieht so aus /media/music//Barfuss/song.mp3

und manchmal stürzt fhem ab bei der Übergabe.

ich meine, ich hab mich an alles gehalten, es wird ja auch eine Liste erstellt nur kann man sie nicht abspielen.

Hoffentlich war das jetzt nicht zuviel.

Gruß

Tobias

ganz klar, du hast das Attribut "MediaList_mkTempCopy" nicht auf "symlink" gestellt wie es im Wiki für MPD Benutzung steht :(
Der MPD kennt kein  / kommt nicht ran an "/media/music//Barfuss/Smile.mp3"
Abgesehen davon, mach mal den letzten Backslash in der Medialist Definition weg. Im "/media/music//Barfuss/Smile.mp3" hast du ein doppeltes "//"

BTW: das attribut "MediaList_PathReplaceFrom" macht ohne ein "MediaList_PathReplaceToPic" keinen Sinn. Dann kannst du es auch weglassen. Die Cover werden dann aber nicht dargestellt
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

Beagel

@Tobias
Danke für die Hinweisse aber nur ein kleiner Erfolg. Es werden jetzt im Ordner
/var/lib/mpd/playlists/ die Verknüpfung zu den Titeln und auch die WebRadio.m3u angezeigt, siehe Screenshot.
Aber bei Auswahl im MPD WebRadio kommt immer noch: 
MPD_Msg ACK ERROR [2@3] {play} Bad song index

aber in der MPD playlist_json wird
playlist_json
[{"Album":"Das Märchen Vom Gezogenen Stecker (Live)","Time":347,"Cover":"https://lastfm-img2.akamaized.net/i/u/300x300/109892a00e484c78cc6ad245a86d2396.png","Title":"Noh all dänne Johre","File":"/media/music/BAP/01. Noh all dänne Johre.mp3","Artist":"Niedeckens BAP"},{"Album":"Das Märchen Vom Gezogenen Stecker (Live)","Cover":"https://lastfm-img2.akamaized.net/i/u/300x300/109892a00e484c78cc6ad245a86d2396.png","Time":303,"Title":"Für`ne Moment","File":"/media/music/BAP/02. Für`ne Moment.mp3","Ar

angezeigt.

die readings der MyMedialist sieht so aus:
CurrentDir    /media/music/BAP      2017-03-15 11:48:48

FolderContent
Back:01. Noh all dänne Johre.mp3:02. Für`ne Moment.mp3:03. Zosamme alt.mp3:04. Rääts un links vum Bahndamm.mp3:   2017-03-15 11:48:48

SelectedItem  /media/music/BAP  2017-03-15 11:48:48

currentdir_playlist
[{"Album":"Das Märchen Vom Gezogenen Stecker (Live)","Time":347,"Cover":"https://lastfm-img2.akamaized.net/i/u/300x300/109892a00e484c78cc6ad245a86d2396.png","Title":"Noh all dänne Johre","File":"/media/music/BAP/01. Noh all dänne Johre.mp3","Artist":"Niedeckens BAP"},{"Album":"Das Märchen Vom....."}]
2017-03-15 11:48:56

currentdir_playlistduration    9379       2017-03-15 11:48:56


in der WebRadio.m3u sieht es so aus:
MyMediaList_01. Noh all dänne Johre.mp3
MyMediaList_02. Für`ne Moment.mp3
MyMediaList_03. Zosamme alt.mp3
alle Lieder des Albums


Noch was anders ist mir aufgefallen, wenn ich die verschiedene set Befehle aus führe passiert nichts nur bei set MyM... Playlist Name stürzt Fhem ab.

Kann man mehre Listen anlegen, für jedes Album eins mit eigenem Namen z.B. BAP.m3u ? da bin ich noch nicht hinter gekommen.

Hoffe mit diesen infos kommen wir weiter, bis hie hin schon mal Danke.


Tobias

zeigt das MPD music verzeichnis und das MPD Playlist verzeichnis auf dasselbe Verzeichnis?? siehe MPD.conf

Wenn ja, du hast folgendes gemacht?

set MyMedialist Play currentdir
-> die Tracks im aktuellen Verzeichnis werden als Playlist definiert, in die m3u Datei geschrieben und die playlist_json dem MPD Device übergeben. Letzteres bedeutet NICHT, das mpd diese playlist nun kennt

set WebRadio Playlist WebRadio
-> erst hiermit liest der MPD die playlist ein. Wenn ein anschließendes "set WebRadio Play" nichts bringt außer der Fehlermeldung, hast du den MPD falsch konfiguriert, siehe Wiki Eintrag
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

Beagel

@Tobias vielen Dank ein Playlist wird erstellt und  :) auch abgespielt,

es war mir nicht bewusst das
set WebRadio Playlist WebRadio
noch auszuführen ist, da im Dropdown WebRadio schon erschien.

Nun geht es weiter, seh ich das richtig das für jedes Album eine Playlist erstellt werden muß. Wenn ja wie wird sie umbenannt oder erstellt.
Wenn ich,
set Myme... Playlist_Name "Albumname" ausführe stürzt Fhem ab.

Noch mal Danke für deine Geduld, hab von Programmierung Nullahnung.

Gruß Dieter

Tobias

Ich kann nur für das Modul "Medialist" sprechen.
Das Modul erstellt immer EINE Playlist. Diese heißt immer exakt so, wie das Tagetdevice. Das ist wichtig damit in TabletUI alles automatisch funktioniert.
Die Playlist wird immer durch deine Aktion innerhalb "MediaList" befüllt. (RequestDirectory + Play)
Ein Abspeichern von erstellten Playlisten mit eigenem Namen ist vorgesehen, aber noch nicht implementiert
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


math78

Hallo Tobias,

ich bräuchte Deine Hilfe bei der Integration in Tablet UI. Du hast ja ein Beispiel für Tablet Ui zur Verfügung gestellt. Jedoch benötige ich es für den Sonos Player. Du hast geschrieben, man müsste dafür ein paar kleine Änderungen vornehmen. Wie würden die denn aussehen???

Vielen Dank.

Grüße
Matthias

Tobias

Die Readings sind leicht unterschiedlich. Mehr ist das nicht ;)

Ich habe mal meine versionen angehängt. Der startpunkt ist musik.html.
Die settings für sonos haben noch kein eigenes template, die hängen noch als popup in musik-wz.html drin. Ist aber veraltet. Die aktuellste version zusammen mit dem medialist device ist template_musik_mpd_settings.html
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

Bastian0302

Guten Abend.

Ich habe das selbe Problem wie mein Vorredner´.
Die jason playlist wird angezeigt/befüllt aber mit " set Radio playlist Radio"
bekomme ich trd den Fehler mit bad song index.
defmod MyMediaList MediaList /media
attr MyMediaList MediaList_CacheFileDir /var/lib/mpd/playlists/
attr MyMediaList MediaList_PathReplaceFrom /media
attr MyMediaList MediaList_PlayerDevice Radio
attr MyMediaList MediaList_mkTempCopy symlink

setstate MyMediaList 2017-04-14 18:32:22 CurrentDir /media
setstate MyMediaList 2017-04-14 18:32:22 FolderContent *usb1:*usb2:*usb3:usb
setstate MyMediaList 2017-04-14 18:32:22 SelectedItem /
setstate MyMediaList 2017-04-14 18:32:22 currentdir_playlist []
setstate MyMediaList 2017-04-14 18:32:22 currentdir_playlistduration 0
setstate MyMediaList 2017-04-14 18:32:44 playlist []
setstate MyMediaList 2017-04-14 18:32:44 playlistduration

defmod Radio MPD
attr Radio devStateIcon play:rc_PLAY:stop stop:rc_STOP:play pause:rc_PAUSE:pause error:icoBlitz
attr Radio icon it_radio
attr Radio loadPlaylists 1
attr Radio player mpd
attr Radio titleSplit 1
attr Radio unknown_artist_image /fhem/icons/1px-spacer


Ich habe mich an die https://wiki.fhem.de/wiki/MediaList gehalten.
Die playlist wird erstellt und die symlinks erstellt.

Ich habe auch folgende Fehler im Log gefunden weis aber nicht ob die damit zutun haben.
2017.04.14 17:50:27 1: PERL WARNING: Prototype mismatch: sub main::to_json ($@) vs ($) at /usr/share/perl/5.20/Exporter.pm line 66, <$fh> line 87.
2017.04.14 17:50:27 1: PERL WARNING: Prototype mismatch: sub main::from_json ($@) vs ($) at /usr/share/perl/5.20/Exporter.pm line 66, <$fh> line 87.
2017.04.14 17:50:27 1: PERL WARNING: Prototype mismatch: sub main::round ($$) vs none at /usr/share/perl/5.20/Exporter.pm line 66, <$fh> line 87.
Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos

Tobias

Wenn die Playlist erstellt wird und die darin gelisteten Dateien auch wirklich im Verzeichnis existiweren und du trotzdem einen "Bad SOng index" bekommst, liegt es zu 99% an der Konfiguration des MPD
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

Bastian0302

#59
Ich hab den Fehler gefunden.
Ich habe per usbmount einen Usb-Stick mit Musik auf den Ordner /media/usb1 gemountet.
Medialist ist unter dem Benutzer Fhem in der Gruppe users eingetragen und kann somit auf den Usb-Stick zugreifen.(ging irgendwie nicht anders)
MPD ist allerdings eine eigenständige Instanz und muss daher auch der Gruppe users beigefügt werden da er sonst den Symlinks nicht auf den Usb-Stick folgen kann, da er keine Berechtigung hat.

Was für ein naja "Sicherheitsrisiko" birgt es, dass fhem jetzt der Gruppe users angehört??

Vielen Dank für den Gedankenanstoß bei MPD doch nochmal genauer hinzuschauen.

Edit: Habe bei usb mount gid audio hinzugefügt.
FS_MOUNTOPTIONS="-fstype=vfat,gid=audio,users,dmask=0007,fmask=0117"
Und mpd gehört der Gruppe audio an und habe fhem und mpd aus der Gruppe users entfernt.
Funktioniert.
Raspbarry Pi 3, Panstamp NRG 2, Cul 433Mhz Sender/Empfänger, Mcp23017 Ein/Ausgabebaugruppe, TabletUi, Doorpi mit Nextion/RFID und Integration in Fhem, Sonos