X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=pages%2Fplayctl.sh;h=36363516a0e2d9422e252fd94ceda8355ef8ec45;hb=e2388ebb332a514f070ec5a668f23b08dda83546;hp=591efd6695d89c792edcca1cde960fc3d4f73e82;hpb=ece6dc351856b84a276ea6dca4da1af5d56da31b;p=serve0 diff --git a/pages/playctl.sh b/pages/playctl.sh index 591efd6..3636351 100755 --- a/pages/playctl.sh +++ b/pages/playctl.sh @@ -1,6 +1,6 @@ #!/bin/zsh -# Copyright 2014, 2016 Paul Hänsch +# Copyright 2014, 2016, 2017 Paul Hänsch # # This file is part of Serve0. # @@ -19,24 +19,44 @@ . $_EXEC/pages/common.sh +CR="$(printf \\r)" + info="${_GET[i]}" location="$(invalidate "${_GET[l]}" '(.*/)?\.\.(/.*)?|' /)" directory="${location%/*}" statusfile="$_DATA/mplayer.status" statusfile="/tmp/mplayer.status" -[ -n "$info" ] && video="${_DATA}/videos/$info" \ - || video="${treeroot%/}/${location#/}" +if [ -n "$info" ]; then + video="${_DATA}/videos/$info" + meta="${_DATA}/meta/${info}.meta" +else + video="${treeroot%/}/${location#/}" + meta="${treeroot%/}${location%/*}/.index/${location##*/}.meta" +fi + +[ -r "$meta" ] || meta="${_DATA}/mplayer.meta" -meta="${_DATA}/mplayer.meta" 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(){ if which pactl >/dev/null; then export DISPLAY=":0" @@ -50,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' \ + 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' + fi \ | while read m; do - [ "$m" != "$previous" ] && printf "%d %d\n" "$(($m * 100 / $length))" "$m" + [ "$m" != "$previous" ] && printf "%d %d\n" "$(($m * 100 / ${length:--1}))" "$m" previous="$m" done }