X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=pages%2Fcommon.sh;h=75320556d326e92366c5a86515f067b8d0978be9;hb=d716f2ce1fe64cf87f777490315bc51906001c72;hp=b424dff0a914c360052a54e6dbf3f3b69422c0be;hpb=d0b44dc7ebbb28086c66506cbf40b8df32163796;p=serve0 diff --git a/pages/common.sh b/pages/common.sh index b424dff..7532055 100755 --- a/pages/common.sh +++ b/pages/common.sh @@ -1,6 +1,6 @@ #!/bin/zsh -# Copyright 2014, 2015 Paul Hänsch +# Copyright 2014 - 2016 Paul Hänsch # # This file is part of Serve0. # @@ -19,123 +19,98 @@ filter="${_GET[f]}" search="${_GET[s]}" -order=$(echo -E "${_GET[o]}" |egrep '^(Name|Date|Length)$') -page=$(echo -E "${_GET[pn]}" |egrep '^[0-9]+$') -[ -z "$page" ] && page=0 +order="${_GET[o]}" #validated +page="${_GET[pn]}" #validated +pagesize="${_COOKIE[pagesize]}" #validated +pagecount=0 -page_link='' -[ -n "$info" ] && page_link="i=$(urlsave "$info")&" +#page_link='' +[ -n "$info" ] && page_link="${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}pn=$([ "$page" = 0 ] && echo 0 || echo $(($page - 1)) )" -page_next="${page_link}pn=$(($page + 1))" +[ "$page" -le "$pagesize" ] && page_prev="${page_link}pn=1" || page_prev="${page_link}pn=$(($page - $pagesize))" +page_next="${page_link}pn=$(($page + $pagesize))" page_this="${page_link}pn=$page" -taglist=$( - [ -r ${_DATA}/cache/taglist ] && cat ${_DATA}/cache/taglist ||\ - for each in ${_DATA}/meta/*.meta; do - sed -n '2s:|:\n:gp' "$each" - done |sort -u |grep -xv '' |tee ${_DATA}/cache/taglist -) - -_printVideo(){ - info="$1" - cache="${_DATA}/cache/$info.cache" - meta="${_DATA}/meta/$info.meta" - - if [ "$cache" -nt "$meta" ]; then - cat "$cache" +taglist_set=$( + if [ -r ${_DATA}/cache/taglist_set ]; then + cat ${_DATA}/cache/taglist_set 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" + truncate -s0 ${_DATA}/cache/taglist_set + truncate -s0 ${_DATA}/cache/tagnorm + + ( sed -sn '2s;|;\n;gp' "${_DATA}/meta/"*.meta \ + | sort + printf \\n + ) | while read tag; do + if [ "$tag" = "$lasttag" ]; then + tagcount=$(( ${tagcount:-0} + 1 )) + else + [ -n "$lasttag" ] && printf '%s\t%s\n' "$tagcount" "$lasttag" + tagcount=1 + fi + lasttag="$tag" + done \ + | sort -rn \ + | while read x tag; do + topcnt=$(grep -c "${tag%%:*}" ${_DATA}/cache/taglist_set) + [ $topcnt -lt 10 ] \ + && printf %s\\n "$tag" >>${_DATA}/cache/taglist_set \ + || printf %s\\n "$tag" >>${_DATA}/cache/tagnorm + done - head -n1 "$meta" |read length width height filename - [ -z "$length" ] && length=0 - [ -z "$width" ] && width=0 - [ -z "$height" ] && height=0 + cat ${_DATA}/cache/taglist_set + sort ${_DATA}/cache/tagnorm \ + | tee -a ${_DATA}/cache/taglist_set + rm ${_DATA}/cache/tagnorm + fi +) - tags="$(sed -n 2p "$meta")" - video="$(urlsave "videos/$info")" - thumb="$(urlsave "thumbs/$info.jpg")" - linkinfo="$(urlsave "$info")" +taglist_filter=$( + if [ -r ${_DATA}/cache/taglist_filter ]; then + cat ${_DATA}/cache/taglist_filter + else + truncate -s0 ${_DATA}/cache/taglist_filter + truncate -s0 ${_DATA}/cache/tagnorm + + sed -sn '2s;|;\n;gp' "${_DATA}/meta/"*.meta \ + | sort -u \ + | while read tag; do + cnt="$(grep -cF "$tag" ${_DATA}/meta/recent)" + printf '%s\t%s\n' "$cnt" "$tag" + done \ + | sort -rn \ + | while read x tag; do + topcnt=$(grep -c "${tag%%:*}" ${_DATA}/cache/taglist_filter) + [ $topcnt -lt 10 ] \ + && printf %s\\n "$tag" >>${_DATA}/cache/taglist_filter \ + || printf %s\\n "$tag" >>${_DATA}/cache/tagnorm + done - [ "$(($length % 60))" -lt 10 ] &&\ - minutes="$(($length / 60)):0$(($length % 60))" ||\ - minutes="$(($length / 60)):$(($length % 60))" + cat ${_DATA}/cache/taglist_filter + sort ${_DATA}/cache/tagnorm \ + | tee -a ${_DATA}/cache/taglist_filter + rm ${_DATA}/cache/tagnorm + fi +) - rpiaddr="pfostenpanne.helmchyn.no-ip.biz" - 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")" +list_categories(){ + printf none\\n + printf %s "$taglist_filter" |sed -rn 's;^([^:]+):.*$;\1;p' |sort -u +} - [ $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 +genthumb(){ + videofile="$1" + thumb="$2" - tee "$cache" < - - - - $info - ${alt480} ${alt320} ${alt240} ${raspi}
- - - ${minutes}min - ${width}x${height} - $(echo -E "$tags" |sed -r 's:\|*([^|]+)\|*:\1:g') - -VIDEOend - fi + nohup nice -10 "${_EXEC}"/helpers/genthumb.sh "$videofile" "$thumb" >/dev/null 2>/dev/null & + #printf '%s\n' "${_EXEC}/helpers/genthumb.sh '$videofile' '$thumb' >/dev/null 2>/dev/null" \ + #| batch } +genmeta(){ + videofile="$1" + meta="$2" -_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} - ::' } - -thumblist() { - cache="${_DATA}/cache/?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 - 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' - elif [ "$filterex" != "q0" ]; then - $genlist |while read video; do - [ -r "${_DATA}/meta/$video.meta" ] && sed -rn "2{$filterex;q1}" "${_DATA}/meta/$video.meta" && printf '%s\n' "$video" - done - else - $genlist - fi |sed -n $(($page * $pagesize + 1)),$(($page * $pagesize + $pagesize))p |tee "$cache" - fi | while read line; do - _printVideo "$line" - done + "${_EXEC}"/helpers/genmeta.sh "$videofile" "$meta" >/dev/null }