Skip to main content
  1. All Posts/

spotify-dl

Tools JavaScript

Spotify Downloader

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

 

Required

Get FFMPEG
(Node.js 14)[https://nodejs.org/en/download/package-manager/]
Note: if you run into issues related to puppeteer chromium download please try PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true npm install -g 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

Install from npm registry

npm install -g 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

Build docker image:

git clone https://github.com/SwapnilSoni1999/spotify-dl
cd spotify-dl
docker build -t spotify-dl .

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

–sf
–search-format
provide template for youtube api, supports albumName, artistName,itemName

“something {itemName} – {albumName} anyrandomextrastring”

–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

Notes

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

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/...."

Acknowledgements

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

License

MIT © Swapnil Soni