summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorSam Nystrom <sam@samnystrom.dev>2023-06-09 00:06:54 -0400
committerSam Nystrom <sam@samnystrom.dev>2023-06-09 00:06:54 -0400
commitebd975e8f1ac3a383d36130b07f8775589c3f609 (patch)
tree797e7dc09a89644ce5fdc2fe642d12b12e827fe6 /bin
parent712355c61075ec32e3f739833093043e445a6600 (diff)
add music shuffle script
Diffstat (limited to 'bin')
-rwxr-xr-xbin/shuffle25
1 files changed, 25 insertions, 0 deletions
diff --git a/bin/shuffle b/bin/shuffle
new file mode 100755
index 0000000..ce27bb7
--- /dev/null
+++ b/bin/shuffle
@@ -0,0 +1,25 @@
+#!/bin/sh -eu
+
+files=$(find "${1:-.}" -type f)
+n=$(echo "$files" | wc -l)
+
+prev=-1
+index=$((RANDOM % n))
+
+while :; do
+ while [ $index -eq $prev ]; do
+ index=$((RANDOM % n))
+ done
+ prev=$index
+ echo "$files" | (
+ i=0
+ while read -r file; do
+ if [ $i -eq $index ]; then
+ echo "Playing $file"
+ mpv "$file" || :
+ break
+ fi
+ i=$((i + 1))
+ done
+ )
+done