Skip to main content

Download songs and playlist from Spotify. The tracks are downloaded from YouTube videos and converted as mp3 files.

Install

pip install spotify-onthego

Note that you will need valid Spotify app credentials. If you don’t have a valid client ID/secret pair of keys, you can create a Spotify app here.

Once you have created a Spotify app, you will also have to add a redirect URI for this app (“Add URI”).

After the first run of the CLI tool, the authentication token and credentials will be stored in a local configuration file.

Requirements

If you wish to convert the downloaded files to mp3 format, you will need to install ffmpeg or avconv.

On Debian/Ubuntu:

sudo apt-get install ffmpeg

On Mac OS, just follow the instructions from the official ffmpeg website.

Usage

$ spotify-playlist -h
usage: spotify-playlist [-h] [-i] [-S] [-a {webm,ogg,m4a}] [-C] playlist dst

Download the tracks of a Spotify playlist from YouTube

positional arguments:
  playlist              Name of playlist. E.g: 'Road music'
  dst                   Destination directory

optional arguments:
  -h, --help            show this help message and exit
  -i, --interactive     Interactively select the song to download from
                        Youtube.
  -S, --no-skip         Don't skip files that were already downloaded.
  -a {webm,ogg,m4a}, --audio {webm,ogg,m4a}
                        Preferred audio format to download. By default, the
                        best quality audio format will be downloaded. On some
                        platforms (e.g: Debian Wheezy), the default ffmpeg
                        utility does not support audio conversion from webm,
                        so you should specify a different value here. Note
                        that this audio file will eventually be converted to
                        mp3 (unless you specify --no-convert)
  -C, --no-convert      Don't convert audio files to mp3 format.
$ spotify-mymusic -h
usage: spotify-mymusic [-h] [-l LIMIT] [-i] [-S] [-a {webm,ogg,m4a}] [-C] dst

Download the songs from 'Your Music'

positional arguments:
  dst                   Destination directory

optional arguments:
  -h, --help            show this help message and exit
  -l LIMIT, --limit LIMIT
                        Limit to top N songs
  -i, --interactive     Interactively select the song to download from
                        Youtube.
  -S, --no-skip         Don't skip files that were already downloaded.
  -a {webm,ogg,m4a}, --audio {webm,ogg,m4a}
                        Preferred audio format to download. By default, the
                        best quality audio format will be downloaded. On some
                        platforms (e.g: Debian Wheezy), the default ffmpeg
                        utility does not support audio conversion from webm,
                        so you should specify a different value here. Note
                        that this audio file will eventually be converted to
                        mp3 (unless you specify --no-convert)
  -C, --no-convert      Don't convert audio files to mp3 format.

Download playlist

Download all songs from ‘My Playlist’ and save them as mp3:

spotify-playlist "My Playlist" ./music/myspotifyplaylist/

Create a cronjob to download your Discover Weekly playlist every monday at 7am:

0 7 * * 1 /home/username/venv/bin/spotify-playlist "Discover Weekly" /home/username/music/discoverweekly

Wildcards are supported, too:

spotify-playlist "Mixtape*" ./music/

Download favorite songs

Download your 30 most recent tracks from “My Music”:

spotify-mymusic -l 30 ./music/mytracks/

Interactive mode

By default, spotify-onthego downloads the first match found on Youtube for the search "<song title> <artist name>" (song and artist separated by an empty space). If you want to manually select the Youtube result to download, run in interactive mode with the -i option:

$ spotify-mymusic -i mymusic/
++ Processing Porcupine Tree - Deadwing
[1] Porcupine Tree - DeadWing https://www.youtube.com/watch?v=GMEwM3YHiME
[2] Porcupine Tree - Deadwing https://www.youtube.com/watch?v=-Rwp-yvmcRM
[3] Porcupine Tree - Deadwing [Lyrics on Video] https://www.youtube.com/watch?v=dDepB1mwPhc
[4] Making of Deadwing https://www.youtube.com/watch?v=ZuYjGfaixDM
[5] Porcupine Tree- Mellotron Scratch https://www.youtube.com/watch?v=Ag2zXiiuF5Q
[6] Porcupine Tree - Shesmovedon (Deadwing ver.) https://www.youtube.com/watch?v=OtfJcTBklh8
[7] Porcupine Tree - Shallow (lyrics) https://www.youtube.com/watch?v=7_8UmXv5Xac
[8] Porcupine Tree - Arriving Somewhere But Not Here (lyrics on screen) https://www.youtube.com/watch?v=f2ROFnA4HRA
[9] Porcupine Tree - Deadwing (Lyrics) https://www.youtube.com/watch?v=tMMlEZCaQTY
[10] Deadwing- Porcupine Tree(Drum Cover) https://www.youtube.com/watch?v=Zb5KTnXGiNU
Select song to download (default: 1, next=n):

Of course, interactive mode should not be used in automated cron jobs.

Troubleshooting

In case of 401 error, this may be caused by a previous authorization token that did not have the right scope. Just remove the ~/.local/share/spotify-onthego/spotify.token file and start the command again.

If mp3 generation fails with an error message related to eyed3, check that your installed version of eyed3 is at least 0.8:

$ pip freeze | grep eyeD3
eyeD3==0.8

Development

See something that’s not working for you, or something that you would like to be included? Just open a pull request with your code, or a Github issue where you describe the feature you would like to have.

To setup a development environment, install the dev requirements:

pip install -r requirements/dev.txt

Code should be black-formatted. To automatically format your code, run:

make format

Periodically run code lint and formatting tests with:

make test

License

This project is licensed under the GNU General Public License v3.0.

Metadata

Release files for spotify-onthego 1.0.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spotify-onthego 1.0.11
File Size Uploaded
spotify-onthego-1.0.11.tar.gz 23.4 kB Details

Release files / spotify-onthego-1.0.11.tar.gz

Download URL spotify-onthego-1.0.11.tar.gz
Size 23.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6e566f747e75e1e3bafc988e6fe41d5803ee0d3a01c590f380041975699d59e7
BLAKE2b-256 checksum
How to use checksums
12e66989794ed69e6ca2b810e4b04e8ab7c1dc39878c4ddf7395140f4f84e92c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.12

Release history Release notifications | RSS feed

This release

1.0.11 This release

1 release file

1.0.10

1 release file

1.0.9

1 release file

1.0.8

1 release file

1.0.7

1 release file

1.0.6

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.2

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page