summaryrefslogtreecommitdiff
path: root/scripts/music
blob: a7fe836ceb16e03cfa53b2feb0736ed250ccee9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#!/bin/sh
# simple music selector with dmenu that uses and interacts with mpv
# have a look at musiccmd, dwmblocks/sb_music and .local/etc/mpv/music
# shellcheck disable=SC2012

MUSICDIR="${XDG_MUSIC_DIR:-$HOME/music}"

if [ "$1" = "--shuffle" ]; then
	SHUFFLE=yes
	shift
fi

MUSIC="${1:-$MUSICDIR/$(ls "$MUSICDIR" | dmenu -i -p "Play ")}"
SCRIPT="$XDG_CONFIG_HOME/mpv/music/local.lua"

if [ "$MUSIC" = "$MUSICDIR/urls" ]; then
	MUSIC="$(cat "$MUSICDIR/urls/$(ls "$MUSICDIR/urls" | dmenu -i -p "Play ")")"
	SCRIPT="$XDG_CONFIG_HOME/mpv/music/online.lua"
fi

[ "$MUSIC" = "$MUSICDIR/" ] || [ -z "$MUSIC" ] && exit 1

if [ -z "$SHUFFLE" ] && [ -d "$MUSIC" ] || printf '%s' "$MUSIC" | grep -q playlist; then
	SHUFFLE="$(printf 'yes\nno' | dmenu -i -p 'Shuffle?')"
	[ -z "$SHUFFLE" ] && exit 1
fi

printf 'stop\n' | socat - /tmp/mpvsocket 2> /dev/null
mpv --vid=no --input-ipc-server=/tmp/mpvsocket --loop-playlist --volume=100\
	--ytdl-format="wv*+ba" --script="$SCRIPT" --shuffle="$SHUFFLE" "$MUSIC"