NEWS
[Vorlage] Spotify Skript
-
Hallo Lucky,
super Skript, vielen Dank dafür!
Bis auf die Aktualisierung der Playlists scheint alles zu funzen. Er bekommt irgendwie von Spotify ungefragt die DiscoverWeekly Playlist zusätzlich zu den eigentlichen zurück und hängt sich daran auf. (das vermute ich jedenfalls)
javascript.0 2018-01-02 18:26:38.043 warn Object "javascript.0.Spotify.Playlists.DiscoverWeekly" does not exist
Any Ideas?
Hab schon versucht, ob ich das bei Spotify abstellen kann, aber leider nichts gefunden.
–---
einen Typo hab ich beim Fehlersuchen in Gegend der Zeile 542 gefunden: offest = offset nehme ich an
on({id:'javascript.0.Spotify.Get_User_Playlists'}, function (obj){ if(Application.User_ID!==''){ var query ={ limit:40, --> offset:0 <-- };
-
ich habe gerade bemerkt das immer und bei jeder Playlist vorkommt wenn man die Playlists ein zweites mal abruft, allerdings kommt bei mir dann nur die Warnung, aber es hängt sich nichts auf.. :?
ich mach mich mal dran…! danke für den Hinweis
Wenn man bei offset einen wert größer 0 angibt, werden Playlist die Indexmäßig davor liegen nicht abgerufen
Nachtrag: Habe den Fehler gefunden, es liegt an einem GetObject
-
Hmmm ich bekomme beim Versuch es zu starten folgendes Log:
javascript.0 2018-01-03 18:09:56.804 error at Object. (script.js.common.Spotify.Spotify_Skript:437:36) javascript.0 2018-01-03 18:09:56.803 error Error in callback: TypeError: Cannot read property 'parse' of undefined javascript.0 2018-01-03 18:09:55.625 info script.js.common.Spotify.Spotify_Skript: Error: ENOENT: no such file or directory, open 'SpotifyAccessToken.txt' javascript.0 2018-01-03 18:09:55.620 info script.js.common.Spotify.Spotify_Skript: registered 20 subscriptions and 0 schedules javascript.0 2018-01-03 18:09:55.616 error at ContextifyScript.Script.runInContext (vm.js:35:29) javascript.0 2018-01-03 18:09:55.616 error at script.js.common.Spotify.Spotify_Skript:49:19 javascript.0 2018-01-03 18:09:55.615 error script.js.common.Spotify.Spotify_Skript: Error: Cannot find module '/opt/iobroker/node_modules/iobroker.javascript/node_modules/querystring'
muss ich das querystring noch irgendwo im Adapter eintragen?
Edit: gemacht, nun ging es. Allerdings reagiert Chrome gar nicht auf die generierte URL und FF sagt, dass es invalid ist?
-
ich habe in der letzten Version oben ein paar Änderungen vorgenommen
Allerdings ist die Warnung nicht ganz weg zu bekommen, Sie kommt allerdings nur wenn ein Playlist abgerufen wird die vorher noch nicht angelegt war.
Grund ist, das getObject die Warnung ausgibt wenn nach einem nicht vorhandenen State gesucht wird, das hat aber sonst keine nachteile und für nicht zu Störungen.
Sonstige Änderungen:
-
Anzahl der Tracks in einer Playlist wird jetzt angezeigt
-
Shuffle hinzugefügt
-
-
Edit: gemacht, nun ging es. Allerdings reagiert Chrome gar nicht auf die generierte URL und FF sagt, dass es invalid ist? `
es ist korrekt das im Browser keine Webseite angezeigt wird weil es unter 'example' keine gibt, da ist eine Dummy, es wird aber trotzdem in der Adresszeile eine URL zurück gegeben, diese mußt du kopieren
https://example.com/callback/?code=xxxxxxxxxxxxxxxxxxxxxxxxxx&state=xxxxxxxxxxxxxxxxxxxxx
-
Er sagt bei mir allerdings:
https://accounts.spotify.com/de/authorize/?client_id=XXXXXXXXXXXXXXXXXXXXXXX&response_type=code&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback%2F&state=xxxxxxxxxxxxxxxxxxxxxxx&scope=user-modify-playback-state%20user-read-playback-state%20user-read-currently-playing%20playlist-read-private
und dann steht da eben INVALID_CLIENT: Invalid redirect URI
Ich habe auch nichts zulassen müssen bzw können in Spotify. Daher meine frage
-
der Ablauf sollte sich so gestalten:
1.Spotify Premium notwendig
2. bei Spotify eine Application registrieren
3. der erhaltenen Client ID und Client Secret im Script an die angegeben Stelle kopieren
4. State 'Get_Authorization drücken, es wird eine URL generiert
5. diese URL kopieren und im Browser einfügen, beim ersten mal wird Spotify Fragen ob man den Client zulassen möchte, dies bestätigen ! Nun wird man auf die nicht vorhanden Webseite 'example.com' (manche Browser zeigen möglicherweise einen Fehler)
Achtung: ist die der Client bereits zugelassen, fragt Spotify nicht erneut ! es wird direkt weitergeleitet !
6. die Adresse die jetzt in der Adresszeile des Browsers steht kopieren ( https://example.com/callback/?code=xxx&state=xxx ) und in das State 'Authorization_Return_URI' einfügen
7. Fertig
wichtig ist auch das exakt die gleiche Redirect URI im Skript wie auch bei der Registrierten Application angegeben ist !
-
-
habe ich
-
gemacht
-
gemacht, 800x geprüft beides. Kopiert, manuell, via notepad++…
-
gemacht
-
gemacht --> spotify fragt mich gar nichts. Wo genau sollte diese Frage kommen? in meinem Spotify client? oder auf der homepage wo ich eingeloggt bin?
-
gemacht --> authorized geht auf true
-
irgendwie passiert jetzt aber nichts weiter?
-
-
Wenn authorized auf true geht hat alles geklappt!
Jetzt solltest du deine Geräte und playlisten einlesen können
-
hmm dann hängts woanders… ich klicke und klicke, aber nichts passiert.
noch etwas zu tun?
-
Wird denn dein Benutzer Name im state username angezeigt?
Wo hast du das Skript gespeichert, direkt unter Javascript. 0. spotify ?
-
Nimm mal im Script bei der URL ganz am Ende das / weg.
Hatte ich weiter oben im Thread irgendwo gelesen. Das hat bei mir geholfen.
Gesendet von iPhone mit Tapatalk
-
Wird denn dein Benutzer Name im state username angezeigt?
Wo hast du das Skript gespeichert, direkt unter Javascript. 0. spotify ? `
User ist leer.
Ja, liegt direkt unter javascript.0 Instanz.
Bzw. in einem Ordner "Spotify" unter den "Common" Skripten
Werde mal manne_r's Tipp ausprobieren
Edit: habe im Spotify Dashboard nochmal die example.com/callback Adresse eingegeben und gespeichert (war mir nicht klar, dass man das wohl muss).
Nun kam immerhin einmalig diese Frage, ob ich es zulassen will von Spotify. Allerdings ändert sich danach nichts, die generierte Adresse schiebe ich in die auth_redirect_uri und es geht auf true, bleibt aber alles leer ansonsten
-
Melde Vollzug:
8x exakt das gleiche tun hat irgendwann funktioniert. Danke, nun werde ich mal reichlich testen. Vielen Dank, geile Sache!
Edit: die Devices bleiben leer. Auch nach Klick auf get_devices.
Dachte, dort würde ich meine Sonos Boxen sehen? Ich glaube, so ganz verstehe ich es noch nicht :roll: :oops:
-
also steht in User ID jetzt was drin ? gut
es könnte sein das es evtl eine Blacklist bei Spotify gibt auf die man kommt wenn zuviel Anmeldungen schief gehen
Aktualisiere mal bitte deine States nachdem du die Geräte und Playlist abgerufen hast, States die zur Laufzeit angelegt wurden, werden in Iobroker nicht immer gleich sichtbar
dann solltest du auch deine Sonos Boxen sehen wenn diese Spotify Connect unterstützen
-
ähm.. was meinst du mit states aktualisieren?
Reload der Page? Die Playlists sind alle eingelesen
-
auf der Objekte Seite oben links das Aktualisieren Symbol
die Geräte müssen beim einlesen erreichbar und mit dem Account verbunden sein, also zb. die Android App auf dem Telefon wird erst aufgelistet wenn diese zum Zeitpunkt des einlesen Aktiv war
-
ahhh.. am aktiv sein kann es hängen. Das werde ich dann später zu Hause ausprobieren. danke!
Edit: ok, Handy ging sofort. Danke!
-
Hi zusammen,
frohes neues Jahr! Ich habe nochmal eine Frage. Bin aus dem Urlaub gekommen und das Skript funktioniert nicht mehr. Log zeigt beim Neuladen:
Error: ENOENT: no such file or directory, open 'SpotifyAccessToken.txt'
Was ist in diesem Fall zu unternehmen? Noch mal neu registrieren?
Danke und Grüße
Ben
-
> no such file or directory, open 'SpotifyAccessToken.txt'
bedeutet das die Datei mit den Token nicht vorhanden/gelöscht ist, diese wird automatisch beim erfolgreichen anmelden angelegt.klick nochmal Get_Authorization und geh so vor wie bei der ersten Anmeldung