summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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