summaryrefslogtreecommitdiff
path: root/m
blob: a1de19df38cc2efc797abbc3f6af2297a79ba1b4 (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
31
32
33
34
#!/usr/bin/env bash
# MPD control script based on socat and an idea I saw somewhere

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");;