X-Git-Url: http://git.plutz.net/?a=blobdiff_plain;f=pages%2Fcommon.sh;h=75320556d326e92366c5a86515f067b8d0978be9;hb=d716f2ce1fe64cf87f777490315bc51906001c72;hp=4242aab3807ae9738ba86f4a79d6ad42bab84762;hpb=6b08e359a06ed38d25c1756e5600096c77417a9c;p=serve0 diff --git a/pages/common.sh b/pages/common.sh index 4242aab..7532055 100755 --- a/pages/common.sh +++ b/pages/common.sh @@ -22,9 +22,10 @@ search="${_GET[s]}" order="${_GET[o]}" #validated page="${_GET[pn]}" #validated pagesize="${_COOKIE[pagesize]}" #validated +pagecount=0 -page_link='' -[ -n "$info" ] && page_link="i=$(urlsafe "$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}&" @@ -32,44 +33,71 @@ page_link='' page_next="${page_link}pn=$(($page + $pagesize))" page_this="${page_link}pn=$page" -taglist=$( -if [ -r ${_DATA}/cache/taglist ]; then - cat ${_DATA}/cache/taglist -else - truncate -s0 ${_DATA}/cache/taglist - truncate -s0 ${_DATA}/cache/tagnorm - (for each in ${_DATA}/meta/*.meta; do - sed -n '2s:|:\n:gp' "$each" - done \ - | 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 - printf \\n - ) | while read x tag; do - topcnt=$(grep "${tag%%:*}" ${_DATA}/cache/taglist |wc -l) - [ $topcnt -lt 10 ] \ - && printf %s\\n "$tag" >>${_DATA}/cache/taglist \ - || printf %s\\n "$tag" >>${_DATA}/cache/tagnorm - done - cat ${_DATA}/cache/taglist - sort ${_DATA}/cache/tagnorm \ - | tee -a ${_DATA}/cache/taglist - rm ${_DATA}/cache/tagnorm -fi +taglist_set=$( + if [ -r ${_DATA}/cache/taglist_set ]; then + cat ${_DATA}/cache/taglist_set + else + 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 + + cat ${_DATA}/cache/taglist_set + sort ${_DATA}/cache/tagnorm \ + | tee -a ${_DATA}/cache/taglist_set + rm ${_DATA}/cache/tagnorm + fi +) + +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 + + cat ${_DATA}/cache/taglist_filter + sort ${_DATA}/cache/tagnorm \ + | tee -a ${_DATA}/cache/taglist_filter + rm ${_DATA}/cache/tagnorm + fi ) list_categories(){ printf none\\n - printf %s "$taglist" |sed -rn 's;^([^:]+):.*$;\1;p' |sort -u + printf %s "$taglist_filter" |sed -rn 's;^([^:]+):.*$;\1;p' |sort -u } genthumb(){