A command line application to organize Spotify playlists.

Overview

Sortify

A command line application to organize Spotify playlists.

Using Sortify, you can choose a playlist as the source playlist, and then have the option to sort each track in it. When sorting, you choose destination playlists to add that track to. When sorted, tracks are added to the other playlists, removed from the source, and added to your liked songs.

Screenshot

This is mostly a personal project to help in the very specific way I use Spotify:

  • I have a playlist called buffer to which I add all songs I hear about
  • After a while of listening to buffer, I go through a bunch of the songs in it and for each either
    • Discard it if I didn't like it very much; or
    • Add it to my liked songs and to some playlist which matches its vibe.

So if you'd like to adhere to this Spoti-flow, this app should help out!

Usage

On first usage, the app should redirect you to log into Spotify. If that doesn't happen, follow the link shown. After logging in, paste the URL Spotify redirected you to into the app, and you should be logged in. Subsequent usages shouldn't need the same process.

After the initial log in, the app should be self-explanatory.

Installation

Cargo

You must have Rust and Cargo installed.

# Install binary from crates.io
cargo install sortify

# Run the application 
sortify
# (if this doesn't work, your shell might not know to look for the binary in ~/.cargo/bin/)

Build from source

You must have Rust and Cargo installed.

# Clone the repository
git clone https://github.com/franciscunha/sortify

# Navigate to the project directory
cd sortify

# Build the project
cargo build --release

# Run the application
./target/release/sortify

Binary release

Will be added in the future.

Contributing

I wrote this over a week to learn the basics of Rust. There are likely many improvements to be made to the codebase, but since it's just a personal project I'm not setting up a robust contributing system. Let me know if you'd like to contribute to it and we can set something up!

You might also like...
A modular command line digital signal processor built in rust

Ever wanted to pipe raw audio samples around in the terminal to impress your friends at a party? Well then, you've come to the right place.

envelope - a command line utility and tool to help you manage your .env files

envelope envelope is a command line utility and tool to help you manage your .env files. How it works envelope is basically a command line utility tha

Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device.
Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device.

Polaris is a music streaming application, designed to let you enjoy your music collection from any computer or mobile device. Polaris works by streami

A multi-threaded GTK 3 application for fetching the lyrics of the current playing song
A multi-threaded GTK 3 application for fetching the lyrics of the current playing song

Lyriek A multi-threaded GTK 3 application for fetching the lyrics of the current playing song. Installation Arch Linux yay -S lyriek Ubuntu apt insta

Midnote is a terminal application that reads a MIDI file and displays you its notes bar-by-bar, while playing it.

MIDNOTE Midnote is a terminal application that reads a MIDI file and displays you its notes bar-by-bar, while playing it. Goals As a blind musician my

A library and application for lossless, format-preserving, two-pass optimization and repair of Vorbis data, reducing its size without altering any audio information.
A library and application for lossless, format-preserving, two-pass optimization and repair of Vorbis data, reducing its size without altering any audio information.

OptiVorbis A library and application for lossless, format-preserving, two-pass optimization and repair of Vorbis data, reducing its size without alter

Effortlessly beautify your Spotify playlists with just a single, enchanting script 💫 🎵

harmonia harmonia, effortlessly beautify your Spotify playlists with just a single, enchanting script. 💫 🎵 HANDLE WITH LOVE: Since harmonia is bloss

Plexisort is a command-line tool designed to organize your files based on metadata.
Plexisort is a command-line tool designed to organize your files based on metadata.

Plexisort is a command-line tool designed to organize your files based on metadata. It allows for flexible source and destination directory settings, supports dry-run operations for safe previews of potential changes, and even offers an undo functionality for reversing the last set of file movements.

A song analysis library for making playlists

bliss-rs is the Rust improvement of bliss, a library used to make playlists by analyzing songs, and computing distance between them.

zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.
zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets you're watching easily into watchlists for easy access on your terminal.

zigfi zigfi is an open-source stocks, commodities and cryptocurrencies price monitoring CLI app, written fully in Rust, where you can organize assets

This repository aims to organize codes related to data structures in Rust. 🦀
This repository aims to organize codes related to data structures in Rust. 🦀

Rust Data Structure A project with the objective of introducing the main concepts about data structure using Rust! Explore the docs and learn Rust » R

A CLI app to set and organize your favorite DNS servers.

rdns A CLI app to set and organize your favorite DNS servers. Introduction rdns is a CLI utility that can set your system DNS, either directly or by m

A command driven spotify player
A command driven spotify player

spotify-player Table of Contents Introduction Examples Demo Installation Requirements Spotify Connect Streaming Commands Actions Search Page Mouse sup

Small command-line tool to switch monitor inputs from command line

swmon Small command-line tool to switch monitor inputs from command line Installation git clone https://github.com/cr1901/swmon cargo install --path .

A Command Line OTP Authenticator application.

cloak A Command Line OTP (One Time Password) Authenticator application written in Rust that generates time-based and counter-based OTP codes. Motivati

A small command-line application to view images from the terminal written in Rust.
A small command-line application to view images from the terminal written in Rust.

A small command-line application to view images from the terminal written in Rust. It is basically the front-end of viuer

A tool crate to quickly build rust command line application.

Falsework A tool crate to quickly build rust command line application.

Command line application for searching
Command line application for searching

maven_search_rs Command line application for searching in https://search.maven.org Usage Non-interactive $ maven-search -f maven wicket-core The abov

Comments
  • selected playlists are reset after changing volume

    selected playlists are reset after changing volume

    actions taken

    1. choose a number of playlists
    2. use u or d to change the volume

    expected outcome

    playlists that were selected remain selected

    actual outcome

    no playlists are marked as selected

    bug 
    opened by franciscunha 0
  • panicked during authentication

    panicked during authentication

    The url http://localhost:8888/callback?code=... shows 'Connection Refused' in the browser.

    $ sortify 
    ♪♫♪ Welcome to Sortify!
    Opened https://accounts.spotify.com/authorize?scope=playlist-read-collaborative+playlist-read-private&response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A8888%2Fcallback&client_id=9c7a1f7848ba4f5b839b4e199e2ed1a9&code_challenge_method=S256&state=kHAEmYuYrTXkS3Bf&code_challenge=0OjyfvxqBLeS7pggQVIUnU4pg7ABOlcPB7oY2RFjXvc in your browser.
    Please enter the URL you were redirected to: 
    http://localhost:8888/callback?code=<meu-codigo-provavelmente-de-autenticacao>&state=<estado>
    thread 'main' panicked at /home/victor/.cargo/registry/src/index.crates.io-6f17d22bba15001f/sortify-1.0.2/src/spotify.rs:45:42:
    called Result::unwrap() on an `Err` value: Http(StatusCode(Response[status: 403, status_text: Forbidden, url: https://api.spotify.com/v1/me/]))
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    $ sortify 
    ♪♫♪ Welcome to Sortify!
    thread 'main' panicked at /home/victor/.cargo/registry/src/index.crates.io-6f17d22bba15001f/sortify-1.0.2/src/spotify.rs:45:42:
    called Result::unwrap() on an `Err` value: Http(StatusCode(Response[status: 403, status_text: Forbidden, url: https://api.spotify.com/v1/me/]))
    note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    
    opened by mororo18 0
  • missing dependency `alsa.pc`

    missing dependency `alsa.pc`

    During cargo install sortify:

    error: failed to run custom build command for `alsa-sys v0.3.1`
    
    Caused by:
      process didn't exit successfully: `/tmp/cargo-installAPsu8V/release/build/alsa-sys-2df7f339e5121830/build-script-build` (exit status: 101)
      --- stdout
      cargo:rerun-if-env-changed=ALSA_NO_PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG
      cargo:rerun-if-env-changed=PKG_CONFIG
      cargo:rerun-if-env-changed=ALSA_STATIC
      cargo:rerun-if-env-changed=ALSA_DYNAMIC
      cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC
      cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_PATH
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
      cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
      cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
    
      --- stderr
      thread 'main' panicked at /home/victor/.cargo/registry/src/index.crates.io-6f17d22bba15001f/alsa-sys-0.3.1/build.rs:13:18:
    
      pkg-config exited with status code 1
      > PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 pkg-config --libs --cflags alsa
    
      The system library `alsa` required by crate `alsa-sys` was not found.
      The file `alsa.pc` needs to be installed and the PKG_CONFIG_PATH environment variable must contain its parent directory.
      The PKG_CONFIG_PATH environment variable is not set.
    
      HINT: if you have installed the library, try setting PKG_CONFIG_PATH to the directory containing `alsa.pc`.
    
      note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
    warning: build failed, waiting for other jobs to finish...
    error: failed to compile `sortify v1.0.2`, intermediate artifacts can be found at `/tmp/cargo-installAPsu8V`.
    To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.
    

    To fix this issue, I had to install the libasound2-dev package.

    opened by mororo18 0
Owner
Francisco Cunha
Computer Science and Engineering @ TUDelft
Francisco Cunha
A song analysis library for making playlists

bliss-rs is the Rust improvement of bliss, a library used to make playlists by analyzing songs, and computing distance between them.

null 49 Dec 25, 2022
Spotify for the terminal written in Rust 🚀

Spotify TUI A Spotify client for the terminal written in Rust. The terminal in the demo above is using the Rigel theme. Spotify TUI Installation Homeb

Alexander Keliris 14.1k Jan 1, 2023
A spotify daemon

Spotifyd An open source Spotify client running as a UNIX daemon. Spotifyd streams music just like the official client, but is more lightweight and sup

null 8.4k Dec 31, 2022
Gtk/Rust native Spotify client for the GNOME desktop.

Gtk/Rust native Spotify client for the GNOME desktop.

Alexandre Trendel 1.7k Jan 1, 2023
🎧 a self-hosted Spotify → Discord music bot

Aoede is a Discord music bot that directly streams from Spotify to Discord. The only interface is Spotify itself. Note: a Spotify Premium account is c

Max Isom 159 Dec 29, 2022
A Spotify downloader written in rust, which does not require a premium account

DownOnSpot A Spotify downloader written in Rust Disclaimer DownOnSpot was not developed for piracy. It is meant to be used in compliance with DMCA, Se

oSumAtrIX 273 Jan 7, 2023
Psst - Fast and multi-platform Spotify client with native GUI

Psst Fast Spotify client with native GUI, without Electron, built in Rust. Very early in development, lacking in features, stability, and general user

Jan Pochyla 7.2k Jan 2, 2023
ncspot is a ncurses Spotify client written in Rust using librespot.

ncspot is a ncurses Spotify client written in Rust using librespot. It is heavily inspired by ncurses MPD clients, such as ncmpc. My motivation was to provide a simple and resource friendly alternative to the official client as well as to support platforms that currently don't have a Spotify client, such as the *BSDs.

Henrik Friedrichsen 3.4k Jan 8, 2023
code to connect + communicate with a Spotify Car Thing

spotify_carthing_bt A grab-bag of spotify car thing related hacks I'm working on. deskthing-rs A Rust port of https://github.com/relative/deskthing, w

Daniel Prilik 6 Dec 19, 2022
A simple GUI rust application that keeps track of how much time you spend on each application.

TimeSpent A simple GUI rust application that keeps track of how much time you spend on each application. Installation Click here to download the Setup

Slacked Lime 4 Sep 23, 2022