Skip to content

phyzical/spotify-dl

 
 

Repository files navigation

NOTE: >Your application is blocked from accessing the Web API since you do not have a Spotify Premium subscription. Upgrade to Spotify Premium to access the Web API and unlock additional features for your app.

At this time Spotify have locked down free accounts further to use the spotify side of things until someone with a premium account can create an app to share, you will need to create your own and provide the appKey, with the redirect uri of https://some-random-host.com:7654/callback

NOTE: Atm youtube has also locked things down and still trying to find a flow that is now compatible for downloads

Spotify Downloader



Download audio files from spotify links(Based on: youtube-dl)

 

Required

Get FFMPEG

Node.js 24

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 https://github.com/swapnilsoni1999/spotify-dl

spotifydl

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

Installation

NPM

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

Android (Termux)

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

docker run -it --user=$(id -u):$(id -g) -v $(pwd):/download --rm ghcr.io/swapnilsoni1999/spotify-dl <options-to-spotify-dl defaults to --help>
docker run -it --user=$(id -u):$(id -g) -v $(pwd):/download --rm ghcr.io/swapnilsoni1999/spotify-dl "https://open.spotify.com/...."

or Build docker image:

git clone https://github.com/SwapnilSoni1999/spotify-dl
cd spotify-dl
docker build -t spotify-dl .
docker run -it --user=$(id -u):$(id -g) -v $(pwd):/download --rm spotify-dl "https://open.spotify.com/...."

Usage

To download highest quality audio file

spotifydl <spotify track/album/playlist link> ...

 

Example

spotifydl https://open.spotify.com/track/xyz

Options

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 f
--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)
--ak --app-key provide app credentials in format client-id:client-secret
--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

Notes

To use --u and --p (headless login) you must do a --l once first to grant required permissions (playlists, saved songs ect.)

  • you now need to add 127.0.0.1 some-random-host.com to /etc/hosts if linux or C:\Windows\System32\Drivers\etc\hosts if windows

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

Acknowledgements

thanks to icons8 for icons in hero image and all the contributors for PR, suggestions and testing :love:

 

License

MIT © Swapnil Soni

About

Spotify Downloader and alternative of Spotdl(python) tool made in NodeJS based on youtube-dl

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • JavaScript 98.1%
  • Shell 1.3%
  • Dockerfile 0.6%