Files
sh-goodies/mus.sh
T

37 lines
924 B
Bash
Executable File

#!/bin/sh
# Musmaster: find and play music in any directory
# Depends on find and fzf
# Created by Luxferre in 2026, released into the public domain
[ -z "$PLAYER" ] && PLAYER='mpg123'
[ -z "$FTYPES" ] && FTYPES='mp3 MP3'
mdir="$1"
[ -z "$mdir" ] && mdir='.'
set --
for ext in $FTYPES; do
if [ $# -eq 0 ]; then
set -- -name "*.$ext"
else
set -- "$@" -o -name "*.$ext"
fi
done
cd "$mdir"
echo "Indexing music..."
muslist="$(find . -type f \( "$@" \))"
dirlist="$(find . -type f \( "$@" \) -print0 | xargs -0 dirname | sort -u)"
muslist="$(printf '%s\n%s' "$muslist" "$dirlist" | sort -u)"
echo "Indexing complete"
while true; do
src="$(printf '%s\nQuit' "$muslist" | fzf --tac -0 -1)"
[ -d "$src" ] && src="$(find "$src" -type f \( "$@" \) | sort -u)"
[ "$src" = 'Quit' ] && break
if [ -n "$src" ]; then
printf '%s\n' "$src" | while read -r track; do
$PLAYER "$track"
done
fi
done