Modul für MPD

Begonnen von roedert, 08 Januar 2014, 12:17:21

Vorheriges Thema - Nächstes Thema

tomster

So, hab's heut nochmal probiert.
Entweder hab ich es gestern übersehen, oder die Fhlermeldung ist neu hinzugekommen:

ERROR:
Undefined subroutine &main::myUtilsTemplate_Initialize called at fhem.pl line 2044.

nesges

Zitat von: tomster am 13 Mai 2015, 21:25:18

ERROR:
Undefined subroutine &main::myUtilsTemplate_Initialize called at fhem.pl line 2044.


Klingt so, als ob du versuchst das Template direkt zu verwenden - nicht machen, das wird beim Update überschrieben. In http://www.fhemwiki.de/wiki/99_myUtils_anlegen steht wie's geht.

tomster

Danke für Deinen Stupser! Genau DAS war's...
Leider mag grad pulseaudio nicht mehr so wie ich will. Es findet keinen D-BUS und diverse andere Sachen. Keine Ahnung, was ich da schon wieder angestellt hab... Hab seit 3 Tagen ICONA POP da stehen. Schöne Aufgabe für'n Vatertag.
(Gäb aber sicher Besseres...)

tomster

War ein kurzes Vergnügen für den Vatertag. Und ich kann ausnahmsweise Mal nix dafür!
Meine Radiostation scheint Probleme mit den ID3-Tags zu haben. Auch bei denen auf der Website steht immer noch ICONA POP als aktueller Song ;-)

Wernieman

Mal einen anderen Sender probiert?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

tomster

#185
Zitat von: Wernieman am 14 Mai 2015, 18:05:47
Mal einen anderen Sender probiert?

Ja, aber dabei ist mir etwas anderes aufgefallen. Bei z.B. Bayern1 wird nur der title-tag in der Form: Sie hören "BandX" mit "LaLaLa" (wechselnd mit Nachrichtenschlagzeilen) befüllt. Der artist-tag bleibt leer. Im tablet-UI wird mir aber das leere artist-tag mit dem Time-tag des letzten Readings ausgegeben. Sollte doch eigentlich leer bleiben, oder?

@nesges
Meinst Du, man könnte Deine MyUtils noch um ein Playlist-reading erweitern? Das tablet-UI verlangt ja für das select-widget mit data-list="playlists" nach einem :-separierten Array. Ein "get <name> playlists" liefert aber ein /n-separiertes Array zurück. Mit dem kann das widget natürlich nix anfangen. Wär doch gut, wenn das Dropdown des select-widget dynamisch befüllt werden würde, oder? Vielleicht sogar so sortiert, dass die aktuell gespielte Playlist im dropdown ganz oben (also aktuell) angezeigt wird...

nesges

Klar:

sub mpd_playlists($;$) {
    my $device=shift;
    my $glue=shift||':';

    my @playlists = split /\n/, fhem("get $device playlists", 1);
    shift @playlists;
   
    return join($glue, @playlists);
}


und dann ergänzt du ein Userreading:

playlists {mpd_playlists('MPDDEVICE')}

Dabei ist mir grade ein Bug aufgefallen, denke ich: Ich habe Playlists mit Doppelpunkt im Namen, das bringt get playlist offenbar durcheinander. Mir wird nur jeweils das erste Wort des Playlistnamen geliefert und die Playlists werden nicht voneinander getrennt. Aus dieser Liste

Awesome Mix Vol 1
Dungeons and Dragons
Stream: Deutschlandfunk
Stream: Digital Gunfire
Stream: DRadio Kultur
Stream: DRadio Wissen
Stream: EBM Radio
Stream: Rockantenne Alternative
Stream: Rockantenne Classic Perlen
Stream: Rockantenne Heavy Metal
Stream: Rockradio Deathmetal
Stream: tormentedradio


macht get MPD_FLUX playlists:

MPD_FLUX playlists:
StreamStreamAwesome Mix Vol 1
StreamDungeons and Dragons
StreamStreamStreamStreamStreamStreamStream

tomster

Danke, hab's grad eingebaut. Die Playlisten werden damit :-separiert erstellt.
Allerdings gibt mir MPD dann als error:

socketclose: Bad file descriptor


und ich kann dann den MPD nicht mehr mit set <name> stop/start stoppen/ starten...

Könnte man das mit der nach "now-playing"-sortierten Playlist auch hinbekommen? WÜrde meiner Meinung nach gut passen, wenn im Dropdown immer der aktuell laufende Stream stehen würde.


nesges

Zitat von: tomster am 15 Mai 2015, 14:37:18
Allerdings gibt mir MPD dann als error:

socketclose: Bad file descriptor

und ich kann dann den MPD nicht mehr mit set <name> stop/start stoppen/ starten...

Gleicher Fehler jetzt auch hier. Mein Code macht ja nicht mehr als ein "get" aufzurufen - kA warum's MPD dabei zerlegt.

tomster

#189
Ich vermute, dass das MPD-Modul nicht sonderlich darauf steht, dass dein Script ihm in's playlists-reading ein :-separiertes Array schreibt.

Vielleicht sollte man ein playlists_sorted anlegen...

--edit--
Hilft auch nix...

setstate

Kann das MPD Modul eigentlich auch die Cover Art URL besorgen?

Das Mopidy-Mopify UI macht das so schön, das könnte ich auch im FHEM gebrauchen, um es im FTUI anzuzeigen.
Per Netzwerkanalyse habe ich gesehen, dass die Cover Images URL in dieser Art geladen werden:  https://i.scdn.co/image/40bcd308765c2b7f5182fa663353042044b4914b

tomster

#191
Meines Wissens noch nicht bislang.
Ist aber ohnehin ein bissl schwieriges Thema, wenn Du mich fragst.
Durch die seeehr unterschiedliche Anwendung von ID3-Informationen bei Webradios ist wohl nur in den wenigsten Fällen ein sinnvolles Ergebnis der Cover-Suche zu erwarten. Bei der Wiedergabe von lokalen Dateien (z.B. eigene MP3-Sammlung) wäre es aus meiner Sicht sinnvoller die Cover-At-Dateien gleich lokal zu speichern; warum sollte man das Bild jedes Mal beim Abspielen eines Songs neu aus dem Netz laden?

LG,
tomster,
der genau weiß, dass wohl nur ein Bruchteil seiner Dateien schreibfehlerfreie ID3-tags hat und höchstens bei 2% ein entsprechendes Album-Art-File hinterlegt ist. ;-)

P.S. Cooles Beispielcover

setstate

Habe ich nur das Problem, oder kann es sein, dass im Eventviewer das Reading 'state' und 'STATE' nicht auftaucht. Wenn ich von einem beliebigen Client ein Play schicke, sieht man zwar alle META-Daten des Songs als Event, aber nicht den eigentlichen Status 'play', 'stop', 'pause'

Ich glaube, das müsste im MPD Modul noch korrigiert werden.
Wir benötigen das unbedingt für zusätzliche FHEM Frontends, die per Longpoll updates erhalten.

Wzut

Zitat von: setstate am 18 Mai 2015, 08:36:41
Ich glaube, das müsste im MPD Modul noch korrigiert werden.
Glauben ist was für die Kirche .. :)
Gerade für dich durchgespielt mit useIdle = 1 , Eventlog bei fhem  und mit mpc auf der Konsole den MPD gestartet und gestoppt :
Events:

2015-05-18 16:05:07 MPD MPD volume: 100
2015-05-18 16:05:07 MPD MPD repeat: 0
2015-05-18 16:05:07 MPD MPD random: 0
2015-05-18 16:05:07 MPD MPD single: 0
2015-05-18 16:05:07 MPD MPD consume: 0
2015-05-18 16:05:07 MPD MPD playlist: 127
2015-05-18 16:05:07 MPD MPD playlistlength: 3
2015-05-18 16:05:07 MPD MPD xfade: 0
2015-05-18 16:05:07 MPD MPD mixrampdb: 0.000000
2015-05-18 16:05:07 MPD MPD mixrampdelay: nan
2015-05-18 16:05:07 MPD MPD play                              <-----  state
2015-05-18 16:05:07 MPD MPD song: 0
2015-05-18 16:05:07 MPD MPD songid: 18
2015-05-18 16:05:07 MPD MPD time: 0:0
2015-05-18 16:05:07 MPD MPD elapsed: 0.000
2015-05-18 16:05:07 MPD MPD bitrate: 0
2015-05-18 16:05:07 MPD MPD audio: 0:?:0
2015-05-18 16:05:07 MPD MPD nextsongid: 19
2015-05-18 16:05:07 MPD MPD file: http://188.94.97.90/rockland.mp3
2015-05-18 16:05:07 MPD MPD name: ROCKLAND RADIO - 107.9 Mainz und Wiesbaden
2015-05-18 16:05:07 MPD MPD pos: 0
2015-05-18 16:05:07 MPD MPD id: 18
2015-05-18 16:05:07 MPD MPD mpd_event: changed: player

2015-05-18 16:05:11 MPD MPD volume: 100
2015-05-18 16:05:11 MPD MPD repeat: 0
2015-05-18 16:05:11 MPD MPD random: 0
2015-05-18 16:05:11 MPD MPD single: 0
2015-05-18 16:05:11 MPD MPD consume: 0
2015-05-18 16:05:11 MPD MPD playlist: 129
2015-05-18 16:05:11 MPD MPD playlistlength: 3
2015-05-18 16:05:11 MPD MPD xfade: 0
2015-05-18 16:05:11 MPD MPD mixrampdb: 0.000000
2015-05-18 16:05:11 MPD MPD mixrampdelay: nan
2015-05-18 16:05:11 MPD MPD song: 0
2015-05-18 16:05:11 MPD MPD songid: 18
2015-05-18 16:05:11 MPD MPD time: 4:0
2015-05-18 16:05:11 MPD MPD elapsed: 4.075
2015-05-18 16:05:11 MPD MPD bitrate: 192
2015-05-18 16:05:11 MPD MPD audio: 44100:24:2
2015-05-18 16:05:11 MPD MPD nextsongid: 19
2015-05-18 16:05:11 MPD MPD file: http://188.94.97.90/rockland.mp3
2015-05-18 16:05:11 MPD MPD name: ROCKLAND RADIO - 107.9 Mainz und Wiesbaden
2015-05-18 16:05:11 MPD MPD pos: 0
2015-05-18 16:05:11 MPD MPD id: 18
2015-05-18 16:05:11 MPD MPD mpd_event: changed: playlist

2015-05-18 16:05:15 MPD MPD volume: 100
2015-05-18 16:05:15 MPD MPD repeat: 0
2015-05-18 16:05:15 MPD MPD random: 0
2015-05-18 16:05:15 MPD MPD single: 0
2015-05-18 16:05:15 MPD MPD consume: 0
2015-05-18 16:05:15 MPD MPD playlist: 129
2015-05-18 16:05:15 MPD MPD playlistlength: 3
2015-05-18 16:05:15 MPD MPD xfade: 0
2015-05-18 16:05:15 MPD MPD mixrampdb: 0.000000
2015-05-18 16:05:15 MPD MPD mixrampdelay: nan
2015-05-18 16:05:15 MPD MPD stop                                               <-----  state
2015-05-18 16:05:15 MPD MPD song: 0
2015-05-18 16:05:15 MPD MPD songid: 18
2015-05-18 16:05:15 MPD MPD nextsongid: 19
2015-05-18 16:05:15 MPD MPD file: http://188.94.97.90/rockland.mp3
2015-05-18 16:05:15 MPD MPD name: ROCKLAND RADIO - 107.9 Mainz und Wiesbaden
2015-05-18 16:05:15 MPD MPD pos: 0
2015-05-18 16:05:15 MPD MPD id: 18
2015-05-18 16:05:15 MPD MPD mpd_event: changed: player

man beachte die beiden Zeilen in denen ich "<-----  state" eingefügt habe.
Oder erwartest du eine Zeile in der Form state: on bzw state: off ? ( das machen fhem Module mit dem Sonderfall state nie :)  )

Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

setstate

Nein, genauso würde ich das erwarten. Ich probiere das gleich dann noch mal aus bei mir. Vllt. habe ich was übersehen. UseIdle habe ich auf 1 gesetzt aber interval nicht geändert. Evtl. alles noch mal durchstarten.