Skip to content

Instantly share code, notes, and snippets.

@cletusw
cletusw / beet-reimport-non-album.sh
Last active June 6, 2026 06:39
Re-imports files imported without an album so that can be fixed
FILE=$(ls /music/Non-Album/ | head -n 1) && \
TITLE=$(basename "$FILE" | sed 's/\.[^.]*$//' | cut -d'-' -f2- | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') && \
echo "=== Processing Title: $TITLE ===" && \
IFS='|' read -r ID FILE_PATH <<< "$(beet ls -f '$id|$path' "$TITLE" | head -n 1)" && \
[ -n "$FILE_PATH" ] && \
beet remove "id:$ID" && \
beet import -t "$FILE_PATH"
@cletusw
cletusw / 10-install-tidal.sh
Created June 5, 2026 05:23
beets/custom-cont-init.d/10-install-tidal.sh
#!/bin/bash
echo "Installing beets-tidal plugin..."
export PATH="/usr/bin:/usr/local/bin:$PATH"
echo $PATH
/lsiopy/bin/pip install git+https://github.com/arsaboo/beets-tidal.git
@cletusw
cletusw / config.yaml
Created June 5, 2026 05:21
beets config.yaml
plugins: fetchart embedart convert scrub lastgenre web duplicates subsonicupdate missing musicbrainz chroma fromfilename tidal replaygain #lyrics
directory: /music
library: /config/musiclibrary.blb
art_filename: albumart
original_date: no
per_disc_numbering: no
match:
strong_rec_thresh: 0.15
@cletusw
cletusw / beets-watcher
Last active June 5, 2026 05:24
Beets upload directory watcher
#!/usr/bin/with-contenv bash
WATCH_DIR="/downloads/move-here-after-upload"
export PATH="/lsiopy/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:$PATH"
# Runs beets when a file/folder is *moved* into WATCH_DIR. This way, users can upload a whole album (slow),
# then move it into the watched directory so beets processes whole albums together.
#
# Install (via your docker compose):
# environment:
# - DOCKER_MODS=linuxserver/mods:universal-package-install
@cletusw
cletusw / config.yaml
Created June 2, 2026 05:58
beets config
plugins: musicbrainz fetchart embedart convert scrub replaygain lastgenre chroma fromfilename web duplicates subsonicupdate missing #lyrics
directory: /music
library: /config/musiclibrary.blb
art_filename: albumart
original_date: no
per_disc_numbering: no
subsonic:
url: https://navidrome.starrphoenix.com/subsonic
@cletusw
cletusw / process_for_atem.bat
Last active March 23, 2023 16:58
Windows batch script that prepares (pre-multiplies) an image file for use as an overlay on an ATEM video switcher (see https://www.youtube.com/watch?v=N2vLs9i0bA0 and https://stackoverflow.com/questions/6591361/method-for-converting-pngs-to-premultiplied-alpha#comment74190171_27177752 ). Requires ImageMagick: https://imagemagick.org/script/downl…
@echo off
rem Source: https://gist.github.com/cletusw/648076667040699f9ec148b322e76a4e
if "%~1"=="" goto :usage
if not "%~2"=="" goto :usage
set "OUTPATH=%~dp1processed\"
if not exist "%OUTPATH%" (
mkdir "%OUTPATH%"
)
import time
import psutil
import pyautogui
# Check https://youtu.be/OGKQ6krf5O0 for a demo
# Required software
# Python 3 (https://www.python.org/downloads/) (with installation: check add to PATH)
# psutil (pip install psutil)
# pyautogui (pip install pyautogui)
@cletusw
cletusw / video-recorder.js
Created April 24, 2021 17:02
Video recorder custom element
import { html, css, LitElement } from 'lit';
import { ref, createRef } from 'lit/directives/ref.js';
export class VideoRecorder extends LitElement {
static get styles() {
return css`
video {
background: #222;
--width: 100%;
width: var(--width);
@cletusw
cletusw / git-sync-ship.sh
Created September 14, 2017 20:35
Git aliases for an easier rebase workflow
git config --global alias.sync '!f() { echo "$(tput setaf 4)Syncing this branch with origin master$(tput sgr 0)" && git fetch origin master && git rebase origin/master && echo "$(tput setaf 2)Branch sync successful$(tput sgr 0)"; }; f'
git config --global alias.ship '!f() { BRANCH=$(git symbolic-ref --short HEAD) && MERGE_BASE=$(git merge-base origin/master HEAD) && NUM_COMMITS=$(git rev-list --count $MERGE_BASE..) && git log --oneline --stat $MERGE_BASE.. && read -p "$(tput setaf 4)Are you sure you want to ship $(tput bold)$NUM_COMMITS$(tput sgr 0)$(tput setaf 4) commits to $(tput bold)master$(tput sgr 0)? [Y/n] " response </dev/tty && case $response in [yY][eE][sS]|[yY]|"") echo "$(tput setaf 4)Shipping branch $(tput bold)$BRANCH$(tput sgr 0)" ;; *) echo "$(tput setaf 1)Ship aborted by user$(tput sgr 0)"; return 1 ;; esac && git checkout master && (git merge --ff-only - || (echo "$(tput setaf 1)Could not merge branch into local master\nRun git sync before running this command\nIf this error persists, you ha
@cletusw
cletusw / angular-injection-to-import.js
Last active May 16, 2019 23:46
Converts the given angular injected parameter into an explicit require statement
/*
* Converts the given angular injected parameter into an explicit require statement
*
* Run this with jscodeshift
* @example
* jscodeshift . --specifier='Auth' --source='application/Auth'
*
* Live demo: https://astexplorer.net/#/gist/5492d2b9850a451d8e8d532bc64f21ce/latest
*
* Converts: