3 stable releases

1.1.0 Aug 5, 2020
1.0.1 Aug 5, 2020
1.0.0 Aug 4, 2020

#11 in #shuffle

Unlicense

20KB
416 lines

Dioni

License Crates.io

A CLI that shuffle plays your saved tracks on Spotify.

Why

I may be too paranoid, but I always felt like Spotify's shuffle play is fake. It seems to play the same bands, or at least have some kind of intelligence behind it.

So this project was born with the intention of having a true random queue with your saved tracks.

But, again, I may be just too paranoid.

Things you need to know

  • It asks for your authentication opening your browser.
  • It caches the authentication token so it doesn't authenticate again. You can force authentication again with the flag --force-auth.
  • The cache path is defined by $DIONI_CACHE. If not defined, it tries $XDG_CACHE_HOME/dioni. If it's also not defined, it gets the default cache dir for you OS (Linux: ~/.cache, Mac: ~/Library/Caches, Windows: ~\AppData\Local) plus /dioni. You can check it via --cache-path flag.
  • If the directory in the cache path doesn't exists, it'll be created.
  • If your total liked tracks exceeds our limit, it's gonna ask if you want to add them in the queue. This can be pre-defined with the flags --ignore-excess and --add-excess-to-queue.

Install

Brew

brew tap Nhanderu/packages
brew install dioni

Cargo

cargo install dioni

Run

dioni

Runs the program with default configuration.

Flags

-h or --help

Shows the CLI help message.

-v or --version

Shows the CLI version.

-q or --quiet

Runs the program without writing to stdout. Requires --add-excess-to-queue or --ignore-excess.

--ignore-excess

Ignore songs that exceed the Spotify limit.

--add-excess-to-queue

Add songs that exceed the Spotify limit to the queue.

-a or --force-auth

Clears the authentication cache, forcing it to ask for authentication again.

--cache-path

Shows the cache path.

License

This project code is in the public domain. See the LICENSE file.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you shall be in the public domain, without any additional terms or conditions.

Dependencies

~14–25MB
~327K SLoC