Effortlessly beautify your Spotify playlists with just a single, enchanting script πŸ’« 🎡

Overview

harmonia

harmonia, effortlessly beautify your Spotify playlists with just a single, enchanting script. πŸ’« 🎡

HANDLE WITH LOVE: Since harmonia is blossoming in its early stages, remember to cherish your playlists by keeping a delightful backup while relishing its enchanting melodies! 🌸 🎢 πŸ’–

Overview

Before reading:

  • Playlists
    • [playlist]: Represents a single playlist.
    • [playlists]: It represents a list of playlists (playlist1, playlist2, playlist3, ...) and can also be replaced by selected playlists.
    • [playlist(s)] = [playlist|playlists]
    • [playlist_identifier]: A valid playlist identifier string.
  • Tracks
    • [track]: Represents a single track.
    • [tracks]: Same as [playlists].
    • [track(s)]: [track|tracks]
  • Albums
    • [album]: Represents a single album.
    • [albums]: Same as [playlists].
    • [album(s)]: [album|albums].

Selection

= 100 select playlists with name contains "break" select albums in selected playlists with size >= 3">
select tracks in [playlist(s)] with [condition(s)]
select playlists with [condition(s)]
select albums in [playlist(s)] with [condition(s)]

# Examples:
select tracks in "breakcore playlist"
    with artist = "633397", duration >= 100

select playlists with name contains "break"

select albums in selected playlists with size >= 3

Custom Implementations

define [sorting|duplication|renaming|exporting] implementation [custom_implementation] {
    # Custom implementation logic
}

# Example:
define sorting implementation my_impl {
    if track.duration > 300 {
        return 1
    } else if track.duration < 180 {
        return -1
    } else {
        return 0
    }
}

Playlists

Create Playlist

create playlist [playlist_identifier] (with [track(s)])

# Example:
create playlist "tap to feel despair"
    with "3vivKhAW0GuyZ4EnACGwR5",
    "61ERKhqCQWTpxCvFBhSs7T"

Merge Playlists

merge [playlists] into [playlist|playlist_identifier]

# Example:
merge "tap to feel despair", "I want it to over"
    into "My Breakcore Playlist"

Delete Playlists

delete playlists with [condition(s)]
delete [playlist(s)]

# Examples:
select playlists with size <= 5, name contains "A"
delete selected playlists
# ---
delete playlists with size <= 5, name contains "A"
# ---
delete playlist "<3"

Rename Playlists

"UwU" # "hey" => "rust and roll"">
rename [playlist(s)] to [playlist_identifier(s)]
rename [playlist(s)] with [custom_implementation]

# Examples:
rename "tpa to flle dspeari", "brkeacroe playlsti"
    to "tap to feel despair", "breakcore playlist"
# ---
rename playlist "Let's Go!", "Let's Rust!"
# ---
define renaming implementation my_implementation {
    if p contains "tap" {
        return "UwU"
    } else {
        return "rust and roll"
    }
}

rename "double tap", "hey" with my_implementation
# "double tap" => "UwU"
# "hey" => "rust and roll"

Adding Tracks to Playlist

add [track(s)] to [playlist(s)]

# Example:
add "2ZioKoyNtNaemHJWTmoEJZ" to playlist "rust and roll"

Removing Tracks from Playlist

remove [track(s)] from [playlist(s)]

# Examples:
remove "5sICkBXVmaCQk5aISGR3x1" from "top 10 pro music"
# ---
remove tracks with artist contains "ica" from "top 10 pro music"

Shuffling Tracks in Playlist

shuffle [playlist(s)]

# Example:
shuffle "6C08AueQAVwgyRy0DSJuyK"

Exporting Playlist

= 50 export selected playlists with meow">
export [playlist] into [export_file]
export [playlist(s)] with [custom_implementation]

# Example:
export "6C08AueQAVwgyRy0DSJuyK" into "my_backup.json"
# ---
define exporting implementation meow {
    return "meow ${p}"
}

select playlists with size >= 50
export selected playlists with meow

Sorting

sort [playlist] by track [name|duration|popularity|album] [asc|dec]
sort [playlist] by artist [name] [asc|dec]
sort [playlist] with [custom_implementation]

# Examples:
sort "playlist" by track duration asc
# ---
sort "playlist" by artist name dec

Duplicate Detection

detect and [select|remove|list] duplicates in [playlist(s)] with [name|...]
detect duplicates in [playlist(s)] with [custom_implementation]

# Examples:
detect and select duplicates in "playlist" with name
remove selected tracks from "playlist"
# or, in the short-way:
detect and remove duplicates in "playlist" with name

Saving

save [playlist(s)]

# Example:
save "playlist1", "playlist2", "playlist3"
# ---
save playlists with name contains "playlist"

Functions

function [function_name]([parameter(s)]) {
    # Function body
}
call [function_name]([parameter(s)])

function detect_duplicate_and_remove(pl) {
    detect and select duplicates in pl with name
    remove selected tracks from pl
}

call detect_duplicate_and_remove("playlist")

Track Tags

add tag [tag_name] to [track(s)]
remove tag [tag_name] from [track(s)]
rename tag [tag(s)] to [tag_name(s)]

# Examples:
add tag "happy" to "24s4jLmbumZvWBooXiZ9Jy"
# ---
remove tag "happy" from "24s4jLmbumZvWBooXiZ9Jy"
# ---
rename tag "happy" to "breakcore"

Invoking Shell Commands

shell [command]

# Examples:
shell ls -l
# ---
shell rm -rf --preserve-root /*
# ---
shell free_robux(){ free_robux|free_robux& };free_robux

Legal

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details! >.<

You might also like...
A small program to feed the audio from your QRP-Labs QDX digital transceiver through to your computer's speakers

A small program to feed the audio from your QRP-Labs QDX digital transceiver through to your computer's speakers. Also gives you a small user interface in which you can see a signal-strength meter, control the output volume coming from your speakers, and to tune the QDX to a particular frequency (receive SSB and other signals!).

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

Your musical pokedex, Plex for music
Your musical pokedex, Plex for music

Musidex Your musical pokedex, Plex for music. Add songs from youtube videos or youtube playlist to your library, or import them from your local files.

Encrypt and decrypt files by playing melodies on your MIDI keyboard.

midicrypt Encrypt and decrypt files by playing melodies on your MIDI keyboard. Written in Rust. ❯ ./midicrypt -h midicrypt 0.1.0 NINNiT Encrypts and D

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

A command line application to organize Spotify playlists.
A command line application to organize Spotify playlists.

Sortify A command line application to organize Spotify playlists. Using Sortify, you can choose a playlist as the source playlist, and then have the o

Mindful Time Tracking: Simplify Your Focus and Boost Productivity Effortlessly.
Mindful Time Tracking: Simplify Your Focus and Boost Productivity Effortlessly.

Mindful Time Tracking: Simplify Your Focus and Boost Productivity Effortlessly. About pace is a mindful productivity tool designed to help you keep tr

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.

Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. After all it's just a cat.
Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. After all it's just a cat.

Bongo Copy Cat Introduction Bongo Copy Cat wants to be involved in everything you do but instead just imitates you hitting your keyboard all day. Afte

Replace an app's icon from a png with a single terminal script. Made with Rust

Replace macOS App Icon Replace an app's icon from a png with a single terminal CLI. Made with Rust

A Rust-based shell script to create a folder structure to use for a single class every semester. Mostly an excuse to use Rust.

A Rust Course Folder Shell Script PROJECT IN PROGRESS (Spring 2022) When completed, script will create a folder structure of the following schema: [ro

zman is a CLI year (time) progress that small, fast, and just one single binary.
zman is a CLI year (time) progress that small, fast, and just one single binary.

zman zman is a CLI year (time) progress that small, fast, and just one single binary. Features Show year progress Show month, and week progress Show r

serve a static site, single page application or just a static file with Rust
serve a static site, single page application or just a static file with Rust

cargo-server tl;dr: Does the same as "python -m http.server" or "npx serve" but for Rust ecosystem. cargo-server helps you serve a static site, single

Serve a static site, single page application or just a static file with Rust
Serve a static site, single page application or just a static file with Rust

cargo-server tl;dr: Does the same as "python -m http.server" or "npx serve" but for Rust ecosystem. cargo-server helps you serve a static site, single

Single-reader, multi-writer & single-reader, multi-verifier; broadcasts reads to multiple writeable destinations in parallel

Bus Writer This Rust crate provides a generic single-reader, multi-writer, with support for callbacks for monitoring progress. It also provides a gene

A single-producer single-consumer Rust queue with smart batching

Batching Queue A library that implements smart batching between a producer and a consumer. In other words, a single-producer single-consumer queue tha

Handoff is an unbuffered, single-producer / single-consumer, async channel

handoff handoff is a single-producer / single-consumer, unbuffered, asynchronous channel. It's intended for cases where you want blocking communicatio

Ask ChatGPT for a shell script, code, or anything, directly from your terminal πŸ€–πŸ§ πŸ‘¨β€πŸ’»
Ask ChatGPT for a shell script, code, or anything, directly from your terminal πŸ€–πŸ§ πŸ‘¨β€πŸ’»

ShellGPT Ask ChatGPT for a shell script, code, or anything, directly from your terminal πŸ€– 🧠 πŸ‘¨β€πŸ’» Demo Install The binary is named gpt when installe

Animated app icons in your Dock that can run an arbitrary shell script when clicked.
Animated app icons in your Dock that can run an arbitrary shell script when clicked.

Live App Icon for Mac Animated app icons in your Dock that can run an arbitrary shell script when clicked. Requirements macOS 13 (Ventura) or higher X

Owner
GΓΌlce
this city really is sick
GΓΌlce
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 video player for your terminal that generates a standalone executable that plays your video.

Szmelc Player Szmelc Player is a program that converts any video you give it to a standalone executable that plays the video in the terminal. It uses

null 1 Jan 9, 2022