skip to navigation
skip to content

spotify-onthego 1.0.4

Download Spotify songs and playlists (with YouTube)

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

Changelog

  • 2017-08-31 v1.0.4: Introduce interactive mode for Youtube result selection
  • 2017-07-13 v1.0.3:
    • Skip copyrighted videos
    • Fix unicode argument parsing in python 3
  • 2017-07-06: v1.0.0 release! spotify-onthego is now compatible with Python 3+.
  • 2016-07-09: Add playlist name wildcard matching
  • 2016-04-17: - Add album art to the mp3 file ID3 tags (contribution by @xabixab)
  • 2016-03-15: It is now possible to download the tracks from “Your Music > Songs”! See below for details.

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 avconv.

For Debian/Ubuntu installation:

sudo apt-get install libav-tools

For OS X installation you will need to compile from source and you will need to have gcc installed:

mkdir avconv
cd avconv
wget https://libav.org/releases/libav-11.tar.xz
tar xjf libav-11.tar.xz
cd libav-11
./configure --disable-yasm
make install

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 avconv
                        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 avconv
                        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.

License

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

 
File Type Py Version Uploaded on Size
spotify-onthego-1.0.4.tar.gz (md5) Source 2017-08-31 11KB