#!/bin/zsh if [[ -z "$MUSIC" ]]; then MUSIC=/home/music fi thumbs="$HOME/.fvwm/.thumbs" if ! [[ -d "$thumbs" ]]; then mkdir "$thumbs" || exit 1 fi size="x128" printimg="" ismusic="" while [[ "${1#--}" != "$1" && "$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 ! [[ "$size" =~ '^([0-9]*(x[0-9]+)?)$' ]]; 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