#!/bin/bash
############################################################################################
# Taltan - http://www.taltan.fr - ola.taltan_AT_laposte.net                                #
############################################################################################
# Script exif_photos_rename_v1.1.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                                                               #
# 27/07/07 - v1.1 - Réorganisation                                                         #
#                 - Choix du début de numérotation, par défaut à 1                         #
############################################################################################
## Variables
nb_param="$#" 
erreur=0

## Fonctions début de numérotation
début_numerot ()
{
	  	numParam=`zenity --title "Début de numérotation" --entry-text="1" --entry --text "Par défaut à 1, à modifier le cas échéant :"`
		if  [ $? != 0 ]; then
			exit 1
		fi
			[ $? -ne 0 ] && exit 2 # Annulation
}

## Fonctions renommage des fichiers
rename_jpeg ()
{
	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]
	done
	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 !"
}

## Traitement
if [ "$#" -eq 0 ]; then
	zenity --error --title="error" --text="Selectioner au moins 1 fichier"
	exit 1
fi
début_numerot
rename_jpeg "$@" | zenity --text-info --title "exif_photos_rename" --width=500 --height=500

