No description
Find a file
2023-11-26 02:17:37 +01:00
.cargo Fix download of non search inputs & .cargo config 2021-11-27 09:11:15 +01:00
.github ci: Improve performance and semantics 2023-11-26 01:58:13 +01:00
assets fix: Use forked master branch of librespot to fix downloads 2023-11-26 01:30:24 +01:00
src chore: Lint code 2023-11-26 01:58:00 +01:00
.gitignore chore: Add notice for free users (#48) 2023-11-25 23:41:23 +01:00
build.rs Add initial files 2021-10-11 02:12:22 +02:00
Cargo.lock fix: Use forked master branch of librespot to fix downloads 2023-11-26 01:30:24 +01:00
Cargo.toml fix: Use forked master branch of librespot to fix downloads 2023-11-26 01:30:24 +01:00
LICENSE Add initial files 2021-10-11 02:12:22 +02:00
mp3lame.lib Add initial files 2021-10-11 02:12:22 +02:00
README.md docs: Simplify README 2023-11-26 02:17:37 +01:00
rustfmt.toml format code 2022-01-27 17:08:47 +01:00

DownOnSpot

A Spotify downloader written in Rust

drawing

Build project GitHub license GitHub issues GitHub forks GitHub stars Stability: Experimental

Disclaimer

Note

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
  • 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

Note

Free Spotify users can can't exceed 160kbit/s. Change the quality setting in the settings.json file to Q160 or lower. If you want to download 256 or 320kbit/s, you need to use a premium account.

Building

  1. Clone the repository using git and change to the local repository directory:

    git clone https://github.com/oSumAtrIX/DownOnSpot.git
    cd DownOnSpot
    
  2. Build

    cargo build --release
    

Warning

You need this private SSH key to clone a dependency of DownOnSpot in order to use it with a free Spotify account. Follow this answer by DopeGhoti on stackexchange.com to set up SSH with the 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), replace git = "ssh://git@github.com/oSumAtrIX/free-librespot.git" with librespot = "0.4.2" inside the Cargo.toml file.

Warning

If you get a linker error, you might be missing the libmp3lame library.
On Mac OS, run brew install lame, provided you have Homebrew installed.

Usage/ Examples

  1. Create a new application on the Spotify developer dashboard

  2. Run DownOnSpot

    $ ./down_on_spot
    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.
    
  3. Edit the settings.json file

    The settings.json file is located in the following directories:

    • Windows: C:\Users\<user>\AppData\Roaming\down_on_spot\settings.json
    • Unix: ~/.config/down_on_spot/settings.json
  4. Now you can use DownOnSpot

    $ ./down_on_spot
    Usage:
    down_on_spot.exe (search_term | track_url | album_url | playlist_url | artist_url)
    

Template variables

You can use the following template variables for path and filename_template in the settings.json file:

  • %0disc%
  • %0track%
  • %album%
  • %albumArtist%
  • %albumArtists%
  • %artist%
  • %disc%
  • %id%
  • %title%
  • %track%

Additional scripts

Known issues

  • Slow MP3 downloads due to libmp3lame
  • Sporadic channel error when downloading tracks

Authors

License

GPLv3