This project is a tool to allow users to effortlessy download tracks and playlists fetched from Spotify, complete with metadata and album art.
[!IMPORTANT]
spdl is currently under development, so please expect frequent changes to the way it works.
System Requirements:
version 3.8
or abovepip --version
to check, otherwise instructions to install pip can be found here)Installation:
spdl
directorypip install -r requirements.txt
to install the dependenciesTo download a track or playlist, run the main file using the following command:
python main.py -link <link to your track or playlist>
Optionally the download directory can be specified using the -outpath
flag. If no outpath is provided, downloads default to the current directory.
Example:
python main.py -link "https://open.spotify.com/track/6UVEJw6Ikma86JNK55KPkc?si=78dd2cdb137c4214" -outpath "F:/Songs/"
Note 1: You can paste more than one link one after the other seperated by space to download mutiple tracks at once Note 2: For playlists, by default the program saves the tracks in a folder with the name of the playlist
python main.py -link "https://open.spotify.com/track/6UVEJw6Ikma86JNK55KPkc?si=78dd2cdb137c4214"
python main.py -link "https://open.spotify.com/track/6UVEJw6Ikma86JNK55KPkc?si=78dd2cdb137c4214" -outpath "F:/Songs"
python main.py -link "https://open.spotify.com/track/6UVEJw6Ikma86JNK55KPkc?si=78dd2cdb137c4214" "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M?si=9fab95ad8ab349a7"
python main.py -link "https://open.spotify.com/track/6UVEJw6Ikma86JNK55KPkc?si=78dd2cdb137c4214" "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M?si=9fab95ad8ab349a7" -outpath "F:/Songs
python main.py -link "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M?si=9fab95ad8ab349a7" -outpath "F:/Songs" -folder False
python main.py -sync
python main.py -sync "F:/Songs/sync.json"
The first time you try to run the sync command, the program will ask you for the playlist info and the sync.json will be created automatically. If you wish to manually create a sync.json file or modify the existing one, use the following structure:
[
{
"name": "<Playlist Name 1>",
"link": "<Playlist Link>",
"create_folder": true,
"download_location": "F:/Songs"
},
{
"name": "<Playlist Name 2>",
"link": "<Playlist Link>",
"create_folder": true,
"download_location": "F:/Songs"
}
]
I would greatly appreciate your feedback after using the tool. Your insights helps it improve!
I would not be able to take in feature requests at this point, but I would love to accept contributions/pull requests if anyone is willing to work on any issue.