Skip to content

Instantly share code, notes, and snippets.

View bonelifer's full-sized avatar

William Jacoby bonelifer

View GitHub Profile
@bonelifer
bonelifer / somafm-mpd-playlists.sh
Last active January 26, 2025 19:06 — forked from SydLambert/somafm-mpd-playlists.sh
Add SomaFM channels as individual playlists in specified directories. Supports multiple playlist types (highestpls-aac, fastpls-mp3, fastpls-aacp, slowpls-aacp). Will delete existing playlists before creating new ones. Requires curl, awk, grep, and basic shell tools. You can specify which playlist types to create by passing arguments, or leave b…
#!/usr/bin/env bash
# Script to create SomaFM playlists based on XML channel data
# The script will create playlists in directories named after the playlist type (e.g., fastpls-mp3).
# It can handle multiple types of playlists, and will clean up existing playlists before creating new ones.
# Base directory for all playlists
BASE_DIR="./playlists"
# Define valid playlist types and their mappings using an associative array
#!/usr/bin/env bash
# AUTHOR: bonelifer
# FILE: songlengthtest.sh
# ROLE: Display the current song title with length constraints for better readability.
# BASED ON: https://gist.github.com/professorjamesmoriarty/2d4fcea1f587750b7bfc
# CREATED: 2015-09-27 06:31:51
# MODIFIED: 2025-02-06
# Function to display the currently playing song's title.
mus() {
@bonelifer
bonelifer / mpc-guardian.sh
Last active January 26, 2025 06:23 — forked from moopet/mpc-guardian.sh
With a shared MPD server, sometimes other people will add shit music. Stop the rot. Also watch Christmas genre and limit it to specific date range.
#!/usr/bin/env bash
# Automatically removes songs from your playlist that match a blacklist or the Christmas genre
# unless it is between the day after U.S. Thanksgiving and before January 15.
BLACKLIST=/var/music/blacklist.txt
MPD_HOST=localhost
REJECT_GENRE="Christmas"
# Define the date range
@bonelifer
bonelifer / mpd_delete_duplicates.sh
Created January 26, 2025 05:56 — forked from hiqua/mpd_delete_duplicates.sh
Delete duplicates from mpd playlist
#!/usr/bin/bash
# Script: MPD Duplicate Removal
# Purpose: This script identifies and removes duplicate entries from an MPD playlist.
# It finds the first duplicate based on file names, and removes it from the playlist.
# The script continues removing duplicates until there are no more left.
#
# Functions:
# 1. mpd_first_duplicate: Identifies the position of the first duplicate file in the playlist.
# 2. mpd_delete_duplicates: Loops through the playlist and deletes duplicates using the first function.
#!/bin/bash
# Send notification with album art (if found) when mpd plays a new song, depends on libnotify
readonly MUSIC_DIR="${HOME}/Music"
while true; do
SONG_PATH="$(mpc --format '%file%' current --wait)"
if [[ ! -z "$SONG_PATH" ]]; then # check if song is being played
SONG_DIR="$(dirname "${SONG_PATH}")"
#!/usr/bin/env bash
# -----------------------------------------------------------------------------
# Script: mpc_state_manager.sh
# Description:
# This script manages saving and loading the current track and playback state
# of the MPD (Music Player Daemon) client `mpc` to/from a file. It provides
# two main operations:
# 1. Saving the current track and its state (playing/paused) into a file.
# 2. Loading a previously saved track and state, and resuming playback.
@bonelifer
bonelifer / mpc-control.sh
Created January 26, 2025 05:11 — forked from kenanpelit/gist:e5eea8618a813ac20da3cbffafcb9556
mpc-control - full function
#!/usr/bin/env bash
# Icon Definitions (Nerd Font Icons)
# Define custom icons for different playback states (play, pause, stop, etc.)
PLAY_ICON="󰐊"
PAUSE_ICON="󰏤"
STOP_ICON="󰓛"
NEXT_ICON="󰒭"
PREV_ICON="󰒮"
VOLUME_UP_ICON="󰝝"
@bonelifer
bonelifer / mpc.sh
Last active January 26, 2025 05:04 — forked from kostix/mpc.sh
mpc wrapper with a bit of interactivity
#!/bin/sh
# This script interacts with the `mpc` (Music Player Client) to manage playlists in MPD (Music Player Daemon).
# It allows the user to perform operations such as:
# - Viewing the current playlist with enumerated items.
# - Selecting, loading, or replacing playlists interactively.
# - Clearing the current playlist and loading a new one.
# Usage:
# - Run the script with no arguments to execute `mpc` commands.
# - Use specific arguments like 'playlist', 'iload', or 'replace' to invoke specialized functions.
@bonelifer
bonelifer / my-mpc
Last active January 26, 2025 04:52 — forked from jladan/my-mpc
Bash script for easy MPD hotkeys
#!/usr/bin/env bash
# Script to interact with the music queue and manage song ratings and statuses using "stickers"
# The stickers feature is used for marking songs with specific labels (e.g., "broken" or "rating").
# This script supports rating songs, flagging songs as "bad" (broken), removing songs from the queue,
# listing songs flagged as bad, and jumping to a random song in the queue.
# Ratings are compatible with clients such as Cantata, mpedv, and myMPD.
# Function to display usage instructions
usage () {
@bonelifer
bonelifer / mpd-notify.sh
Last active January 26, 2025 04:35 — forked from Jipok/mpd-notifications
Show music info(with cover) for mpd. Will show gray cover, when paused. defaultimage can be found here: https://williamjacoby.net/files/unknown.jpg
#!/bin/bash
expireTime="9200"
mpddir="/media/william/NewData/Music/MP3B/"
defaultimage="$mpddir/unknown.jpg"
update_cover() {
path=$mpddir$(mpc -f %file% current)
album=$(mpc -f %file% current)
ffmpeg -loglevel quiet -y -i "$path" /tmp/cover