dotfiles/local/bin/sb-liisten
2025-07-02 08:35:35 +03:30

38 lines
1.2 KiB
Bash
Executable file

#!/bin/sh
#Liisten for the status bar
#options
LOOPCOUNT=1 #however many times you want the song to play minus one (for technical reasons)
SONGDIR="$HOME/music/brstm"
cd "$SONGDIR"
MODE=$(printf "Random\nForever" | dmenu -i)
playsong () {
vgmstream-cli -m "$SONG" > /tmp/brstminfo.txt
STARTLOOP="$(grep "seconds" /tmp/brstminfo.txt | head -n 1 | sed 's/.*(//' | sed 's/ seconds)//')"
ENDLOOP="$(grep "seconds" /tmp/brstminfo.txt | tail -n 1 | sed 's/.*(//' | sed 's/ seconds)//')"
echo "Now playing: \"$(echo $SONG | sed 's/\.brstm//')\""
mpv --ab-loop-a="$STARTLOOP" --ab-loop-b="$ENDLOOP" --ab-loop-count="$LOOPCOUNT" "$SONG"
}
forever () {
SONG="$(command ls -1 | dmenu -i)"
vgmstream-cli -m "$SONG" > /tmp/brstminfo.txt
STARTLOOP="$(grep "seconds" /tmp/brstminfo.txt | head -n 1 | sed 's/.*(//' | sed 's/ seconds)//')"
ENDLOOP="$(grep "seconds" /tmp/brstminfo.txt | tail -n 1 | sed 's/.*(//' | sed 's/ seconds)//')"
mpv --ab-loop-a="$STARTLOOP" --ab-loop-b="$ENDLOOP" --loop-file=inf "$SONG"
}
random () {
while true; do
RANDNUM=$(shuf -i 1-$(ls -1 | wc -l) -n 1)
SONG="$(command ls | head -n $RANDNUM | tail -n 1)"
playsong
done
}
case "$MODE" in
Forever) forever ;;
Random) random ;;
esac