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
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 https://github.com/swapnilsoni1999/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-dlor You can do manually
git clone https://github.com/SwapnilSoni1999/spotify-dl
cd spotify-dl
npm install
npm linkPS: 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 -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/...."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 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 |
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.comto/etc/hostsif linux orC:\Windows\System32\Drivers\etc\hostsif 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
thanks to icons8 for icons in hero image and all the contributors for PR, suggestions and testing :love:
MIT © Swapnil Soni