Spotify AlbumArt in TabletUI (benoetigt Automagic und AMAD)

Begonnen von hillbicks, 01 November 2016, 16:46:45

Vorheriges Thema - Nächstes Thema

hillbicks

Hi zusammen,

ich habs grade schon drueben im AMAD Post geschrieben, aber ich dachte hier interessiert es vielleicht auch den einen oder anderen.

Ziel war es die AlbumArt des aktuellen Songs in der TabletUI darzustellen. Das ganze geht dabei wie folgt von statten. Bei einem Songwechsel reagiert automagic darauf und holt sich die albumID vom aktuellen Song. Diese AlbumID wird an die URL https://api.spotify.com/v1/albums/ angehangen. Das ist allerdings nur ein Link zu den Albuminformationen, noch nicht der direkte Link zum Bild, daher muessen wir als naechstes per HTTPMOD den eigentlichen Link zum Bild aus dieser URL extrahieren und speichern. Da sich die URL bei jedem Bild aendert, muessen wir auch die Definition fuer HTTPMOD aendern. Mit einer entsprechenden Regex im HTTPMOD holen wir uns den Link zur URL raus. Als letztes muessen wir noch einen DOIF bauen der bei einer Aenderung der HTTPMOD Instanz ein reread auf diesen ausfuehrt. Anschliessend ist die URL zum wirklichen AlbumArt als reading im HTTPMOD verfuegbar und kann in der TabletUI eingebunden werden.

Ich bin mir sicher das man das ganze noch eleganter loesen kann, aber das funktioniert bei mir grade. Verbesserungsvorschlaege sind natuerlich willkommen!

1) Einen Flow in automagic anlegen. Trigger ist General Broadcast mit Action com.spotify.music.metadatachanged. Access Intent Extras: albumid = "getString("albumId")
Als Action bitte ein entsprechendes Kommando um die Variable {albumid} in den dummy DUMMY_spotify_albumid zu schreiben, hier gibt es verschiedene Wege

2) Dummy in fhem anlegen DUMMY_spotify_albumid mit einem userreading
albumid { my $albumval = (split ':',ReadingsVal("DUMMY_spotify_albumid","state",0))[2]; $albumval = "https://api.spotify.com/v1/albums/".$albumval; fhem "modify HTTPMOD_spotify_album_art $albumval"}
Damit aendern

3) HTTPMOD Instanz anlegen HTTPMOD_spotify_album_art
attr HTTPMOD_spotify_album_art reading01Name album_art
attr HTTPMOD_spotify_album_art reading01Regex "height" : 640,\n.+"url".:."(.*?)"


4) DOIF Instanz fuer den reread des HTTPMOD
([HTTPMOD_spotify_album_art])(set HTTPMOD_spotify_album_art reread)

5) Einbinden der AlbumArt in die TabletUI
<div data-type="image"                                                                                                                                                                                                           
     data-size="50%"                                                                                                                                                                                                             
     data-device="HTTPMOD_spotify_album_art"                                                                                                                                                                                     
     data-get="album_art"                                                                                                                                                                                                         
</div>




Hier kann man noch nachlesen wie man mit Hilfe von AMAD und fhem eine bestimmte Spotify Playliste laedt und diese ueber Spotify Connect abspielt.

https://forum.fhem.de/index.php/topic,50108.msg506395.html#msg506395

Fragen oder Anmerkungen immer gerne genommen.

setstate

Spotify Cover hatte ich hier auch schon mal zum Thema

https://forum.fhem.de/index.php/topic,53863.0.html

Das (beliebige) Playerdevice hat an Notify auf das Title Reading und triggert eine 99er function

call_mpd1_getcover()

Diese füllt asynchron (im Hintergrund) das Userreading zum Cover, welches im FTUI mit einem Image Widget angezeigt wird.
Erscheint mir einfacher, besonders, weil es keine zusätzliche Client Apps braucht.


hillbicks

So gerne ich mopidy mit mopify benutzen wuerde, solange es dort keine Moeglichkeit gibt den Client per Spotify Connect an meinen Receiver zu uebergeben, bin ich noch auf die Android App angewiesen.

Ich hatte alternativ mal probiert den Raspberry PI direkt per HDMI anzuschliessen, aber da war die Soundqualitaet ziemlich unterirdisch. So wie ich das sehe hat sich da auch noch nix getan was einen "freien" spotify connect client angeht.

Amenophis86

Danke für die Zusammenfassung, schaue ich mir mal an.

Zitat von: hillbicks am 01 November 2016, 17:39:38
So gerne ich mopidy mit mopify benutzen wuerde, solange es dort keine Moeglichkeit gibt den Client per Spotify Connect an meinen Receiver zu uebergeben, bin ich noch auf die Android App angewiesen.

Ich hatte alternativ mal probiert den Raspberry PI direkt per HDMI anzuschliessen, aber da war die Soundqualitaet ziemlich unterirdisch. So wie ich das sehe hat sich da auch noch nix getan was einen "freien" spotify connect client angeht.
Wenn ich dich richtig verstanden habe, dann schau dir mal AirAudio App an. Damit sende ich das Audiosignal von meinem Tablet an meinen Receiver
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

hillbicks

Also im Moment kann ich das schon machen, Spotify hat ja die Connect Funktion die mein Receiver (Pioneer VSX 924) unterstuetzt. Ich starte damit also die Spotify App auf dem Telefon und waehle dann das Geraet aus auf dem ich abspielen will. Der Receiver spielt dann direkt von Spotify ab, es ist kein Streaming vom Telefon zum Receiver.

Ich gucke mir grade noch eine Loesung mit einem DAC board fuer Raspberry PI an, da soll die Soundqualitaet entsprechend gut sein und die Bedienung erfolgt per MPD. Das waere eigentlich ideal.

Aber danke fuer den Tipp!

setstate

Beim Raspberry reicht mir auch die Build-In Soundcard, aber wichtig ist beim Mopidy die Spotify-Streamrate auf 320 in der Config zu setzen

hillbicks

Ich habs grade mal installiert und Deine Umsetzung gleich mal angesehen, gefaellt mir wirklich sehr gut.

Zwei Sachen die mir aufgefallen sind.

1) Werden die Cover in der medialist erst angezeigt wenn der entsprechende Track einmal abgespielt wurde, korrekt?
2) Die medialist ist zum scrollen etwas muehselig finde ich, koennte man den Scrollbalken etwas breiter machen?

Mir gefaellt die Loesung eigentlich schon ziemlich gut hier, allerdings ist das so natuerlich noch recht statisch finde ich. Grade das "stoebern" in der Spotify app ist schon sehr praktisch muss ich sagen.

Ich muss mal schauen ob man nicht mopify einfach als Unterseite in der Tablet UI einbinden kann, das faende ich ja noch am besten

https://github.com/dirkgroenen/mopidy-mopify#screenshots

setstate

In der Spotify App ist die Suche und das Browsen schon sehr komfortabel. Aber leider kann mein Tablet kein Websockets, weshalb mir Mopify auch nix nützt. Zur Zeit suche ich in der Original App und lege Playlists an, die ich im FTUI nur auswähle. Ich will aber noch eine Suche einbauen, spotify biete gute webservices dafür. Die gefundene Album-ID schickt man dann direkt an MPD (Mopidy)