From ff8b54fea63a05cceab0a2f834f22b0db92e8bdf Mon Sep 17 00:00:00 2001 From: paul Date: Fri, 17 Mar 2017 15:38:34 +0000 Subject: [PATCH] introduce api to fetch progress and volume from player svn path=/trunk/; revision=180 --- actions/playctl.sh | 21 +++++++++++++++++++++ pages/playctl.sh | 43 +++++++++++++++++++++++++++++-------------- 2 files changed, 50 insertions(+), 14 deletions(-) diff --git a/actions/playctl.sh b/actions/playctl.sh index 55997ca..2934b90 100755 --- a/actions/playctl.sh +++ b/actions/playctl.sh @@ -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 diff --git a/pages/playctl.sh b/pages/playctl.sh index 5fd5411..723d37f 100755 --- a/pages/playctl.sh +++ b/pages/playctl.sh @@ -19,6 +19,8 @@ . $_EXEC/pages/common.sh +CR="$(printf \\r)" + info="${_GET[i]}" location="$(invalidate "${_GET[l]}" '(.*/)?\.\.(/.*)?|' /)" directory="${location%/*}" @@ -39,14 +41,20 @@ tags="$(sed -n '2p' "$meta")" description="$(sed -n '3,$p' "$meta")" head -n1 "$meta" |read length width height TITLE -volume=$(validate "$(cat "$_DATA/mplayer.volume")" '[1-9]?[0-9]|100' 20) - debug VIDEO: $video if [ "$_COOKIE[watch]" = raspi ]; then actionuri='//atoemchen/?action=playctl' + volume="$({ncat atoemchen 80 <<-EOF + GET /?action=playctl&api=volume HTTP/1.0${CR} + Host: atoemchen${CR} + ${CR} + EOF + } | sed -r '1,/^\r$/d')" + volume=$(validate "${volume}" '[1-9]?[0-9]|100' 20) else actionuri='?action=playctl' + volume=$(validate "$(cat "$_DATA/mplayer.volume")" '[1-9]?[0-9]|100' 20) fi pa_sinks(){ @@ -62,16 +70,23 @@ pa_sinks(){ printf 'Refresh: 1\r\n' progress(){ - cr="$(printf \\r)" - - 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 + if [ "$_COOKIE[watch]" = raspi ]; then + { ncat atoemchen 80 <<-EOF + GET /?action=playctl&api=progress HTTP/1.0${CR} + Host: atoemchen${CR} + ${CR} + EOF + } | sed -ur '1,/^\r$/d' + else + 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 + fi } -- 2.39.2