[Modul] Spotify 1.1

@Slummi Ahh, wenn die Fehler ignoriert werden, bekomme ich bei der Abfrage statt false ein Fehlerobjekt zurück… Damit können die nächsten Schritte dann nicht umgehen. Das fixe ich auch noch. Irgendwann haben wirs :slight_smile:

@richimaint: Das wirkt so, als wenn deine Anmeldung nicht (mehr?) gültig ist. Drücke in der Instanzkonfiguration mal erneut auf „Registrieren“

Da hat sich aber nichts geändert, habe mal neu registriert.

richimaint

@richimaint Wenn deine Zugangsdaten häufiger ohne Anlass ungültig werden, dann schau ich mir das gerne nochmal an.

@Slummi Die nächste Version ist im Store :slight_smile:

2 „Gefällt mir“

Ich glaube jetzt haben wir es. Es kamen seit der Installation der neuen Version gestern Morgen keine Fehlermeldungen mehr und das Modul arbeitet korrekt. :slight_smile:

So heute wieder der Fehler:

04.03.2022, 19:31:13 | TimerPool            | Spotify (UpdateTimer): 
Warning: file_get_contents(https://api.spotify.com/v1/me/player/devices): failed to open stream: HTTP request failed! HTTP/1.0 401 Unauthorized
 in C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php on line 822

Fatal error: Uncaught TypeError: json_decode() expects parameter 1 to be string, bool given in C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php:876
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php(876): json_decode(false, true)
#1 C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php(510): Spotify->UpdateDevices()
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(2031): Spotify->UpdateVariables()
#3 C:\Windows\System32\-(1): SPO_UpdateVariables(50543)
#4 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php on line 876
Abort Processing during Fatal-Error: Uncaught TypeError: json_decode() expects parameter 1 to be string, bool given in C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php:876
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php(876): json_decode(false, true)
#1 C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php(510): Spotify->UpdateDevices()
#2 C:\ProgramData\Symcon\scripts\__generated.inc.php(2031): Spotify->UpdateVariables()
#3 C:\Windows\System32\-(1): SPO_UpdateVariables(50543)
#4 {main}
  thrown
   Error in Script C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php on Line 876

richimaint

Den gleichen Fehler wie @richimaint hatte ich gestern Abend auch beim Versuch über das Modul einen Favoriten abzuspielen. Heute klappt es wieder.

Der Fehler soll laut Dokumentation kommen, wenn euer Token abgelaufen ist… Das sollte das Modul aber eigentlich unter der Haube alles händeln. Kommt der Fehler häufiger oder war das eine einmalige Sache?

Bei mir kam er die letzten Tage häufiger. Ich glaube allerdings, dass die Ursache bei mir eine andere ist bzw. war.

Es scheint so als hätte in einigen Fällen die Geräte-ID nicht gestimmt, auf der der Stream abgespielt werden soll. Ich nehme an, dass die API mit einem HTTP 404 reagiert, wenn es das Gerät nicht gibt. Kann das sein?

Wie verhält sich das Modul denn, wenn man in der Status-Variablen für das Gerät eine ungültige oder gar keine ID angegeben hat und dann etwas abspielen will? Wird das irgendwie geprüft oder abgefangen?

Weiß jemand, ob sich die IDs eines Gerätes mit der Zeit ändern können? Ausgenommen natürlich man löscht es und richtet es neu ein.

Ich habe jetzt mal die falschen IDs in meinen Skripten korrigiert und teste noch mal.

Mir ist da noch ein weiterer Punkt aufgefallen, den man (@Dr.Niels) bei Gelegenheit noch mal verbessern kann. :grin:

Es gibt ja den Befehl SPO_PlayURI(), mit dem man direkt einen bestimmten Song, Album etc. abspielen kann. Das Problem dabei ist, dass Spotifiy vor einiger Zeit den URI etwas in den Hintergrund gerückt hat. Konnte man diesen früher direkt Anzeigen/Kopieen, so ist das heute nur noch auf Umwegen möglich.

Stattdessen setzt Spotify beim Teilen jetzt standardmäßig auf eine URL, die mit https://open.spotify.com beginnt, während der URI mit spotify: beginnt. In der URL steckt zwar auch noch die ID drin, die auch Bestandteil des URI ist, aber wenn man nur die URL zu einem bestimmten Song hat, muss man sich daraus erst den URI zusammenbauen, damit SPO_PlayURI() damit umgehen kann. Ansonsten gibt es bei Nutzung des Befehls ein HTTP 400.

Ich fände es ganz praktisch, wenn der Befehl auch mit der URL (die ja scheinbar neuer Standard bei Spotify ist) umgehen könnte bzw. es für diese einen eigenen Befehl gebe.

Hier noch ein Beispiel für den Unterschied zwischen URI und URL:

URI: spotify:artist:BEISPIEL-ID
URL: https://open.spotify.com/artist/BEISPIEL-ID

Ergänzung vom 08.03.2022:
Heute Abend gab es leider den nächsten Fehler. Zu der Zeit lief keine Wiedergabe über Spotify. Der Fehler kam mehrere Minuten hintereinander beim regelmäßigen (minütlichen) Update.

Außerdem hatte ich heute wieder die Warnung mit dem HTTP 400 Bad Request.
Das liegt tatsächlich an einer falschen Geräte-ID, was wiederum daran liegt, dass sich die Geräte-ID scheinbar von alleine ändert.
Ich muss mir mal überlegen, wie ich damit umgehe, da ich die Geräte-ID in Skripten nutze, um entsprechend umzuschalten. Bisher bin ich davon ausgegangen, dass die ID je Gerät immer fest ist. Entweder muss ich mir die aktuelle ID immer vorher über einen Abruf aller Geräte besorgen oder ich muss die aktuelle ID aus dem Variablenprofil auslesen, da sie dort immer korrekt angepasst wird. Trotzdem etwas dumm, da ich dann die Aktion Schalte Statusvariable nicht nutzen kann. Denn die speichert intern ja die Geräte-ID und wenn die sich ändert, ist die ID ungültig, die Statusvariable wird falsch gesetzt und es kommt zu dem HTTP 400. Man hat’s aber auch nicht leicht… :laughing:

Weil ich mich gerade intensiver mit dem Modul befasse, habe ich mir auch angesehen, warum beim Abspielen eines Podcasts im Modul keinerlei Informationen zu Titel, Autor, Cover etc. verfügbar sind.

Das Problem ist, dass $currentPlay['item']['type'] beim Abspielen eines Podcasts (zumindest bei mir) den Wert NULL hat. Und bei NULL werden alle Variablen „resettet“.
Dafür ist $currentPlay['currently_playing_type'] beim Abspielen gesetzt und hat den Wert episode. Laut API-Beschreibung sind track, episode, ad, unknown gültige Werte.

Was mich etwas wundert ist, dass für $currentPlay['item']['type'] laut API-Beschreibung nur artist ein gültiger Wert ist. Im Modul wird aber neben episode auch track berücksichtigt, was auch funktioniert. Vermutlich ist die Doku diesbezüglich nicht ganz vollständig.

Hallo Zusammen,

ich bekomme beim öffnen die Meldung (siehe unten).

Gestern gings noch …:slight_smile:
Ich musste leider mein Passwort ändern, aber das hatte ich schon öfter gemacht

Konnte Konfigurationsform nicht laden
Warning: file_get_contents(https://oauth.ipmagic.de/access_token/spotify): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
 in C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php on line 668

Fatal error: Uncaught TypeError: json_decode() expects parameter 1 to be string, bool given in C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php:670
Stack trace:
#0 C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php(670): json_decode(false)
#1 C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php(699): Spotify->FetchAccessToken()
#2 C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php(111): Spotify->MakeRequest('GET', 'https://api.spo...')
#3 C:\Windows\System32\-(3): Spotify->GetConfigurationForm()
#4 {main}
  thrown in C:\ProgramData\Symcon\modules\.store\de.symcon.spotify\Spotify\module.php on line 670 (Code: -32603)

Was auch immer da schiefgeht, das Konfigurationsformular sollte sich öffnen lassen und dir ggfs. ermöglichen eine neue Verbindung zu erstellen. Ich bin dran.

So, eine neue Version ist auf dem Betakanal online und sollte das Problem fixen. Du wirst das Modul aber erneut bei Spotify registrieren müssen.

Ich habe auch schon wieder die Fehlermeldungen, obwohl ich mich gesern neu verbunden habe:

richimaint

War der Fehler denn zwischendurch weg und kam wieder? Oder blieb der einfach weiterhin?

Ich würde sagen der war mal weg, ist auch gerade weg.

richimaint

Das klingt so als würde der OAuth bei dir „willkürlich“ ungültig werden, ich habe aber noch keine Idee woran das liegen könnte.

Ich komme leider nicht in ie Konfigrationsform rein. Ich klicke auf den Account und dann kommt direkt der Fehler :slight_smile:

Ich habe jetzt die Instanz gelöscht und neu gemacht. Nun geht es wieder.
Ist nur das archiv weg, ist jetzt auch nicht so schlimm.

Hattest du die Beta-Version aus dem Module Store installiert? Denn diese sollte keine Fehlermeldungen anzeigen, die ein Öffnen der Instanz verhindern. In den nächsten Tagen kommt die aber auch nach Stable