From: Lizzy Fleckenstein Date: Sat, 29 Apr 2023 20:44:47 +0000 (+0200) Subject: gen-thumbs: generate video thumbnails X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=27d57f53f2fc213b5eafd3935a860de53c560856;p=dirlistozxa.git gen-thumbs: generate video thumbnails --- diff --git a/gen-thumbs b/gen-thumbs index 13bffe1..934be30 100755 --- a/gen-thumbs +++ b/gen-thumbs @@ -2,13 +2,37 @@ # Generates thumbs -if [ "$1" != "" ]; then - target_file=.thumbs/$(basename -- "$1") - if [ "$1" -nt "$target_file" ]; then - echo "update $target_file" - mogrify -path .thumbs/ -auto-orient -thumbnail 128x128 -quality 90% "$1" +if [[ "$1" != "" ]]; then + if [[ -L "$1" ]]; then + exit + fi + + src="$1" + base=$(basename -- "$src") + dst=".thumbs/$base" + + if [[ "$src" -nt "$dst" ]]; then + echo "update $dst" + + if [[ "$src" == *.mp4 ]] || [[ "$src" == *.gif ]]; then + dst_tmp="/tmp/$base.png" + rm -f "$dst_tmp" + + ffmpeg -hide_banner -loglevel error -i "$src" -ss 00:00:00.000 -vframes 1 "$dst_tmp" + src="$dst_tmp" + + dst_tmp="/tmp/$base" + mv "$src" "$dst_tmp" + src="$dst_tmp" + fi + + mogrify -path .thumbs/ -auto-orient -thumbnail 128x128 -quality 90% "$src" + + rm -f "$dst_tmp" fi else mkdir -p .thumbs - find -not -path "./.thumbs/*" \( -iname "*.png" -or -iname "*.jpg" -or -iname "*.jpeg" -or -iname "*.jfif" -or -iname "*.gif" -or -iname "*.webp" \) | parallel -j$(nproc) "$0" {} + find -type f -not -path "./.thumbs/*" \ + | grep -iE "\.png$|\.jpg$|\.jpeg$|\.jfif$|\.gif$|\.webp$|\.mp4$" \ + | parallel -j$(nproc) "$0" {} fi