No description
Find a file
2023-11-26 02:30:57 +01:00
.cargo Fix download of non search inputs & .cargo config 2021-11-27 09:11:15 +01:00
.github ci: Use correct action convention 2023-11-26 02:24:36 +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 chore: Use correct CLI syntax in README 2023-11-26 02:30:57 +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 using the source code.

Features

  • Actually downloads from Spotify, free and premium
  • Chose between 96, 160, 256 and 320 kbit/s (free users can't exceed 160kbit/s)
  • Download tracks, playlists, albums and artists
  • Multi-threaded
  • Search for tracks
  • Download MP3 and original OGG files
  • Metadata tagging
  • Simple CLI interface

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
    

Note

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

DownOnSpot is licensed under the GPLv3 licence. Please see the licence file for more information. tl;dr you may copy, distribute and modify DownOnSpot as long as you track changes/dates in source files. Any modifications to DownOnSpot must also be made available under the GPL, along with build & install instructions.