Downloads songs from a Spotify Playlist that you provide
Project description
spotify_dl
Downloads songs from any Spotify playlist or from your "My Music" collection.
Tell me more!
I wanted an easy way to grab the songs present in my library so I can download it & use it offline(Spotify still hasn't launched here. Y U NO COME?). spotify_to_mp3 worked well but it relied on grooveshark, which unfortunately is no more.
So I wrote this script which mimics that library, but instead of downloading from grooveshark, it provides you with a file of youtube URLs which you can then plug into youtube-dl
How do I get this thing running?
Pre-requisite: You need Python 3+
-
Install using pip
sudo pip3 install spotify_dl
(usepip
if your distro natively provides Python 3) -
Create your Spotify app & fetch the client id and client secret from Spotify Developer Console. These keys then need to be assigned as
SPOTIPY_CLIENT_ID
,SPOTIPY_CLIENT_SECRET
andSPOTIPY_REDIRECT_URI
environment variables.You can set environment variables in Linux like so:
export SPOTIPY_CLIENT_ID='your-spotify-client-id' export SPOTIPY_CLIENT_SECRET='your-spotify-client-secret' export SPOTIPY_REDIRECT_URI='your-app-redirect-url'
Windows users, check for this question for details on how you can set environment variables.
Note the redirect URL can be a valid URL, just ensure it matches with what you have entered in the developer console & in the environment variable above.
-
Create your YouTube API key & fetch the keys from Google Developer Console. Set the key as
YOUTUBE_DEV_KEY
environment variable as mentioned above. -
Run the script using
spotify_dl
. spotify_dl accepts different parameters, for more details runspotify_dl -h
.For most users
spotify_dl -l spotify_playlist_link -o download_directory
should do wherespotify_playlist_link
is a link to Spotify's playlist. You can get it from the 3-dot menu.
If the Spotify playlist link is skipped then it will download songs from your "My Music" collection
download_directory
is the location where the songs must be downloaded to. If you give a.
then it will download to the current directory.
Alternatively,
spotify_dl -p playlist_id -u user_name -o download_directory
will also workplaylist_id
is the id of the playlist where songs need to be downloaded. If this is skipped then it will download songs ftom your "My Music" collectionuser_name
is the user name who created the playlist.download_directory
is the location where the songs must be downloaded to.
-
A first time run will require authentication; you will need to click on the URL prompted to authenticate. Once logged in, paste the URL back in.
-
To retrieve download songs as MP3, you will need to install ffmpeg. If you prefer to skip MP3 conversion, pass
-m
or--skip_mp3
as a parameter when running the script
- Linux users can get them by installing libav-tools by using apt-get (
sudo apt-get install -y libav-tools
) or a package manager which comes with your distro - Windows users can download FFMPEG pre-built binaries from here. Extract the file using 7-zip to a foldrer and add the folder to your PATH environment variable
How do I set defaults?
You can set defaults per user by creating a file at ~/.spotify_dl_settings
. Create a key with value for every argument you want a default for. Example:
{
"output" : "/home/foo/spotify-dl-output"
, "verbose" : "true"
, "skip_mp3" : "t"
}
Credits
- rhnvrm for adding in youtube-dl
- mr-karan for adding save to directory
- shantanugoel for adding in User playlist, skip MP3 conversion and Ability to use custom format string support
- sildur for adding any user playlist support and other fixes
- avinassh for being a Rockstar and not teleporting over to my house to kill me when I innundated him with questions
- doulwyi for adding id3 tagging and ability to parse Spotify URI
- Gowtham for create playlist in download directory
- alvierahman90 for config file support and Spotify playlist URL support
- Bibhas for fixing can only concatenate list (not "str") to list error
- Nikhil Nagaraju for fixing support for playlist url with or without userid #58
Issues, Feedback, Contact details
Feel free to raise any bugs/issues under Github issues. Pull requests are also more than welcome. You can reach me on twitter at @sathyabhat or drop an email sathya@sathyasays.com
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for spotify_dl-3.3.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92c7b12c035cda2073d92d9f3c097107d552e22a04b1fc794866bcd856bad8fc |
|
MD5 | a3bfdf873d8d3ac647a211755c227239 |
|
BLAKE2b-256 | 3c5aea68e5238124be11acac474e8dbfa8bdb5cb41072964cb4ddde8f4654f7c |