X-Git-Url: http://git.plutz.net/?p=serve0;a=blobdiff_plain;f=thumbnail.sh;h=143077640c049f1c35dbfbc0584607855cf6986a;hp=4e3fd3fb6298c4fcecef63f362d8edd7290a2ba2;hb=cdb3e3cbc4b7b2009d88833b3a802e73c0213f4c;hpb=fd407665aaedc1bea44ac34ec1440fa2e9cf8795 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 +}