Monthly Archives

août 2011

Renommer des photos selon les données EXIF

By | Non classé

top

Un petit script bien pratique pour se simplifier la vie avec les noms de fichiers photo et leur classement : renommer des photos selon les données EXIF date et heure de prise de vue.
Merci à l’auteur.
Source : Taltan.blog.bkp

#!/bin/bash
############################################################################################
# Taltan – http://www.taltan.fr – ola.taltan_AT_laposte.net #
############################################################################################
# Script exif_photos_rename_v1.2.sh #
# Licence : GNU / GPL #
############################################################################################
# Renomme les photos selon les données EXIF sous la forme : #
# ${aa}-${mm}-${jj}_${hh}.${min}_${numero}.ext => ex : 20061104_19.41_007.jpg #
# Fonctionne pour une numérotation de 001 à 999 #
############################################################################################
# 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 libimage-exiftool-perl 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 #
# 09/07/08 – v1.2 – Remplacement de imagemagick par exiftool pour le traitement #
# – Ajout boîte de dialogue de barre de progression en pourcentage #
############################################################################################
## Variables
nb_param= »$# »
erreur=0
typeset -i CNT=1
typeset -i CUR=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=`exiftool « $parametre » | grep « Create Date »`
extension=`echo $parametre | awk -F « . » ‘{print $NF}’`
aa=`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`
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 » >> /tmp/exif_photos_rename.log
rm -f « $old_name »
else
echo « Impossible de renommer $old_name …. NOK » >> /tmp/exif_photos_rename.log
let $[erreur += 1] fi
CUR=$CNT*100/$nb_param
echo $CUR
echo « #Traitement de $nb_param photos\n${old_name} => ${new_nane} … en cours\n\nAvancement: $CUR %\n  »
CNT=$CNT+1
let $[numParam += 1] done
nb_renomme=$(( $nb_param – $erreur ))
if [ $erreur != 0 ] ; then
touch /tmp/exif_photos_rename.err
echo « #Fin de traitement : $nb_param fichiers\n\nFichiers renommés : $nb_renomme\nFichiers impossible à renommer : $erreur\n\n _!!_ Cliquer sur Valider pour afficher le rapport de traitement _!!_\n »

else
echo « #Fin de traitement : $nb_param fichiers\n\nFichiers renommés : $nb_renomme\nFichiers impossible à renommer : $erreur\n\nOK, vous pouvez fermer en cliquant sur Valider !\n »
fi
}

## Fonctions affichage du rapport de traitement
affich_log ()
{
if [ -f /tmp/exif_photos_rename.err ] ; then
cat /tmp/exif_photos_rename.log | zenity –text-info –title « /tmp/exif_photos_rename.log » –width=500 –height=500
fi
rm -f /tmp/exif_photos_rename.log
rm -f /tmp/exif_photos_rename.err
}

## Traitement
if [ « $# » -eq 0 ]; then
zenity –error –title= »error » –text= »Selectioner au moins 1 fichier »
exit 1
fi
début_numerot
rename_jpeg « $@ » | zenity –progress –title= »exif_photos_rename » –percentage=0
affich_log