User Tools

Site Tools


linux:spotify-ripper

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
linux:spotify-ripper [2016/09/04 12:44] – created saschalinux:spotify-ripper [2019/04/30 16:54] (current) – libspotify eingestellt sascha
Line 1: Line 1:
 ====== spotify-ripper ====== ====== spotify-ripper ======
  
-[[https://github.com/jrnewell/spotify-ripper|spotify-ripper]] ist ein Skript für die Kommandozeile, das unter Verwendung von [[https://github.com/mopidy/pyspotify|pyspotify]] Lieder von Spotify anhand ihrer Spotify URIs herunterlädt und in Audiodateien mitsamt ID3-Tags sowie Cover abspeichert. Dabei unterstützt es diverse Audio-Codecs wie MP3, FLAC, Ogg Vorbis, Opus, AAC und mehr.+[[https://git.sash.pw/sascha/spotify-ripper|spotify-ripper]] ist ein Skript für die Kommandozeile, das unter Verwendung von [[https://github.com/mopidy/pyspotify|pyspotify]] Lieder von Spotify anhand ihrer Spotify URIs herunterlädt und in Audiodateien mitsamt ID3-Tags sowie Cover abspeichert. Dabei unterstützt es diverse Audio-Codecs wie MP3, FLAC, Ogg Vorbis, Opus, AAC und mehr.
  
-Für die Kommunikation mit Spotify selbst wird auf [[https://developer.spotify.com/docs/libspotify/12.1.51/|libspotify]] zurückgegriffen, welche allerdings seit Mai 2015 nicht mehr offiziell von Spotify unterstützt und aktiv weiterentwickelt wird. Da ''libspotify'' seit 2009 in vielen Open Source-Projekten und kommerziellen Produkten zum Einsatz kam sowie selbst in Autos Verwendung fand, ist es nicht unwahrscheinlich, dass aufgrund der großen Verbreitung ''libspotify'' noch eine Weile funktionieren wird.+Für die Kommunikation mit Spotify selbst wird auf [[https://web.archive.org/web/20160831151528/https://developer.spotify.com/docs/libspotify/12.1.51/|libspotify]] zurückgegriffen, welche allerdings seit Mai 2015 nicht mehr offiziell von Spotify unterstützt und aktiv weiterentwickelt wird. Mittlerweile wurde ''libspotify'' allerdings von den Entwicklerseiten von Spotify entfernt und es ist nur noch Zugriff über eine eingeschränkte [[https://developer.spotify.com/documentation/web-api/|Web-API]] möglich, was zu einigen Einschränkungen im Vergleich zum bisherigen Funktionsumfang führt. FIXME Einschränkungen / Änderungen in Bezug auf spotify-ripper?
  
  
 ===== Installation ===== ===== Installation =====
  
-Für die Verwendung des Skripts selbst benötigen wir einen App-Key für Entwickler, wozu ein Premium-Account nötig ist. Dazu muss man sich mit seinem Account auf https://devaccount.spotify.com/my-account/keys/ einloggen und einen Key beantragen. Für Name und Beschreibung der App kann irgendwas eingetragen werden, der erste Key wird automatisiert ausgestellt. Von dort können wir dann den ''spotify_appkey.key'' herunterladen, der für die Kommunikation über ''libspotify'' benötigt wird. Die Key-Datei speichern wir am besten im Verzeichnis ''~/.spotify-ripper'' ab, welches standardmäßig für die Konfiguration und andere Daten verwendet wird. Alternativ kann auch später die ''-k'', bzw. ''%%--key%%'' Option für einen individuellen Pfad zur Key-Datei verwendet werden.+Für die Verwendung des Skripts selbst benötigen wir einen App-Key für Entwickler, wozu ein Premium-Account nötig ist. Dazu muss man sich mit seinem Account auf https://devaccount.spotify.com/my-account/keys/ einloggen und einen Key beantragen. Für Name und Beschreibung der App kann irgendwas eingetragen werden, der erste Key wird automatisiert ausgestellt. Von dort können wir dann den ''spotify_appkey.key'' herunterladen (Binary auswählen), der für die Kommunikation über ''libspotify'' benötigt wird. Die Key-Datei speichern wir am besten im Verzeichnis ''~/.spotify-ripper'' ab, welches standardmäßig für die Konfiguration und andere Daten verwendet wird. Alternativ kann auch später die ''-k'', bzw. ''%%--key%%'' Option für einen individuellen Pfad zur Key-Datei verwendet werden.
  
 Abhängigkeiten des Pakets sind neben Python sowie den Python-Modulen, die mittels ''pip'' automatisch mitinstalliert werden, der Encoder für MP3 ''[[http://lame.sourceforge.net/|lame]]'' sowie optional für andere Codecs zum Beispiel: Abhängigkeiten des Pakets sind neben Python sowie den Python-Modulen, die mittels ''pip'' automatisch mitinstalliert werden, der Encoder für MP3 ''[[http://lame.sourceforge.net/|lame]]'' sowie optional für andere Codecs zum Beispiel:
Line 24: Line 24:
 Damit Python die Bibliothek später findet, fügen wir deren Pfad noch in der ''.bashrc'' ein: Damit Python die Bibliothek später findet, fügen wir deren Pfad noch in der ''.bashrc'' ein:
   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib   export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
 +Dies ist notwendig, da ''libspotify'' unter  ''/usr/local/lib'' installiert wird. Dieser Pfad befindet sich in ''sys.path'', allerdings sucht Python dort nur nach Python-Modulen selbst. Dynamisch gelinkte Bibliotheken wie ''libspotify'' werden allerdings nur in Verzeichnissen in ''LD_LIBRARY_PATH'' gesucht.
  
 ''spotify-ripper'' selbst installieren wir mit ''pip'': ''spotify-ripper'' selbst installieren wir mit ''pip'':
Line 36: Line 37:
  
 Für eine komplette Playlist wird entsprechend die Spotif URI zu der Playlist benötigt: Für eine komplette Playlist wird entsprechend die Spotif URI zu der Playlist benötigt:
-  spotify-ripper -l -f "{playlist_owner}/{playlist_name}/{idx} {artist} - {track_name}.{ext}" --opus -q 128 spotify:user:<username>:playlist:4vkGNcsS8lRXj4q945NIA4 +  spotify-ripper -l -f "{playlist_owner}/{playlist_name}/{idx} {artist} - {track_name}.{ext}" --opus -q 128 spotify:user:username:playlist:4vkGNcsS8lRXj4q945NIA4 
-Dabei muss entsprechend ''<username>'' durch den Benutzernamen ersetzt werden. In diesem Fall wird mit ''-l'' der zuletzt eingeloggte Benutzer verwendet, somit ist auch keine erneute Passworteingabe mehr nötig. Ein eventuell definiertes Format in der ''[[spotify-ripper#konfiguration|config.ini]]'' wird durch die Angabe von ''-f'' bzw. ''%%--format%%'' überschrieben. In diesem Fall wird zum Kodieren Opus mit einer Bitrate von 128 kbps verwendet. Für die Verwendung auf z. B. Smartphones oder anderer weniger leistungsfähiger Audio-Hardware reicht bei Opus auch durchaus eine Datenrate von 96 kbps um Platz zu sparen.+In diesem Fall wird mit ''-l'' der zuletzt eingeloggte Benutzer verwendet, somit ist auch keine erneute Passworteingabe mehr nötig. Ein eventuell definiertes Format in der ''[[spotify-ripper#konfiguration|config.ini]]'' wird durch die Angabe von ''-f'' bzw. ''%%--format%%'' überschrieben. In diesem Fall wird zum Kodieren Opus mit einer Bitrate von 128 kbps verwendet. Für die Verwendung auf z. B. Smartphones oder anderer weniger leistungsfähiger Audio-Hardware reicht bei Opus auch durchaus eine Datenrate von 96 kbps für eine durchaus gute Qualität aus, um Platz zu sparen.
  
 Es können auch mehrere Spotify URIs in einer Datei gespeichert werden, die dann von ''spotify-ripper'' abgearbeitet wird: Es können auch mehrere Spotify URIs in einer Datei gespeichert werden, die dann von ''spotify-ripper'' abgearbeitet wird:
-  spotify-ripper -u user list_of_uris.txt+  spotify-ripper -u <userlist_of_uris.txt
  
 Zudem ist es möglich, beispielsweise die Charts von Spotify zu rippen: Zudem ist es möglich, beispielsweise die Charts von Spotify zu rippen:
   spotify-ripper -l spotify:charts:regional:global:weekly:latest   spotify-ripper -l spotify:charts:regional:global:weekly:latest
  
-Weitere Möglichkeiten zur Verwendung können auf der [[https://github.com/jrnewell/spotify-ripper#usage|GitHub-Seite des Projekts]] eingesehen werden.+Weitere Möglichkeiten zur Verwendung können auf der [[https://git.sash.pw/sascha/spotify-ripper#usage|Seite des Projekts]] eingesehen werden.
  
  
Line 62: Line 63:
 </code> </code>
  
-Einstellungen müssen nach dem ''[main]''-Block folgen. Wird später mit ''-f'' oder ''%%--format%%'' ein anderes [[https://github.com/jrnewell/spotify-ripper#format-string-variables|Format]] angegeben, überschreibt dies die Werte der Konfiguration. ''last'' verwendet standardmäßig den zuletzt verwendeten Benutzer, wodurch ''spotify-ripper <Spotify-URI>'' bereits ausreicht, um einen Download zu starten. Weitere verwendete Optionen sind:+Einstellungen müssen nach dem ''[main]''-Block folgen. Wird später mit ''-f'' oder ''%%--format%%'' ein anderes [[https://git.sash.pw/sascha/spotify-ripper#format-string-variables|Format]] angegeben, überschreibt dies die Werte der Konfiguration. ''last'' verwendet standardmäßig den zuletzt verwendeten Benutzer, wodurch ''spotify-ripper <Spotify-URI>'' bereits ausreicht, um einen Download zu starten. Weitere verwendete Optionen sind:
   * Versuchen, größere Cover zu verwenden, sofern möglich   * Versuchen, größere Cover zu verwenden, sofern möglich
   * Die Lautstärke der einzelnen Lieder zu normalisieren   * Die Lautstärke der einzelnen Lieder zu normalisieren
Line 73: Line 74:
 Um zu einer neuen Version zu upgraden, verwenden wir wieder ''pip'': Um zu einer neuen Version zu upgraden, verwenden wir wieder ''pip'':
   $ sudo pip install --upgrade spotify-ripper   $ sudo pip install --upgrade spotify-ripper
 +
 +{{tag>linux spotify rip audio python}}
linux/spotify-ripper.1472993076.txt.gz · Last modified: by sascha