#!/bin/sh
cd $(dirname "$0")
UPDATE=$1;
SIZE=200
[ -z $UPDATE ] && rm -f thumb.*
[ -n $UPDATE ] && GREPCMD="grep -v '\./thumb\.'" || GREPCMD=cat
rm -f .tmp.png
#./unrotate-jpeg.sh
NBI=$(find . -type f -iname '*.jpg' -o -type f -iname '*.jpeg' -o -type f -iname '*.png' -o -type f -iname '*.gif' | eval $GREPCMD | wc -l)
NBV=$(find . -type f -iname '*.avi' -o -type f -iname '*.mkv' -o -type f -iname '*.mp4' | eval $GREPCMD | wc -l)
NB=$(($NBI + $NBV))
I=0
export I
find . -type f -iname '*.jpg' -o -type f -iname '*.jpeg' -o -type f -iname '*.png' -o -type f -iname '*.gif' | eval $GREPCMD | sort | while read f; do
  f=$(basename "$f")
  [ -n $UPDATE -a -e thumb."$f".png ] && continue
  I=$(($I + 1))
  echo "$f ($I/$NB)"
  wh=$(identify -format '%G' "$f")
  w=$(echo $wh|cut -dx -f1)
  h=$(echo $wh|cut -dx -f2)
  if [ $h -gt $w ]; then
    MOD='x'
  else
    MOD=''
  fi
  convert -thumbnail $MOD$SIZE -page +4+4 "$f" -matte \( +clone -background black -shadow 60x4+4+4 \) +swap -background none -mosaic thumb."$f".png
done
find . -type f -iname '*.avi' -o -type f -iname '*.mkv' -o -type f -iname '*.mp4' | eval $GREPCMD | sort | while read f; do
  f=$(basename "$f")
  [ -n $UPDATE -a -e thumb."$f".png ] && continue
  I=$(($I + 1))
  echo "$f ($I/$NB)"
  ffmpegthumbnailer -i "$f" -o .tmp.png -s 0
  wh=$(identify -format '%G' .tmp.png)
  w=$(echo $wh|cut -dx -f1)
  h=$(echo $wh|cut -dx -f2)
  if [ $h -gt $w ]; then
    MOD='x'
  else
    MOD=''
  fi
  convert -thumbnail $MOD$SIZE -page +4+4 .tmp.png -matte \( +clone -background navy -shadow 60x4+4+4 \) +swap -background none -mosaic thumb."$f".png
  rm .tmp.png
done

