Spotify Playlist Robot – Automatische Synchronisation der 1LIVE Plan B Playlist mit Spotify

Inspiriert durch den Artikel „Ferngestreamt – Google Play Music und Spotify per Skript steuern“ in der c’t 19/2016 S. 170 (https://www.heise.de/ct/ausgabe/2016-19-Google-Play-Music-und-Spotify-per-Skript-steuern-3305800.html) habe ich ein kleines Projekt gestartet. Mein erklärtes Ziel war es, die Playlist von 1Live Plan B automatisch in eine Playlist auf Spotify zu verwandeln. Die Zusammenstellung der Titel, welche derzeit im Webchannel 1Live Plan B zu hören sind, findet sich gut aufbereitet unter der folgenden URL: http://www1.wdr.de/radio/1live/on-air/1live-channels/plan-b-channel-playlist-100.html.

Da ich jedoch nach Möglichkeit nicht, wie im Artikel beschrieben, mittels Python  sondern Java auf die Web API von Spotify zugreifen wollte, musste ich zunächst nach einer Alternative suchen. Mit https://github.com/thelinmichael/spotify-web-api-java bin ich dann auch fündig geworden.

Als Erstes musste die Anwendung bei Spotify im eigenen Benutzerkonto registriert werden, wozu die folgende Adresse aufzurufen ist: https://developer.spotify.com/my-applications/. Client Id, Client Secret und Redirect URI sind dann in der SpotifyPlaylistRobot.cfg ebenso zu hinterlegen wie der Benutzername.
Darüber hinaus benötigen wir eine neue Playlist. Nach dem Erstellen kann die benötigte Id z.B. im Webplayer gut eingesehen werden, da diese beim Aufruf der Playlist in der URL erscheint.

Ein kleiner Fallstrick war, dass für die Änderung von Playlisten eines Benutzers der „Client Credentials flow“ nicht ausreicht. Stattdessen musste der komliziertere Weg „Authorization Code Grant“ verwendet werden. Eine Besonderheit dabei ist, dass die Autorisierung vom Spotify Webservice vorgenommen und der benötigte Code dann an die hinterlegte Redirect URL übermittelt wird. Da ich jedoch ein reines Java-Programm ohne Webserver haben wollte,  ist an dieser Stelle ein kleiner Workaround notwendig. Es wird nun einfach in der Kommandozeile die aufzurufende URL ausgegeben und die Redirect-URL abgefragt. D.h. der Benutzer muss die gennante URL mit seinem Browsser aufrufen, sich daraufhin bei Spotify anmelden und die Berechtigungen für die Anwendungen gewähren. Anschließend ist die Redirect-URL wiederum in die Kommandozeile zu kopieren. Das Programm schneidet anschließend automatisch die benötigten Werte aus der URL heraus und setzt sich das Refresh Token. In diesem Schritt werden dann auch die Werte für accessToken und refreshToken in der Konfiguration gesetzt. Glücklicherweise kann das Programm ab dem Zeitpunkt sein Token ohne weitere Benutzereingriffe aktuell halten. Dazu ist lediglich erforderlich, dass jede Stunde das Programm läuft um den Refresh durchzuführen. Dies lässst sich z.B. über einen CronJob realisieren. Falls es dazu kommen sollte, dass ein Login nicht mehr möglich ist, da das Refresh Token bereits abgelaufen ist, müssen lediglich die Werte von accessToken und refreshToken in der Konfiguration gelöscht und der Vorgang mit der manuellen Anmeldung wiederholt werden.

Die kompletten Sourcen des Projektes sind unter https://github.com/michaelwiesing/SpotifyPlaylistRobot veröffentlicht. Es handelt sich  um ein Maven Projekt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert