Spotify-Downloader
- Downloads songs from YouTube in an MP3 format by using Spotify's HTTP link.
- Can also download a song by entering its artist and song name (in case if you don't have the Spotify's HTTP link for some song).
- Automatically applies metadata to the downloaded song which include:
- Title
- Artist
- Album
- Album art
- Lyrics (if found on http://lyrics.wikia.com)
- Album artist
- Genre
- Track number
- Disc number
- Release date
- And more...
- Works straight out of the box and does not require to generate or mess with your API keys.
That's how your music library will look like!
Installation
- This tool supports only Python 3, Python 2 compatibility was dropped because of the way it deals with unicode. If you need to use Python 2 though, check out the (old)
python2
branch. - Note:
play
andlyrics
commands have been deprecated in the current branch since they were not of much use and created unnecessary clutter. You can still get them back by usingold
branch though.
Debian, Ubuntu, Linux & Mac
$ cd
$ git clone https://github.com/ritiek/spotify-downloader
$ cd spotify-downloader
$ pip install -U -r requirements.txt
Important: if you have installed both Python 2 and 3, the
pip
command could invoke an installation for Python 2. To see which Python version pip
refers to, try $ pip -V
. If it turns out pip
is your Python 2 pip, try $ pip3 install -U -r requirements.txt
instead.
You'll also need to install FFmpeg for conversion (use
--avconv
if you'd like to use that instead):
Linux:
$ sudo apt-get install ffmpeg
Mac:
$ brew install ffmpeg --with-libmp3lame --with-libass --with-opus --with-fdk-aac
If it does not install correctly, you may have to build it from source. For more info see https://trac.ffmpeg.org/wiki/CompilationGuide.
Windows
Assuming you have Python 3 (preferably v3.6 or above to stay away from Unicode errors) already installed and in PATH.
- Download and extract the zip file from master branch.
- Download FFmpeg for Windows from here. Copy
ffmpeg.exe
fromffmpeg-xxx-winxx-static\bin\ffmpeg.exe
to PATH (usually C:\Windows\System32) or just place it in the root directory extracted from the above step. - Open
cmd
and type$ pip install -U -r requirements.txt
to install dependencies. The same note aboutpip
as for Debian, Ubuntu, Linux & Mac applies.
Instructions for Downloading Songs
Important: as like with
pip
, there might be no $ python3
command. This is most likely the case when you have only Python 3 but not 2 installed. In this case try the $ python
command instead of $ python3
, but make sure $ python -V
gives you a Python 3.x.x
!- For all available options, run
$ python3 spotdl.py --help
.
usage: spotdl.py [-h]
(-s SONG | -l LIST | -p PLAYLIST | -b ALBUM | -u USERNAME)
[-m] [-nm] [-a] [-f FOLDER] [--overwrite {force,prompt,skip}]
[-i INPUT_EXT] [-o OUTPUT_EXT] [-ff] [-dm] [-d] [-mo] [-ns]
[-ll {INFO,WARNING,ERROR,DEBUG}]
Download and convert songs from Spotify, Youtube etc.
optional arguments:
-h, --help show this help message and exit
-s SONG, --song SONG download song by spotify link or name (default: None)
-l LIST, --list LIST download songs from a file (default: None)
-p PLAYLIST, --playlist PLAYLIST
load songs from playlist URL into <playlist_name>.txt
(default: None)
-b ALBUM, --album ALBUM
load songs from album URL into <album_name>.txt
(default: None)
-u USERNAME, --username USERNAME
load songs from user's playlist into
<playlist_name>.txt (default: None)
-m, --manual choose the song to download manually (default: False)
-nm, --no-metadata do not embed metadata in songs (default: False)
-a, --avconv Use avconv for conversion otherwise set defaults to
ffmpeg (default: False)
-f FOLDER, --folder FOLDER
path to folder where files will be stored in (default:
Music)
--overwrite {force,prompt,skip}
change the overwrite policy (default: prompt)
-i INPUT_EXT, --input-ext INPUT_EXT
prefered input format .m4a or .webm (Opus) (default:
.m4a)
-o OUTPUT_EXT, --output-ext OUTPUT_EXT
prefered output extension .mp3 or .m4a (AAC) (default:
.mp3)
-ff, --file-format File format to save the downloaded song with, each tag
is surrounded by curly braces. Possible formats:
['track_name', 'artist', 'album', 'album_artist',
'genre', 'disc_number', 'duration', 'year',
'original_date', 'track_number', 'total_tracks',
'isrc'] (default: {artist} - {track_name})
-dm, --download-only-metadata
download songs for which metadata is found (default:
False)
-d, --dry-run Show only track title and YouTube URL (default: False)
-mo, --music-videos-only
Search only for music on Youtube (default: False)
-ns, --no-spaces Replace spaces with underscores in file names
(default: False)
-ll {INFO,WARNING,ERROR,DEBUG}, --log-level {INFO,WARNING,ERROR,DEBUG}
set log verbosity (default: INFO)
-c CONFIG_FILE_PATH --config CONFIG_FILE_PATH
Replace with custom config.yml file (default: None)
Download by Name
For example
- We want to download Fade by Alan Walker, simply run
$ python3 spotdl.py --song "alan walker fade"
. - The script will automatically look for the best matching song and download it in the folder
Music/
placed in the root directory of the code base. - It will now convert the song to an mp3 and try to fix meta-tags and album-art by looking up on Spotify.
Download by Spotify Link (Recommended)
For example
- We want to download the same song (i.e: Fade by Alan Walker) but using Spotify Link this time that looks like
https://open.spotify.com/track/2lfPecqFbH8X4lHSpTxt8l
, you can copy it from your Spotify desktop or mobile app by right clicking or long tap on the song and copy HTTP link. - Run
$ python3 spotdl.py --song https://open.spotify.com/track/2lfPecqFbH8X4lHSpTxt8l
, it should download Fade by Alan Walker. - Just like before, it will again convert the song to an mp3 but since we used a Spotify HTTP link, the script is guaranteed to fetch the correct meta-tags and album-art.
Download by File
For example
- We want to download
Fade by Alan Walker
,Sky High by Elektromania
andFire by Elektromania
just using a single command.
Let's suppose, we have the Spotify link for only
Fade by Alan Walker
and Fire by Elektromania
.
No problem!
- Just make a
list.txt
in the same folder as the script and add all the songs you want to download, in our case it is
(if you are on Windows, just edit
list.txt
- i.e C:\Python36\spotify-downloader-master\list.txt
)https://open.spotify.com/track/2lfPecqFbH8X4lHSpTxt8l
elektromania sky high
https://open.spotify.com/track/0fbspWuEdaaT9vfmbAZr1C
- Now pass
--list=list.txt
to the script, i.e$ python3 spotdl.py --list=list.txt
and it will start downloading songs mentioned inlist.txt
. - You can stop downloading songs by hitting
ctrl+c
, the script will automatically resume from the song where you stopped it the next time you want to download the songs present inlist.txt
. - Songs that are already downloaded will prompt you to overwrite or skip. This behavior can be changed by passing
--overwrite {prompt,skip,force}
.
Download by Playlist Link
- You can copy the Spotify URL of the playlist and pass it in
--playlist
option. Note: This method works for public as well as private playlists.
For example
$ python3 spotdl.py --playlist https://open.spotify.com/user/nocopyrightsounds/playlist/7sZbq8QGyMnhKPcLJvCUFD
- The script will load all the tracks from the playlist into
<playlist_name>.txt
- Then you can simply run
$ python3 spotdl.py --list=<playlist_name>.txt
to download all the tracks.
Download by Album Link
- You can copy the Spotify URL of the album and pass it in
--album
option.
For example
$ python3 spotdl.py --album https://open.spotify.com/album/499J8bIsEnU7DSrosFDJJg
- The script will load all the tracks from the album into
<album_name>.txt
- Then you can simply run
$ python3 spotdl.py --list=<album_name>.txt
to download all the tracks.
Download by Username
- You can also load songs using Spotify username if you don't have the playlist URL. (Open profile in Spotify, click on the three little dots below name, "Share", "Copy to clipboard", paste last numbers or text into command-line:
https://open.spotify.com/user/0123456790
) - Try running
python3 spotdl.py -u <your_username>
, it will (only) show all your public playlists (which excludes collaborative and private playlists). - Once you select the one you want to download, the script will load all the tracks from the playlist into
<playlist_name>.txt
. - Run
$ python3 spotdl.py --list=<playlist_name>.txt
to download all the tracks.
Specify the Target Directory
If you don't want to download all the songs to the
Music/
folder relative to the spotdl.py
script, you can use the -f
/--folder
option. E.g. $ python3 spotdl.py -s "adele hello" -f "/home/user/Music/"
. This works with both relative and absolute paths.Config File
At first run, this tool will generate a
config.yml
in root directory of the code base with default options. You can then modify config.yml
to override any default options.
Also note that config options are overridden by command-line arguments.
If you want to use custom
.yml
configuration instead of the default one, you can use -c
/--config
option. E.g. $ python3 spotdl.py -s "adele hello" -c "/home/user/customConfig.yml"
This is one of the great blog you can read this blog spotify error code 3 -itprohelp you will know more about it.
ReplyDeleteI use Allavsoft to download Spotify music to MP3 or FLAC with this step by step guide https://www.allavsoft.com/how-to/spotify-to-mp3.html
ReplyDeleteThis is one of the great blog post on internet you can read my blog here spotify error code 18
ReplyDeleteThis is great blog post you should share some more post with us i would like if you read this Spotify Error Code 17
ReplyDeleteyou have shared such a great blog post. i have read your all the articles you can read my blog how to fix mozilla firefox black screen
ReplyDeleteHere is a DRmare Spotify Downloader. You can get common Spotify files to play on your device anytime. You can view more detail at DRmare Website.
ReplyDeleteHere is a DRmare Spotify Downloader(https://www.drmare.com/spotify-music-converter-for-win/). You can get common Spotify files to play on your device anytime. You can view more detail at DRmare Website(https://www.drmare.com/special/2019-xmas-sales/).
ReplyDeleteThis is one of the great blog post on internet. you should share some more post like this and you can read my blog post here steam error code 105
ReplyDeleteThis is one of the great post on internet you explained it very well you can read my blog post here you will see similar kind of quality here spotify error code 17
ReplyDeleteThis is very helpful blog you can read my blog here skyui error code 5
ReplyDeleteThanks for this usefull article, waiting for this article like this again How to fix Spotify Search not Working
ReplyDeleteThis is one of the great post on internet you can read my blog here: avast ui failed to load
ReplyDeleteThis is one of the great blog post you can read my blog here skype call failed -itprohelps
ReplyDeleteThis is nice article you can read my article to get some quality how to remove avast from gmail
ReplyDeleteThis is great blog post you can read my blog here Fix Windows 10 notifications not working
ReplyDeleteThis is great blog post you have shared with us you can read my blog here dns_probe_finished_no_internet
ReplyDeleteThis is a great blog post you have shared with us you can read my blog here
ReplyDeleteCite google maps
This is a great inspiring article. I am pretty much pleased with your good work.You put really very helpful information and you can read this blog
ReplyDeleteChange shipping address on Amazon
This is great blog you should write some more blogs like this you can read my article here skype call failed
ReplyDeleteAsia 50 productivity tools for startup founders and entrepreneurs
ReplyDelete