#!/bin/bash
# renamePictures.sh
# By neo73 [at] rooot [dot] net - Last modified july 2010
# Rename pictures in a folder.
# This script requires libimage-exiftool-perl.
# USE AT YOUR OWN RISK

PICT_EXT=jpg
adjustTs=0
adjustSign='+'
function usage {
  echo "Usage: $0 [-d <YYYY-MM-DD hh:mm:ss> <reference_file>] <folder>"
  exit
}

if [ $# -lt 1 ]; then
    usage
fi
if [ $# -gt 1 ]; then
    if [ "$1" != "-d" ]; then
        usage
    fi
    if [ ! $# -eq 4 ]; then
        usage
    fi
    
    referenceDate=$2
    referenceFile=$3
    if [ ! -f "$referenceFile" ]; then
        echo "Error: \"$referenceFile\" is not a file"
    fi
    dir=$4

    referenceTs=`date -d "$referenceDate" +%s`

    myDate=`exiftool -TAG -CreateDate "$referenceFile" -d "%Y-%m-%d %H:%M:%S" -s -s -s`
    myTs=`date -d "$myDate" +%s`

    adjustTs=$(($referenceTs - $myTs))
    if [ $adjustTs -lt 0 ]; then
        adjustSign='-'
        adjustTs=$((-$adjustTs))
    fi
else
    dir=$1
fi

if [ ! -d "$dir" ]; then
  echo "Error: \"$dir\" is not a folder"
  exit 0
fi

cd "$dir"


# fix picture dates
exiftool -AllDates${adjustSign}="::$adjustTs" -overwrite_original .

# rename pictures
exiftool '-FileName<${CreateDate}.jpg' -d %Y%m%d_%H%M%S *.$PICT_EXT
