#!/bin/bash
############################################################################################
# Taltan - http://www.taltan.fr - ola.taltan_AT_laposte.net                                #
############################################################################################
# Script exif_photos_rename_v1.0.sh                                                        #
# Licence : GNU / GPL                                                                      #
############################################################################################
# Renomme les photos selon les données EXIF sous la forme :                                #
# ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.ext  => ex : 2006-11-04_19.41_007.jpg           #
# Fonctionne pour une numérotation de 001 à 999                                            #
############################################################################################
# Dépendances                                                                              #
############################################################################################
#  - Nécessite le paquet imagemagick : http://doc.ubuntu-fr.org/imagemagick                #
#  - Nécessite le paquet zenity                                                            #
#    => sudo apt-get install imagemagick zenity                                            #
############################################################################################
# 15/07/07 - v1.0 - Création                                                               #
############################################################################################
##Variables
nb_param="$#" 
numParam=1 
erreur=0
##
if [ "$#" -eq 0 ]; then
	zenity --error --title="error" --text="Selectioner au moins 1 fichier"
	exit 1
fi

for parametre in "$@";
do
	old_name="$parametre"
	date_time=`identify -format "%[EXIF:DateTime]" "$parametre"`
	extension=`echo $parametre | awk -F "." '{print $NF}'`	
	aa=`echo $date_time | cut -d: -f1`
	mm=`echo $date_time | cut -d: -f2`
	jj=`echo $date_time | cut -d: -f3 | cut -c1-2`
	hh=`echo $date_time | cut -d: -f3 | cut -c4-5`
	min=`echo $date_time | cut -d: -f4`

	if [ $numParam -gt 0 ] && [ $numParam -lt 10 ]; then
		numero=00$numParam
	fi
	if [ $numParam -gt 9 ] && [ $numParam -lt 100 ]; then
		numero=0$numParam
	fi
	if [ $numParam -gt 100 ] ; then
		numero=$numParam
	fi		
	new_nane=`echo ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.${extension}`
	cp "$old_name" "${new_nane}"
	if [ $? = 0 ] ; then	
		echo "${old_name} => ${new_nane} .... OK"
		rm -f "$old_name"
	else
		echo "Impossible de renommer $old_name .... NOK"
		let $[erreur += 1]
	fi

let $[numParam += 1]
	if [ $numParam -gt "$#" ] ; then
		nb_renomme=$(( $nb_param - $erreur ))
		echo "-----------------------------------------"		
		echo "Fin de traitement : $# fichiers "
		echo "-----------------------------------------"
		echo "Fichiers renommes : $nb_renomme"
		echo "Fichiers en erreur : $erreur"
		echo "-----------------------------------------"
		echo "OK, vous pouvez fermer !"
	fi
done | zenity --text-info --title "exif_photos_rename" --width=500 --height=500
