]> git.plutz.net Git - serve0/blobdiff - actions/playctl.sh
introduce api to fetch progress and volume from player
[serve0] / actions / playctl.sh
index 55997cad1af59a60c1fc4a4a2c5e1b46a2f4e58c..2934b90fd2b8be4d868451e8df27bcf49691768c 100755 (executable)
@@ -26,6 +26,27 @@ 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'
+
+  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' \
+  | while read m; do
+    [ "$m" != "$previous" ] && printf "%d %d\n" "$(($m * 100 / $length))" "$m"
+    previous="$m"
+  done
+  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