added Musmaster port

This commit is contained in:
Luxferre
2026-05-30 17:09:42 +03:00
parent 15f90eac1a
commit b60641ca0c
2 changed files with 35 additions and 0 deletions
Executable
+34
View File
@@ -0,0 +1,34 @@
#!/usr/bin/env bash
# Musmaster: find and play music in any directory (bash edition)
# Depends on find and fzf
# Created by Luxferre in 2026, released into the public domain
[[ -z "$PLAYER" ]] && PLAYER='mpg123'
[[ -z "$FTYPES" ]] && FTYPES='mp3 MP3'
if [[ -z "$TAGDUMP" ]]; then
TAGDUMP='mpg123-id3dump -n {} | grep -E "^(Title|Artist|Album|Year|Comment|Genre):" | sort -u'
fi
PREVIEWCMD="[ -d {} ] && ls -1 {} || ([ {} != 'Quit' ] && $TAGDUMP)"
mdir="$1"
[[ -z "$mdir" ]] && mdir='.'
declare -a fargs=() muslist dirlist tracks
for ext in $FTYPES; do
fargs+=('-name' "*.$ext" '-o')
done
unset 'fargs[-1]'
cd "$mdir"
while true; do
mapfile -t muslist < <(find . -type f \( "${fargs[@]}" \))
mapfile -t dirlist < <(dirname "${muslist[@]}" | sort -u)
IFS=$'\n' muslist=($(sort -u <<<"${muslist[*]} ${dirlist[*]}") Quit); unset IFS
src="$(printf '%s\n' "${muslist[@]}" | grep '\S' | fzf --tac --preview="$PREVIEWCMD" -0 -1)"
[[ "$src" = 'Quit' ]] && break
if [[ -n "$src" ]]; then
if [[ -d "$src" ]]; then
mapfile -t tracks < <(find "$src" -type f \( "${fargs[@]}" \) | sort -u)
$PLAYER "${tracks[@]}"
else
$PLAYER "$src"
fi
fi
done