X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=pages%2Fcommon.sh;h=6257aad6e3fba469e17f8143c2cd05dcae9ab5fb;hb=b6d914a4ee1b64a318b17207b92d791af5c8d658;hp=5e233142f7d289ffb354fbe3d868f7c70cce5081;hpb=77a26b975ad1dfdff620ec9156b53d6c1c032f92;p=serve0 diff --git a/pages/common.sh b/pages/common.sh index 5e23314..6257aad 100755 --- a/pages/common.sh +++ b/pages/common.sh @@ -17,20 +17,20 @@ # You should have received a copy of the GNU Affero General Public License # along with Serve0. If not, see . -filter="$_GET[\"f\"]" -search="$_GET[\"s\"]" -order=$(echo -E "$_GET[\"o\"]" |egrep '^(Name|Date|Length)$') -page=$(echo -E "$_GET[\"p\"]" |egrep '^[0-9]+$') -[ -z "$page" ] && page=0 +filter="${_GET[f]}" +search="${_GET[s]}" +order="${_GET[o]}" #validated +page="${_GET[pn]}" #validated +pagesize="${_COOKIE[pagesize]}" #validated page_link='' -[ -n "$info" ] && page_link="i=$(urlsave "$info")&" +[ -n "$info" ] && page_link="i=$(urlsafe "$info")&" [ -n "$order" ] && page_link="${page_link}o=${order}&" [ -n "$search" ] && page_link="${page_link}s=${search}&" [ -n "$filter" ] && page_link="${page_link}f=${filter}&" -page_prev="${page_link}p=$([ "$page" = 0 ] && echo 0 || echo $(($page - 1)) )" -page_next="${page_link}p=$(($page + 1))" -page_this="${page_link}p=$page" +page_prev="${page_link}pn=$([ "$page" -le "$pagesize" ] && echo 1 || echo $(($page - $pagesize)) )" +page_next="${page_link}pn=$(($page + $pagesize))" +page_this="${page_link}pn=$page" taglist=$( [ -r ${_DATA}/cache/taglist ] && cat ${_DATA}/cache/taglist ||\ @@ -49,8 +49,8 @@ _printVideo(){ else videofile="${_DATA}/videos/$info" thumb="${_DATA}/thumbs/$info.jpg" - [ -r "$meta" ] || ${_EXEC}/helpers/genmeta.sh "$videofile" "$meta" - [ -r "$thumb" ] || ${_EXEC}/helpers/genthumb.sh "$videofile" "$thumb" + [ -r "$meta" ] || ${_EXEC}/helpers/genmeta.sh "$videofile" "$meta" >/dev/null + [ -r "$thumb" ] || ${_EXEC}/helpers/genthumb.sh "$videofile" "$thumb" >/dev/null head -n1 "$meta" |read length width height filename [ -z "$length" ] && length=0 @@ -58,84 +58,65 @@ _printVideo(){ [ -z "$height" ] && height=0 tags="$(sed -n 2p "$meta")" - video="$(urlsave "videos/$info")" - thumb="$(urlsave "thumbs/$info.jpg")" - linkinfo="$(urlsave "$info")" + video="$(urlsafe "videos/$info")" + thumb="$(urlsafe "thumbs/$info.jpg")" + linkinfo="$(urlsafe "$info")" + htmlinfo="$(htmlsafe "$info")" - [ "$(($length % 60))" -lt 10 ] &&\ - minutes="$(($length / 60)):0$(($length % 60))" ||\ - minutes="$(($length / 60)):$(($length % 60))" - - rpiaddr="$(host pfostenpanne |sed -r 's;^.* ([0-9\.]+)$;\1;')" - rpidull="http://${rpiaddr}/?player=play&path=http://jupiter:8000/${video}" - rpicgi="http://${rpiaddr}/?player=play&path=$(urlsave "http://jupiter:8000/?action=transcode&i=${linkinfo}&t=480")" - - [ $height -gt 480 -a $width -gt 480 ] && \ - raspi="RasPi" \ - || raspi="RasPi" - [ $height -gt 480 ] && \ - alt480="480p" \ - ||unset alt480 - [ $height -gt 240 ] && \ - alt240="240p" \ - ||unset alt240 + [ "$(($length % 60))" -lt 10 ] && minutes="$(($length / 60)):0$(($length % 60))" \ + || minutes="$(($length / 60)):$(($length % 60))" tee "$cache" < - + Preview not yet available - $info - ${alt480} ${alt320} ${alt240} ${raspi}
+

${htmlinfo}

- + ${minutes}min ${width}x${height} - $(echo -E "$tags" |sed -r 's:\|*([^|]+)\|*:\1:g') - + $(printf %s "$tags" |sed -r 's:\|*([^|]+)\|*: \1:g') + VIDEOend fi } -_by_name(){ find ${_DATA}/videos/ -mindepth 1 -maxdepth 1 -printf '%f\n' |sort |egrep -i "$file_pattern" } -_by_date(){ ls -c ${_DATA}/videos/ |egrep -i "$file_pattern" } -_by_length(){ find ${_DATA}/by_length/ -mindepth 1 -maxdepth 1 -printf '%f\n' |sort |sed -r 's:[0-9]{5} - ::' } +genlist(){ + case "$order" in + Date) ls -c ${_DATA}/videos/ |egrep -i "$file_pattern";; + Length) sed -sn 1p "${_DATA}/meta/"*.meta |sort -n |sed -r 's;^[0-9\t]+\t;;';; + Name) printf '%s\n' "${_DATA}/meta/"*meta |sed -r 's;^.*/;;;s;\.meta$;;';; + esac +} thumblist() { - cache="${_DATA}/cache/?o=${order}&s=${search}&f=${filter}&p=${page}" + cache="${_DATA}/cache/${pagesize}?o=${order}&s=${search}&f=${filter}&pn=${page}" if [ "$cache" -nt ${_DATA}/videos -a "$cache" -nt ${_DATA}/meta ]; then cat "$cache" else - filterex="q0" - for each in $(sed 's,\^, ,g' <<<"$filter"); do - if egrep -q '^!' <<<"$each"; then - this="$(sed 's,^!,,' <<<"$each")" - filterex="/${this}/q1;{${filterex}}" - else - filterex="/${each}/{${filterex}}" - fi + filterex="s;^([0-9]+\t){3}(.+)\n.*$;\2;p" + printf '%s\n' "$filter" |tr '^' '\n' \ + | while read each; do + [ "${each:0:1}" = '!' ] && filterex="/^[^\n]+\n(.*\|)?(${each#?})(\|.*)?$/d;{${filterex}}" \ + || filterex="/^[^\n]+\n(.*\|)?(${each})(\|.*)?$/{${filterex}}" done - - case "$order" in - Date) genlist="_by_date" - ;; - Length) genlist="_by_length" - ;; - *) genlist="_by_name" - ;; - esac - if [ -n "$search" ] ; then - #$genlist |egrep -i "$search" - $genlist |sed -rn 's:^(.+)$:'"${_DATA}"'/meta/\1'.meta':p' |xargs -d\\n egrep -sil "$search" |sed -rn 's:^(.*/)+([^/]+)\.meta$:\2:p' + genlist \ + | if [ -n "$search" ] ; then + xargs -d '\n' printf "${_DATA}/meta/%s.meta\n" \ + | xargs -d '\n' egrep -sil "$search" \ + | sed -r 's;^.*/;;;s;\.meta$;;' elif [ "$filterex" != "q0" ]; then - $genlist |while read video; do - [ -r "${_DATA}/meta/$video.meta" ] && sed -rn "2{$filterex;q1}" "${_DATA}/meta/$video.meta" && echo -E "$video" - done + xargs -d '\n' printf "${_DATA}/meta/%s.meta\n" \ + | xargs -d '\n' sed -srn ":a;N;2!ba;{${filterex}}" else - $genlist - fi |sed -n $(($page * $pagesize + 1)),$(($page * $pagesize + $pagesize))p |tee "$cache" - fi | while read line; do + cat + fi \ + | sed -n "$page,$(($page + $pagesize - 1))p" \ + | tee "$cache" + fi \ + | while read line; do _printVideo "$line" done }