• Stars
    star
    516
  • Rank 82,993 (Top 2 %)
  • Language
    Rust
  • License
    GNU General Publi...
  • Created over 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🎧 A Spotify music and playlist downloader working with free Spotify accounts written in Rust

DownOnSpot

A Spotify downloader written in Rust

drawing

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

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

Authors

License

GPLv3

More Repositories

1

BetterDiscordPlugins

πŸ”₯ My collection of Discord plugins for BetterDiscord, the Discord enhancement project
JavaScript
138
star
2

dinkleberg

πŸ•΅οΈβ€β™‚οΈ Catch users faking their offline status on Discord with an exploit written in Rust
Rust
50
star
3

nitro-bypass

πŸ”‹ Powercord plugin to send any emote and screen share in high quality without Discord Nitro
JavaScript
44
star
4

aliucord-plugins

🧩 My collection of Aliucord plugins for mobile Discord, a modified client for Discord on Android with plugin support
Kotlin
22
star
5

themida-string-decryptor

πŸ”“ Decrypt strings from a .NET module dump protected by Themida, the advanced windows software protection system
C#
14
star
6

osum-player

A music player built in vanilla web technologies out of the need of a good music player
JavaScript
12
star
7

oSumAtrIX

πŸ‘¨ My userpage for GitHub
9
star
8

static-api

Proof of concept repository to host a static api using GitHub workflows
Python
9
star
9

lazer-exporter

πŸ—Ί Export beatmaps from osu!lazer
JavaScript
6
star
10

osumatrix.me

🌐 My personal website
Svelte
6
star
11

HzRefresher

Android application to toggle global 120hz on OxygenOS/ ColorOS running Android 12/ 13
Kotlin
5
star
12

SRXDLadder-Stringdecryptor

Lazy stringdecryptor for SRXDLadder with reflection and dnlib
C#
3
star
13

hot-turkey

Activate the pro version of Cold Turkey Blocker
C#
2
star
14

pi-hole-facebook-blocklist

2
star
15

snowfall

❄ A customizable plugin for Powercord to let it snow on Discord.
JavaScript
2
star
16

minimize-shortcut

πŸ”‹ Powercord plugin to hide or show Discord with any shortcut
JavaScript
2
star
17

Flow.Launcher.Plugin.Base64

πŸ”‘ Encode or decode a string using Base64 encoding
C#
1
star
18

clyde-proxy

πŸ€– Proxy Clyde from one Discord server to another
Rust
1
star
19

android-osu-lazer-fix

Outdated fix to play lazer on android while there is no release for android
C#
1
star
20

mastermind

🎲 Mastermind - A code-breaking CLI game for two players written in C89
C
1
star
21

DPC-LOGIN

DPC-LOGIN
1
star
22

vaultwarden-auto-updater

πŸ”§ Update Vaultwarden and the web instance with a bash script
Shell
1
star
23

osu-NoFadeAnimation

osu! patch to remove circle on-click fading animations
C#
1
star
24

AntiAntiIGGAdblocker

JavaScript
1
star
25

expimont-waf-challenge-reversed

πŸ›‘ Deobfuscated challenge of the Expimont WAF
JavaScript
1
star
26

marcophono-premium

πŸ† Enable premium on Marcophono
JavaScript
1
star