From cdb3e3cbc4b7b2009d88833b3a802e73c0213f4c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Paul=20H=C3=A4nsch?= Date: Mon, 6 Aug 2018 19:37:48 +0200 Subject: [PATCH] code improvements --- index.cgi | 16 ++++++------ thumbnail.sh | 70 +++++++++++++++++++++++++--------------------------- 2 files changed, 42 insertions(+), 44 deletions(-) diff --git a/index.cgi b/index.cgi index 421b81e..4d7e8aa 100755 --- a/index.cgi +++ b/index.cgi @@ -42,6 +42,10 @@ case $ACTION in fi REDIRECT "$(POST ref)" ;; + multitag) + . "$_EXEC/multitag.sh" + REDIRECT "$(POST ref)" + ;; esac if [ "$ITEM" = "/style.css" ]; then @@ -53,14 +57,14 @@ elif [ "$ITEM" = "/stereoview.js" ]; then FILE "$_EXEC/stereoview.js" elif [ -f "$_DATA/$ITEM" ]; then case $ACTION in - tag) - ;; thumbnail) . "$_EXEC/cgilite/file.sh" + . "$_EXEC/thumbnail.sh" index="$_DATA/${ITEM%/*}/.index" thumb="$index/${ITEM##*/}"; thumb="${thumb%.*}.jpg" - [ -d "$index" -a \! -f "$thumb" ] \ - && file="$_DATA/$ITEM" . "$_EXEC/thumbnail.sh" + [ -d "$index" -a ! -f "$thumb" ] \ + && { printf %s "$ITEM" |grep -qE -e "${file_pattern}" ;} \ + && gen_thumb "$_DATA/$ITEM" "$thumb" FILE "$thumb" ;; delete) @@ -85,10 +89,6 @@ elif [ -d "$_DATA/$ITEM" ]; then fi REDIRECT "$(POST ref)" ;; - multitag) - . "$_EXEC/multitag.sh" - REDIRECT "$(POST ref)" - ;; *) . "$_EXEC/list.sh" ;; esac diff --git a/thumbnail.sh b/thumbnail.sh index 4e3fd3f..1430776 100644 --- a/thumbnail.sh +++ b/thumbnail.sh @@ -1,44 +1,42 @@ #!/bin/sh -# Use: $index $thumb $file_pattern +[ -n "$include_thumbnails" ] && return 0 +include_thumbnails="$0" -if [ \! -e "$thumb" ] && { printf %s "$file" |grep -qE "$file_pattern"; }; then - read l h w <<__EOF - $(printf '' \ - | mplayer -input nodefault-bindings -nosound -vo null -identify -frames 0 "$file" 2>&- \ - | sort | sed -rn ' - s:ID_LENGTH=(.*)(\..*)$:\1:p; - s:ID_VIDEO_HEIGHT=(.*):\1:p; - s:ID_VIDEO_WIDTH=(.*):\1:p;' \ - | tr '\n' ' ' - ) -__EOF +gen_thumb(){ + file="$1"; thumb="$2"; - [ "$((h * 1000 / w))" -gt "750" ] \ - && w="$((75 * w / h))" || w=100 - chunk="$((${l:-10} / 5))" + if [ ! -e "$thumb" ] && [ -f "$file" ]; then + l="$( + printf '' \ + | mplayer -input nodefault-bindings -nosound -vo null -identify -frames 0 "$file" 2>&- \ + | sed -rn 's:ID_LENGTH=(.*)(\..*)$:\1:p;' \ + )" - tmp="$(mktemp -d)" - for cnt in 1 2 3 4; do + chunk="$((${l:-10} / 5))" + + tmp="$(mktemp -d)" + for cnt in 1 2 3 4; do + printf '' \ + | mplayer -input nodefault-bindings -nosound -benchmark \ + -noconfig all -really-quiet \ + -frames 1 -ss "$((cnt * chunk))" \ + -vf framestep=I \ + -vo jpeg:quality=100:outdir="${tmp}" \ + "$file" 2>&- + mv "${tmp}/00000001.jpg" "${tmp}/_${cnt}.jpg" + done printf '' \ | mplayer -input nodefault-bindings -nosound -benchmark \ -noconfig all -really-quiet \ - -frames 1 -ss "$((cnt * chunk))" \ - -vf "framestep=I,scale=${w}:-2" \ - -vo "jpeg:quality=100:outdir=${tmp}" \ - "$file" 2>&- - mv "${tmp}/00000001.jpg" "${tmp}/_${cnt}.jpg" - done - printf '' \ - | mplayer -input nodefault-bindings -nosound -benchmark \ - -noconfig all -really-quiet \ - -vf scale=159:-2,tile=2:2:4:0:2 \ - -vo "jpeg:quality=96:outdir=${tmp}"\ - "mf://$tmp/_*.jpg" 2>&- - - mv "${tmp}/00000001.jpg" "$thumb" - rm -r "${tmp}" - -elif [ \! -e "$thumb" ]; then - touch "$thumb" -fi + -vf scale=159:-2,tile=2:2:4:0:2 \ + -vo jpeg:quality=96:outdir="${tmp}"\ + "mf://$tmp/_*.jpg" 2>&- + + mv "${tmp}/00000001.jpg" "$thumb" + rm -r "${tmp}" + + elif [ ! -e "$thumb" ]; then + touch "$thumb" + fi +} -- 2.39.2