diff options
| -rwxr-xr-x | bin/shuffle | 25 |
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 |
