[Modul] Spotify 1.1

@Markus1979 Nein, das ist nicht direkt freigeschaltet. Was würdest du dir denn noch zusätzlich wünschen? Prinzipiell würde ich schöne Ideen lieber für alle implementieren, als da für einzelne Profis Hintertürchen einzubauen.

Hallo Niels,

kann ich absolut nachvollziehen!!

Mir fehlt zum Beispiel meine Bibliothek, eine Liste mit Alben einer bestimmten Band. Liste mit den Tracks eines bestimmten Albums usw.

Grundsätzlich fände ich es super, wenn es eine curl-Funktion geben würde…
Über curl bekommt man die gewünschten Rohdaten, die man sich dann weiter aufarbeiten kann, wenn man will.

Damit hätte man alle Möglichkeiten die die API hergibt, aber man überfrachtet das Modul nicht mit jeder Menge Funktionen die vielleicht nur sehr wenige nutzen.

Viele Grüße
Markus

Hallo zusammen,
kann mir bitte jemand erklären wie ich an die Suchergebnisse von SPO_Search heran komme? oder gibt es eine andere Möglichkeit über das Webfront eine suche nach einem Track durchzuführen und diese dann zu starten vielen Dank.

1 „Gefällt mir“

Ich bekomme in den letzten Tagen vermehrt diese Fehler vom Modul:

05.10.2022, 20:04:44 | TimerPool | Spotify (UpdateTimer):
Notice: Trying to access array offset on value of type bool in C:\ProgramData\Symcon\modules\SymconSpotify\Spotify\module.php on line 518

Notice: Trying to access array offset on value of type bool in C:\ProgramData\Symcon\modules\SymconSpotify\Spotify\module.php on line 532

Notice: Trying to access array offset on value of type bool in C:\ProgramData\Symcon\modules\SymconSpotify\Spotify\module.php on line 534

Notice: Trying to access array offset on value of type null in C:\ProgramData\Symcon\modules\SymconSpotify\Spotify\module.php on line 534

Notice: Trying to access array offset on value of type bool in C:\ProgramData\Symcon\modules\SymconSpotify\Spotify\module.php on line 536

Notice: Trying to access array offset on value of type bool in C:\ProgramData\Symcon\modules\SymconSpotify\Spotify\module.php on line 537

Daneben kommen in letzter Zeit auch wieder vermehrt HTTP 503 Service Unavailable beim Lesen der Devices. Aber beides scheint nicht miteinander zusammenzuhängen. Zumindest treten beide Fehlermeldungen mit zeitlich größeren Abständen auf.

Irgendwie ist und bleibt diese API zickig…

Die Fehlermeldungen können vorkommen, wenn die API instabil ist. Das habe ich aber behoben. Das behebt zwar die Probleme an sich nicht, aber die beschriebenen Meldungen kommen dann nicht mehr.

Ich habe gerade mal ein bisschen im Spotify-Forum zu den 503ern geblättert. Das scheint mit den verwendeten Geräten zusammenzuhängen. Auf was für Geräten verwendest du Spotify? Und kannst du vielleicht per Trial & Error problematische Geräte ermitteln? Hier (Solved: Re: Devices API not showing the .exe player but sh... - The Spotify Community) gibt es beispielsweise Probleme mit der Windows-Anwendung. Mit den Informationen würde ich mich dann sonst mal an Spotify wenden.

Mit dem oben beschriebenen Fix ist eine neue Beta im Module Store. Zusätzlich habe ich jetzt doch die Funktion MakeAPIRequest eingebaut, mit denen ihr selbstständig die Spotify-API abfragen könnt. Teilt gerne, was ihr euch damit schönes baut, vielleicht ziehe ich das ein oder andere ja auch ins Hauptmodul :wink:

Ein Beitrag wurde in ein existierendes Thema verschoben: Ips2apple

Also da muss man vielleicht unterscheiden zwischen Geräten, auf denen ich Spotify installiert und mich dort angemeldet habe:

  • iPhones (iOS)
  • Echo Dots 2
  • FireTV Sticks 4K (Max)
  • Windows-App
  • Browser

Und Geräten, die ich regelmäßig aktiv nutze:

  • Echo Dots 2
  • iPhones (iOS)

Wie so oft kommen die 503-Fehler bei mir aber, wenn Spotify gerade nirgendwo aktiv genutzt wird.
Ansonsten finde ich in den letzten Tagen einige Fehlermeldungen, wo Spotify gerade auf den Echo Dots 2 lief.

Sind denn eher die Geräte relevant, auf denen die Musik abgespielt wird oder ggf. auch die, die zum Steuern von anderen Geräten genutzt werden?

Es sind Geräte relevant, die Spotify „bereitstellen“. Also wenn die Windows App beispielsweise im Hintergrund läuft, könnte sie den Fehler verursachen, auch wenn sie nicht aktiv genutzt wird.

Dann würde ich sagen, dass im Moment nur diese Geräte in Frage kommen:

  • Echo Dot 2
  • iPhone (iOS)

Wie häufig tritt das denn bei dir auf? Kannst du beispielsweise die Echos mal vom Netz nehmen und schauen ob der Fehler immer noch kommt oder müsstest du da eher ein paar Tage warten?

Puh, das ist ganz unterschiedlich. Mal liegen zwischen den Fehlern einige Minuten, dann wieder mehrere Stunden oder Tage.

Ich schaue mal, ob ich das irgendwie eingrenzen kann. Sind recht viele Echos, die ich vom Netz nehmen müsste und wenn die länger Weg sind, gibt’s Stress mit der Familie. :wink:

Gibt es eine Möglichkeit, die Meldungen aus dem Status-Widget per Skript abzufragen? Also nicht nur den Typ, sondern auch den Inhalt? Dann könnte ich mir ne Push-Nachricht senden, wenn der Fehler auftritt. Sonst muss ich ja den ganzen Tag vor der Konsole hängen…

Oder ich muss zum Testen das Modul anpassen, dass ich ne Meldung bekomme. Ist vermutlich einfacher.

Da kommst via UC_GetLastLogMessages($utilControlID, 4); an die Fehlermeldungen des Status-Widget. Ich hoffe du kannst es einschränken :slight_smile: Aber ja, ich verstehe, dass das kompliziert sein kann.

Hallo Niels,

vielen Dank für die SPO_MakeAPIRequest Funktion.
Was ist den mit „Body“ gemeint, was trage ich dort ein?

Viele Grüße
Markus

Hallo Niels,

jetzt funktioniert es… du hast wohl noch einen Fehler im Modul.

Wenn ich im PHP-Script die Funktion einfüge hab ich folgende Parameter

SPO_MakeAPIRequest(28983, "Body", "Methode", "Url");

Richtig laut der Funktion in der Moduldatei sollte es aber wie folgt aussehen

MakeRequest($method, $url, $body = '', $ignoreErrors = false)

Der Body muss quasi an die 3. Position der Parameter

Dann ist mir aufgefallen, dass in der URL das „v1“ entfernt werden sollte… in der Api-Beschreibung
lautet die URL zum Beispiel /v1/me/player/next. Damit es funktioniert muss man das v1 weglassen weil es anscheinend in der Funktion automatisch mitgegeben wird.

So funktioniert es einwandfrei.

SPO_MakeAPIRequest(12345, "POST", "me/player/next", "");

Vielen vielen Dank, jetzt ist das Modul absolut perfekt

MakeAPIRequest und MakeRequest haben leicht unterschiedliche Parameter. MakeRequest ist halt die intern genutzte Funktion, MakeAPIRequest die öffentliche. Dennoch sollte Body der letzte Parameter sein und nicht der zweite. Ich glaube, da hast du die Reihenfolge verdreht. Der Body ist für manche Aufrufe benötigt, beispielsweise Transfer Playback | Spotify for Developers. Wenn der nicht benötigt wird, dann lässt du den String einfach leer.

Und ja, das v1 wird ebenso wie api.spotify.com hinzugefügt, da wir ja nun einmal v1 der API nutzen :slight_smile: Das ist auch so dokumentiert. Du sollst ja nicht das Spotify-Modul missbrauchen um irgendwelche ganz anderen Endpunkte abzufragen.

Hi Niels,

danke für die Rückmeldung !!

Wenn ich im php-Script über „Befehl einfügen“ die Felder ausfülle bekomme eine Fehlermeldung.
Man sieht, dass POST an die Url angehangen wird.

SPO_MakeAPIRequest(28983, "", "POST", "me/player/next");

Warning: file_get_contents(https://api.spotify.com/v1/POST): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
 in /var/lib/symcon/modules/.store/de.symcon.spotify/Spotify/module.php on line 839

wenn ich den „Body“ an die letzte Position setzte funktioniert es einwandfrei

SPO_MakeAPIRequest(28983, "POST", "me/player/next", "");

Viele Grüße
Markus

Da greift das Auslesen der Parameter irgendwie nicht richtig, das schaue ich mir an. Body nach hinten ist auch korrekt.

Ich habe jetzt mal über zwei Monate versucht, die HTTP 503 Fehler einzugrenzen. So richtig gelingt es mir aber nicht. Die kommen weiterhin in schöner Regelmäßigkeit, ohne dass ich irgendwelche Einschränkungen feststellen könnte.

Das einzige was ich sicher sagen kann ist, dass die Fehler häufiger auftreten, wenn die Echo Dots 2 gerade Musik abspielen. Das nur als Ergänzung zu meiner ursprünglichen Frage von Anfang Oktober.

Hallo,

seit paar Tagen kommt oft die Fehlermeldung:

03.01.2023, 09:17:27 | TimerPool            | Spotify (UpdateTimer): 
Warning: file_get_contents(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /var/lib/symcon/modules/.store/de.symcon.spotify/Spotify/module.php on line 839

Warning: file_get_contents(https://api.spotify.com/v1/me/player/devices): failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /var/lib/symcon/modules/.store/de.symcon.spotify/Spotify/module.php on line 839

Fatal error: Uncaught TypeError: json_decode() expects parameter 1 to be string, bool given in /var/lib/symcon/modules/.store/de.symcon.spotify/Spotify/module.php:893
Stack trace:
#0 /var/lib/symcon/modules/.store/de.symcon.spotify/Spotify/module.php(893): json_decode(false, true)
#1 /var/lib/symcon/modules/.store/de.symcon.spotify/Spotify/module.php(513): Spotify->UpdateDevices()
#2 /var/lib/symcon/scripts/__generated.inc.php(10655): Spotify->UpdateVariables()
#3 /-(1): SPO_UpdateVariables(35066)
#4 {main}
  thrown in /var/lib/symcon/modules/.store/de.symcon.spotify/Spotify/module.php on line 893

Gruß

Laut einer kurzen Recherche kommt die Fehlermeldung, wenn der Server nicht erreichbar ist. Ist deine Internetverbindung vielleicht instabil? Oder haben andere den Fehler auch? Dann ist vielleicht bei Spotify irgendwas gerade nicht ganz in Ordnung…

Funktioniert das Modul ansonsten aber?