Download audio files from spotify links(Based on: youtube-dl)
Get FFMPEG
git not windows or git for windows
Note: if you run into issues related to puppeteer chromium download please try PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g spotify-dl
A simple commandline utility that allows you to download Spotify Songs, Shows, Episodes, Playlists and Albums from Youtube.
PLEASE NOTE:
- The ability to find a video is dependent on the fact it is hosted on youtube, and even then there is a chance it is still incorrectly matched
- Some items may only be available to spotify premium users, please be sure to provide a username and password when this is the case
npm install -g https://github.com/swapnilsoni1999/spotify-dl
or You can do manually
git clone https://github.com/SwapnilSoni1999/spotify-dl
cd spotify-dl
npm install
npm link
PS: You may need to type termux-setup-storage
first and allow storage permission
sh -c "$(curl -fsSL https://raw.githubusercontent.com/SwapnilSoni1999/spotify-dl/master/tools/termux.sh)"
docker run ghcr.io/swapnilsoni1999/spotify-dl
or Build docker image:
git clone https://github.com/SwapnilSoni1999/spotify-dl
cd spotify-dl
docker build -t spotify-dl .
To download highest quality audio file
spotifydl <spotify track/album/playlist link> ...
Example
spotifydl https://open.spotify.com/track/xyz
Flag | Long Flag | Usage |
---|---|---|
--o | --output | takes valid output path argument |
--es | --extra-search | takes extra search string/term to be used for youtube search |
--oo | --output-only | enforces all downloaded songs in the output dir |
--sf | --search-format | provide template for youtube api, supports albumName , artistName ,itemName |
"something {itemName} - {albumName} anyrandomextrastring" | ||
--of | --output-format | provide template for output of filenames, supports albumName , artistName ,itemName |
3 x _ are used to signify directories | ||
"something___{artistName}{albumName}{itemName}" | ||
--ef | --exclusion-filters | comma separated string of exclusion filters |
each filter will be checked against the description and title if found the link will be ignored | ||
--st | --saved-tracks | download spotify saved tracks |
--ss | --saved-songs | download spotify saved shows |
--sp | --saved-playlists | download spotify saved playlists |
--sa | --saved-albums | download spotify saved albums |
--l | --login | Requests a login in an external window (non tty should use --u and --p) (Docker without -it is non tty) |
--u | --username | spotify username for headless long (Note: you must use --login once to grant access) |
--p | --password | spotify password |
--cf | --cache-file | takes valid output file name path argument |
--dr | --download-report | output a download report of what files failed |
--cof | --cookie-file | takes valid file name path argument to a txt file for youtube cookies |
--v | --version | returns current version |
--h | --help | outputs help text |
--dl | --download-lyrics | enables downloading of lyrics |
--oft | --output-file-type | choose which type of file to be output as |
To use --u and --p (headless login) you must do a --l once first to grant required permissions (playlists, saved songs ect.)
if you receive 'Got a spotify api error WebapiRegularError: An error occurred while communicating with Spotify's Web API
Details: non existing id' you may need to provide auth either use --l
for manual login prompt or --u username --p password
for headless login
If you receive a 429 error please provide a cookies file given the --cof
flag, to generate a cookies file please refer to Chrome or Firefox
docker run -it --user=$(id -u):$(id -g) -v $(pwd):/download --rm spotify-dl <options-to-spotify-dl defaults to --help>
docker run -it --user=$(id -u):$(id -g) -v $(pwd):/download --rm spotify-dl "https://open.spotify.com/...."
thanks to icons8 for icons in hero image and all the contributors for PR, suggestions and testing :love:
MIT © Swapnil Soni