Download Spotify playlists inklusive Albumart und Tags

Gegenüber dem ersten Ansatz funktioniert diese Lösung autark, ohne einem Drittanbieter für eine kurze Zeit Vollzugriff auf youTube zu überlassen. Eine Shell und Python reichen

Diese kleine Stimme in mir, welche mit Unbehagen den Zugriff auf eines meiner Konten von einem Drittanbieter nicht zulassen möchte. Es ist nur  temporär, möchte man sagen, aber ein Vollzugriff reicht, auch wenn er nur kurz ist.

Junge Frau mit Kopfhörer und Smartphone genießt Musik
CC0 Creative Commons Pixabay by kaboompics

Der Blogpost Herunterladen einer Playliste aus Spotify als MP3 wurmte mich innerlich doch, nicht wenig. Ein Grund war das temporäre Freigeben mit Schreibberechtigung auf youTube. Es war einfach zu umständlich. Ich möchte die Möglichkeit haben es mit einem Script zu nutzen. Automatisierung ist das Stichwort.

Nach einiger Suche fand ich spotify-downloader auf Github. Spotify-downloader lädt nicht nur die gewünschten Daten ohne Umwege in der Kommandozeile herunter, es versieht sich auch noch mit Tags und Albumart.

Installation spotify-downloader

[ChristianGrube:~] $ pip3 install --user spotdl
[ChristianGrube:~] $ sudo dnf install ffmpeg

Konfiguration spotify-downloader

Um die Konfigurationsdatei von spotify-downloader in dem Verzeichnis ~/.config/spotdl/config.yml zu erstellen, genügt ein erster Aufruf ohne Parameter.

[ChristianGrube:~] $ spotdl 
INFO: Writing default configuration to /home/ChristianGrube/.config/spotdl/config.yml:
INFO: avconv: false
INFO: download-only-metadata: false
INFO: dry-run: false
INFO: file-format: '{artist} - {track_name}'
INFO: folder: /home/ChristianGrube/
INFO: input-ext: .m4a
INFO: log-level: INFO
INFO: manual: false
INFO: music-videos-only: false
INFO: no-metadata: false
INFO: no-spaces: false
INFO: output-ext: .mp3
INFO: overwrite: prompt
INFO: search-format: '{artist} - {track_name} lyrics'
INFO: trim-silence: false
INFO: youtube-api-key: null
INFO: Please note that command line arguments have higher priority than their equivalents in the configuration file
usage: spotdl [-h]
              (-s SONG | -l LIST | -p PLAYLIST | -b ALBUM | -u USERNAME | -V)
              [-m] [-nm] [-a] [-f FOLDER] [--overwrite {skip,force,prompt}]
              [-i {.webm,.m4a}] [-o OUTPUT_EXT] [-ff FILE_FORMAT]
              [--trim-silence] [-sf SEARCH_FORMAT] [-dm] [-d] [-mo] [-ns]
              [-ll {INFO,WARNING,ERROR,DEBUG}] [-c CONFIG]
spotdl: error: one of the arguments -s/--song -l/--list -p/--playlist -b/--album -u/--username -V/--version is required

Erweiterte Konfiguration

Ich habe mich entschlossen einen eigenen API-Schlüssel für youTube zu erstellen und diesen in die Konfigurationsdatei einzutragen.
Dies geschieht über die Seite APIs&Dienste bei Google.

Auch habe ich hier den Speicherort von meinem Heimatverzeichnis in ein temporäres geändert. Leider hatte die Option, welche Leerzeichen in der Datei unterbindet ein Fehler. Hier reicht ein Einzeiler im späteren Verzeichnis der MP3s.

find $1 -name "* *" | while read a ; do mv "${a}" "${a//\ /_}" ; done

Ich habe mir in Spotify zum Test eine Playlist namens Herbstgefühle ausgesucht. Red Hot Chilli Peppers, The Verve, Oasis etc.
URL: https://open.spotify.com/playlist/37i9dQZF1DWZESE3fHLhmD

[ChristianGrube:~/tmp] $ spotdl --playlist https://open.spotify.com/playlist/37i9dQZF1DWZESE3fHLhmD
INFO: Writing 75 tracks to herbstgefühle.txt

[ChristianGrube:~/tmp] $ spotdl --list=./herbstgefühle.txt
INFO: Preparing to download 75 songs

INFO: 1. SAARLOOS - Changes (http://www.youtube.com/watch?v=5IZ5EIZAS28)
  3,519,226 Bytes [100.00%] received. Rate: [7517 KB/s].  ETA: [0 secs]    
INFO: Converting SAARLOOS - Changes.m4a to mp3
INFO: Applying metadata

INFO: 2. Tom Odell - Half As Good As You (Audio) ft. Alice Merton (http://www.youtube.com/watch?v=40c27PaC-Ow)
  3,353,384 Bytes [100.00%] received. Rate: [7830 KB/s].  ETA: [0 secs]    
INFO: Converting Tom Odell - Half As Good As You (feat Alice Merton).m4a to mp3
INFO: Applying metadata

Hier sind erweiterte Parameter und Einstellungen möglich. Hierzu gibt die Webseite und der Paramter –help Auskunft.

Rechtliches

Ich setze voraus, dass ein Account bei Spotify im Besitz ist, auch wenn dieser nicht für spotify-downloader gebraucht wird. Ich selbst gehe davon aus, dass der Download ohne diesen Account ein unrechtliches Aneignen von Fremdmaterial ist. Und dazu fordere ich den Leser nicht auf.