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.
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.