]> git.plutz.net Git - serve0/blobdiff - actions/playctl.sh
styling for pagination links
[serve0] / actions / playctl.sh
index 6944771f7cea4ac716fd7ef8efbc81ebd6cbd7e2..ae1a51bc19f21c7372e0c464561e75e08b9a39e6 100755 (executable)
@@ -21,11 +21,29 @@ statusfile="${_DATA}/mplayer.status"
 statusfile="/tmp/mplayer.status"
 volfile="${_DATA}/mplayer.volume"
 
-export DISPLAY=":0"
-export XDG_RUNTIME_DIR="/run/user/$(id |sed -rn '1s;.*uid=([0-9]+)[^0-9].*;\1;p')"
+[ -z "$DISPLAY" ] && export DISPLAY=":0"
+[ -z "$XDG_RUNTIME_DIR" ] && export XDG_RUNTIME_DIR="/run/user/$(id |sed -rn '1s;.*uid=([0-9]+)[^0-9].*;\1;p')"
 
 printf '\rBREAK\r' >> "$statusfile"
 
+if [ "${_GET[api]}" = progress ]; then
+  cr="$(printf \\r)"
+  printf 'Content-Type: text/plain\r\n\r\n'
+
+  read length <${_DATA}/mplayer.meta
+  tail --pid=$$ -c100 -f "$statusfile" \
+  | while read -d "$cr" line; do
+    [ "$line" = "BREAK" ] && exit 0
+    printf '%s\n' "$line"
+  done \
+  | sed -urn '1~12s;^.* V: *+([0-9]+)(\.[0-9]+) A-V:.*$;\1;p'
+  exit 0
+elif [ "${_GET[api]}" = volume ]; then
+  printf 'Content-Type: text/plain\r\n\r\n'
+  validate "$(cat "$_DATA/mplayer.volume")" '[1-9]?[0-9]|100' 20
+  exit 0
+fi
+
 if   [ -n "${_POST[amp]+x}" ]; then
   amp $(validate "${_POST[amp]}" '(on|off)' off)
 elif [ -n "${_POST[vol]+x}" ]; then
@@ -39,7 +57,7 @@ elif [ -n "${_POST[seek]+x}" ]; then
 elif [ -n "${_POST[pasink]+x}" ]; then
   stream="$(\
     pactl list sink-inputs \
-    | sed -rn '/Sink Input #/{:X;N;/application.name =/!bX;s;Sink Input #([0-9]+).+application.name = "MPlayer";\1;p}' \
+    | sed -rn '/Sink Input #/{:X;N;/application.name =/!bX;s;Sink Input #([0-9]+).+application.name = "(MPlayer|mplayer2)";\1;p}' \
   )"
   pactl move-sink-input "$stream" "${_POST[pasink]}"
 elif [ -n "${_POST[osd]+x}" ]; then
@@ -48,4 +66,4 @@ elif [ -n "${_POST[osd]+x}" ]; then
   esac >"$fifofile"
 fi &
 
-redirect "$HTTP_REFERER"
+redirect "${_POST[referrer]}"