DownOnSpot
DownOnSpot copied to clipboard
🎧 A Spotify music and playlist downloader working with free Spotify accounts written in Rust
Disclaimer
DownOnSpot was not developed for piracy.
It is meant to be used in compliance with DMCA, Section 1201, for educational, private and fair use.
I am not responsible in any way for the usage of the source code.
Features
- Works with free Spotify accounts (if using free-librespot fork)
- Download 96, 160kbit/s audio with a free, 256 and 320 kbit/s audio with a premium account from Spotify, directly
- Multi-threaded
- Search for tracks
- Download tracks, playlists, albums and artists
- Convert to mp3
- Metadata tagging
- Simple usage over CLI
Building
Clone the repository using git and change to the local repository directory:
git clone https://github.com/oSumAtrIX/DownOnSpot.git
cd DownOnSpot
A private ssh key is needed to use free Spotify accounts.
Follow this answer by DopeGhoti on stackexchange.com on how to set up ssh with the required private key.
A sample ~/.ssh/config
file could look like this:
Host github.com
IdentityFile ~/.ssh/free_librespot_private_key
If you do not want to use free-librespot
(i.e. if you are using a paid Spotify account), then remove the git dependency of free-librespot
.
For that, delete git = "ssh://[email protected]/oSumAtrIX/free-librespot.git"
inside Cargo.toml
.
For paid Spotify accounts, make sure to then add librespot = "0.4.2"
in the Cargo.toml
file instead.
Nightly Rust
is required to build this project. Install it by following rustup.rs instructions.
cargo build --release
If you get a linker error, you might need to download the standard libmp3lame library.
On OS X, it should be enough to just run brew install lame
, provided you have Homebrew installed.
Usage/ Examples
Running DownOnSpot once will create the default configuration file in the same directory as your shell.
$ down_on_spot.exe
Settings could not be loaded, because of the following error: IO: NotFound No such file or directory. (os error 2)...
..but default settings have been created successfully. Edit them and run the program again.
$ down_on_spot.exe
Usage:
down_on_spot.exe (search_term | track_url | album_url | playlist_url | artist_url)
On OS X, the settings.json
file is created globally for the logged in user and is located in ~/.config/down_on_spot/settings.json
.
Apart from your Spotify username and password, you will need to login in to the Spotify developer dashboard and create a new private application. Fill in the client_id
and client_secret
in your settings.json
from your newly created app.
All the other settings should be self-explanatory, conversion from Ogg to MP3 is disabled by default.
Template variables
Following variables are available for path
and filename_template
in the settings.json
:
- %0disc%
- %0track%
- %album%
- %albumArtist%
- %albumArtists%
- %artist%
- %disc%
- %id%
- %title%
- %track%
Additional scripts
Known issues
- Mp3 downloads slow due to libmp3lame
- Downloads fail sometimes due to
channel error