What this fork does:
It prepends a track's playlist index (i.e. playlist location) if you're downloading a playlist, album or your saved songs, so you can put then into a dumb mp3 player without losing playlist order.
Readme text is slightly modified to remove install instructions for dev
and pipx
versions.
The fastest, easiest, and most accurate command-line music downloader
What spotDL does
- Downloads music from YouTube as an MP3 file
- Applies basic metadata gathered from Spotify such as:
- Track Name
- Track Number
- Album
- Album Cover
- Genre
- and more!
Redesigned
spotDL is being redesigned! This means we are currently not accepting new feature requests. You can talk to us on our Discord if there is anything further.
Prerequisites
- Python 3.6.1 or above (added to PATH)
- FFmpeg 4.2 or above (added to PATH)
YouTube Music must be available in your country for spotDL to work. This is because we use YouTube Music to filter search results. You can check if YouTube Music is available in your country, by visiting YouTube Music.
Installation
Installing FFmpeg
- Windows Tutorial
- OSX -
brew install ffmpeg
- Linux -
sudo apt install ffmpeg
Installing spotDL
-
This version:
git clone https://github.com/alpsayin/alpspotify-downloader.git pip install -e alpspotify-downloader
Usage
-
To download a song, run
spotdl [trackUrl]
example:
spotdl https://open.spotify.com/track/0VjIjW4GlUZAMYd2vXMi3b
-
To download an album, run
spotdl [albumUrl]
example:
spotdl https://open.spotify.com/album/4yP0hdKOZPNshxUOjY0cZj
-
To download your user's saved tracks, run
spotdl --user-auth saved
example:
spotdl --user-auth saved
-
To download a playlist, run
spotdl [playlistUrl]
example:
spotdl https://open.spotify.com/playlist/37i9dQZF1E8UXBoz02kGID
-
To download all songs from an artist run
spotdl [artistUrl]
example:
spotdl https://open.spotify.com/artist/1fZAAHNWdSM5gqbi9o5iEA
-
To search for and download a song, run, with quotation marks
spotdl '[songQuery]'
example:
spotdl 'The Weeknd - Blinding Lights'
Note: This is not accurate and often causes errors.
-
To resume a failed/incomplete download, run
spotdl [pathToTrackingFile]
example:
spotdl 'The Weeknd - Blinding Lights.spotdlTrackingFile'
Note:
.spotdlTrackingFile
s are automatically created when a download starts and deleted on completion -
You can queue up multiple download tasks by separating the arguments with spaces
spotdl [songQuery1] [albumUrl] [songQuery2] ... (order does not matter)
example:
spotdl 'The Weeknd - Blinding Lights' https://open.spotify.com/playlist/37i9dQZF1E8UXBoz02kGID ...
Note: spotDL downloads up to 4 songs in parallel, so for a faster experience, download albums and playlist, rather than tracks.
-
To download youtube video with metadata from spotify run:
spotdl "YouTubeURL|SpotifyURL"
example:
spotdl "https://www.youtube.com/watch?v=EO7XnC1YpVo|https://open.spotify.com/track/4fzsfWzRhPawzqhX8Qt9F3"
Note: Urls have to be separated with
|
and quoted properly ex. "YouTubeURL|SpotifyUrl" -
To download songs with different output format run
spotdl [songUrl] --output-format mp3/m4a/flac/opus/ogg/wav
example:
spotdl [songUrl] --output-format opus
-
To use ffmpeg binary that is not on PATH run
spotdl [songUrl] --ffmpeg path/to/your/ffmpeg.exe
example:
spotdl [songUrl] --ffmpeg C:\ffmpeg\bin\ffmpeg.exe
-
To generate .m3u file for each playlist run
spotdl [playlistUrl] --m3u
example:
spotdl https://open.spotify.com/playlist/37i9dQZF1E8UXBoz02kGID --m3u
-
To use youtube instead of youtube music run
spotdl [songUrl] --use-youtube
example:
spotdl https://open.spotify.com/track/4fzsfWzRhPawzqhX8Qt9F3 --use-youtube
-
To change number of threads used when downloading songs run
spotdl [songUrl] --dt [number]
example:
spotdl https://open.spotify.com/track/4fzsfWzRhPawzqhX8Qt9F3 --dt 8
-
To change number of threads used when searching for songs run
spotdl [songUrl] --st [number]
example:
spotdl https://open.spotify.com/track/4fzsfWzRhPawzqhX8Qt9F3 --st 8
-
To ignore your ffmpeg version run
spotdl [songUrl] --ignore-ffmpeg-version
-
To use path template
spotdl [songUrl] --path-template 'template'
example:
spotdl https://open.spotify.com/track/0VjIjW4GlUZAMYd2vXMi3b --path-template '{artist}/{album}/{title} - {artist}.{ext}'
possible values:
- {artist}
- {artists}
- {title}
- {album}
- {ext}
- {playlist}
Contributor Guide
Interested in contributing? Check out our CONTRIBUTING.md to find resources around contributing along with a guide on how to set up a development environment.
Contributors
Authors
- @ritiek for creating and maintaining spotDL for 4 years
- @rocketinventor for figuring out YouTube Music querying
- @MikhailZex for, never mind, truly, never mind...