#!/bin/bash
############################################################################################
# Taltan - http://www.taltan.fr - ola.taltan_AT_laposte.net                                #
# modifié par Batchajan - batchajan_AT_laposte.net                                         #
############################################################################################
# Script exiftool_v1.0.sh                                                                  #
# Licence : GNU / GPL                                                                      #
############################################################################################
# Renomme les photos selon les données EXIF sous la forme :                                #
# ${aaaa}_${mm}_${jj}-${hh}_${min}_${sec}-${nom-de-fichier}                                #
# => ex : 2006_11_04-19_41_54-IMG_7401.jpg                                                 #
# et de les classer dans les répertoire selon année et mois selon ${aaaa}/${aaaa}-${mm}    #
############################################################################################
# Dépendances                                                                              #
############################################################################################
#  - Nécessite le paquet exiftool : http://www.sno.phy.queensu.ca/~phil/exiftool           #
#  - Nécessite le paquet zenity : http://library.gnome.org/users/zenity/index.html.fr      #
#    => sudo apt-get install zenity libimage-exiftool-perl                                 #
############################################################################################
# 23/06/08 - v1.0 - Création                                                               #
############################################################################################
##Variables
nb_param="$#"
numParam=1
erreur=0
exist=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=`exiftool "$parametre" | grep "Create Date"`
	file_name=`exiftool "$parametre" | grep "File Name" | cut -d: -f2 | cut -c2-`
	aaaa=`echo $date_time | cut -d: -f2 | cut -c2-5`
	mm=`echo $date_time | cut -d: -f3`
	jj=`echo $date_time | cut -d: -f4 | cut -c1-2`
	hh=`echo $date_time | cut -d: -f4 | cut -c4-5`
	min=`echo $date_time | cut -d: -f5`
	sec=`echo $date_time | cut -d: -f6`
	date_time=`echo ${aaaa}_${mm}_${jj}-${hh}_${min}_${sec}`
	new_nane=`echo ${date_time}-${file_name}`
	control=`echo $old_name | cut -c1-19`
	rep_pere=`echo ${aaaa}`
	rep_fils=`echo ${aaaa}_${mm}`

	if [ $control = $date_time ] # pour éviter re_re_nommage
	then
		echo "${old_name} existe déjà => ..PASSE"
		let $[exist += 1]

	elif [ $control != $aaaa ] 
	then
		mkdir "${rep_pere}" "${rep_pere}/${rep_fils}"
		cp "$old_name" "${rep_pere}/${rep_fils}/${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
	fi
let $[numParam += 1]
	if [ $numParam -gt "$#" ] ; then
		nb_renomme=$(( $nb_param - $erreur - $exist))
		echo "-----------------------------------------"
		echo "Fin de traitement : $# fichiers "
		echo "-----------------------------------------"
		echo "Fichiers renommés	: $nb_renomme"
		echo "Fichiers non traités	: $exist"
		echo "Fichiers en erreur	: $erreur"
		echo "-----------------------------------------"
		echo "OK, vous pouvez fermer !"
	fi
done | zenity --text-info --title "exif_photos_rename" --width=500 --height=500

