# MPD control script based on socat and an idea I saw somewhere #!/bin/bash case "$1" in "") socat - tcp-connect:localhost:6600 | grep -v '^OK' | sed 's/^$//';; "dir") shift; ls "$1" | sed "s/\*//" | sed -e "$(echo 's/^/'"$(echo "$1/" | $0 strip )"'\//')" | egrep '\.(mp3|ogg|aac|flac|wav|mid|mp4|mp2|mod|mpc|mpp)';; "strip") sed 's/\/$//' | sed 's:\(.*\/\)*\(.*\/\)*:\2\\/:' | sed 's/^\\\///' ;; "get") shift; grep -i "^$1:" | sed 's|^'$1': \(.*\)|\1|i' ;; "add") sed 's|\(.*\)|add \"\1\"|' | $0 ;; "filter") shift; eval $(perl -e 'print join ("|",map { "grep -i " . $_ } @ARGV);' $*) ;; "cmdlist") sed -e '1i command_list_begin' -e '$a command_list_end' ;; "queue") gawk '{i--;printf "addid \"%s\" %d\n", $0, i}' ;; "newlist") sed -e '1i clear' -e '$a play' ;; "toggle") sed -e 's#state: \(stop\|pause\)#play#' -e 's#state: play#pause#' | tr 01 10 | tr -d : ;; "reset-pl") echo add / | $0 newlist | $0 ;; "w") $0 clear ;; "d") $0 delete $2 ;; "t") $0 status | grep state | $0 toggle | $0 ;; "c") $0 currentsong ;; "l") $0 playlist ;; "g") $0 play `[ "$2" = "" ] && cat - || echo $2`;; "n") $0 next ;; "p") $0 previous ;; "s") $0 search $2 $3 ;; "ss") $0 playlistsearch $2 $3 ;; *) echo $* | $0 ;; esac # Depreciated: # "n") $0 g $(dc -e "$($0 cs | grep '^Pos:' | cut -c 6-) 1 + $($0 ls | wc -l) %p");; # awesome, but unnecessary # "qry") $0 listall | $0 get | $0 filter $* ;; # "n") $0 g $($0 status | $0 get nextsongid) ;; # "p") $0 g $(dc -e "$($0 cs | grep '^Pos:' | cut -c 6-) 1 - p");;