38 lines
1.2 KiB
Bash
Executable file
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
|