aboutsummaryrefslogtreecommitdiff
path: root/files/.config/nnn/plugins/boom
diff options
context:
space:
mode:
Diffstat (limited to 'files/.config/nnn/plugins/boom')
-rwxr-xr-xfiles/.config/nnn/plugins/boom50
1 files changed, 50 insertions, 0 deletions
diff --git a/files/.config/nnn/plugins/boom b/files/.config/nnn/plugins/boom
new file mode 100755
index 0000000..aab466f
--- /dev/null
+++ b/files/.config/nnn/plugins/boom
@@ -0,0 +1,50 @@
+#!/usr/bin/env sh
+
+# Description: Play random music (MP3, FLAC, M4A, WEBM, WMA) from current dir.
+#
+# Dependencies: mocp (or custom)
+#
+# Note: You may want to set GUIPLAYER.
+#
+# Shell: POSIX compliant
+# Author: Arun Prakash Jana
+
+GUIPLAYER="${GUIPLAYER:-""}"
+NUMTRACKS="${NUMTRACKS:-100}"
+
+if [ -n "$GUIPLAYER" ]; then
+ find . -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.m4a" -o -iname "*.webm" -o -iname "*.wma" \) | shuf -n "$NUMTRACKS" | xargs -d "\n" "$GUIPLAYER" > /dev/null 2>&1 &
+
+ # detach the player
+ sleep 1
+elif type mocp >/dev/null 2>&1; then
+ cmd=$(pgrep -x mocp 2>/dev/null)
+ ret=$cmd
+
+ if [ -z "$ret" ]; then
+ # start MOC server
+ mocp -S
+ mocp -o shuffle
+ else
+ # mocp running, check if it's playing
+ state=$(mocp -i | grep "State:" | cut -d' ' -f2)
+ if [ "$state" = 'PLAY' ]; then
+ # add up to 100 random audio files
+ find . -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.m4a" -o -iname "*.webm" -o -iname "*.wma" \) | head -n "$NUMTRACKS" | xargs -d "\n" mocp -a
+ exit
+ fi
+ fi
+
+ # clear MOC playlist
+ mocp -c
+ mocp -o shuffle
+
+ # add up to 100 random audio files
+ find . -type f \( -iname "*.mp3" -o -iname "*.flac" -o -iname "*.m4a" -o -iname "*.webm" -o -iname "*.wma" \) | head -n "$NUMTRACKS" | xargs -d "\n" mocp -a
+
+ # start playing
+ mocp -p
+else
+ printf "moc missing"
+ read -r _
+fi