#!/bin/zsh music=/stuff/music thumbs="$HOME/.fvwm/.thumbs" if [ ! -d "$thumbs" ]; then mkdir "$thumbs" || exit 1 fi size="x128" printimg="" ismusic="" while [ "${1#--}" != "$1" -a "$1" != "-" ]; do if [ "$1" = "--small" ]; then size="56" elif [ "$1" = "--size" ]; then size="$2" shift elif [ "$1" = "--music" ]; then ismusic="yes" elif [ "$1" = "--image" ]; then printimg="yes" else echo "unrecognised option: $1" 1>&2 exit 1 fi shift done [ "$1" = "-" ] && shift if ! expr match "$size" '^\([0-9]*\(x[0-9]\+\)\?\)$' >/dev/null 2>&1; then echo "invalid size specification: $size" 1>&2 exit 1 fi if [ -z "$1" ]; then echo "usage: thumbnail.zsh [--small|--size ] [--image] [--music] path" 1>&2 exit 1 fi if [ -n "$ismusic" ]; then imgpath="$music/`dirname "${1#$music}"`/cover.jpg" [ ! -f "$imgpath" ] && imgpath="${imgpath%jpg}png" else imgpath="$1" fi [ ! -f "$imgpath" ] && exit 0 image="$(readlink -f -- "$imgpath")" [ ! -f "$image" ] && exit 0 thumb="$thumbs/`echo -n $image | md5sum - | cut -d ' ' -f 1`_$size.png" if [ -f "$thumb" ]; then mtime_s="`stat -c %Y -- "$image"`" mtime_t="`stat -c %Y -- "$thumb"`" if [ "$mtime_s" -gt "$mtime_t" ]; then convert -scale "$size" "$image" "$thumb" fi else convert -scale "$size" "$image" "$thumb" fi echo "$thumb" [ -n "$printimg" ] && echo "$image" exit 0