Renommer ses photos en masse
Par Pierrick, vendredi 28 octobre 2005 à 23:04 / categorie: Perl / tags: perl / #50 / rss
Les noms de fichiers attribués aux photographies numériques par les appareils n'a pas d'autre intérêt que celui de ne pas créer de doublon (img_0001.jpg, img_0002.jpg, etc.) Le nom de fichier n'apporte donc aucune information pertinente. C'est dommage.
Mon expérience en terme de classification de photographies numérique m'a amené à écrire un petit outil de renommage en masse. A partir d'un gabarit (un pattern), tous les fichiers d'une liste sont renommés. Le gabarit contient évidemment des variables paramétrable, comme la date, une numéro séquenceur ou encore une chaîne aléatoire.
Commençons par un exemple simple, histoire de clarifier :
$ photo_rename.pl --pattern=vacances-%number% img_0001.jpg img_0002.jpg img_0003.jpg img_0001.jpg => ./vacances-1.jpg img_0002.jpg => ./vacances-2.jpg img_0003.jpg => ./vacances-3.jpg
La variable %number% est donc un numéro séquenceur. Là on a fait simple, c'est à dire avec les paramètres par défaut: début de la séquence à 1 et pas de zeros devant le numéro de séquence. Voici donc une utilisation plus avancée de la variable %number%:
$ photo_rename.pl --pattern=vacances-%number:98:3% *.jpg img_0001.jpg => ./vacances-098.jpg img_0002.jpg => ./vacances-099.jpg img_0003.jpg => ./vacances-100.jpg spirou48.jpg => ./vacances-101.jpg
Allez, ce qui est potentiellement encore plus intéressant, c'est la date. J'ai utilisé les méta-données EXIF pour cela.
$ photo_rename.pl --pattern=vacances-%exif_date%-%number% img_*.jpg img_0001.jpg => ./vacances-2004.08.01-1.jpg img_0002.jpg => ./vacances-2004.08.01-2.jpg img_0003.jpg => ./vacances-2004.08.01-3.jpg
Vous avez compris, on peut changer le format de la date pour faire des choses plus conforme à une nomenclature personnalisée, juste un exemple (pas très utile comme résultat mais c'est pour montrer les possibilités):
$ photo_rename.pl --pattern=vacances-%exif_date:CCYY.MM.DD@hh:mm%-%number% img_*.jpg img_0001.jpg => ./vacances-2004.08.01@14:03-1.jpg img_0002.jpg => ./vacances-2004.08.01@14:03-2.jpg img_0003.jpg => ./vacances-2004.08.01@18:57-3.jpg
La dernière variable disponible répond à la problématique "comment empêcher les internautes de voir ma photo copine/img_0002.jpg, sachant qu'il connaisse l'existence de copine/img_0001.jpg ?" (bien sûr, vous avez interdit au serveur Web de lister les contenus des répertoires). Je réponds: "en ajoutant une chaîne de caractère aléatoire".
$ photo_rename.pl --pattern=vacances-%number:1:2%-%rand:10% img_*.jpg img_0001.jpg => ./vacances-01-yinwj0nj6k.jpg img_0002.jpg => ./vacances-02-z364egdgig.jpg img_0003.jpg => ./vacances-03-3a5gpbfafw.jpg
Dans un outil comme PhpWebGallery, si la photo est dans une catégorie privée, cela rend assez difficile l'accès aux photos si l'administrateur en a décidé ainsi.
L'outil est disponible sous GPL, c'est écrit en Perl et c'est auto-documenté (--help). Téléchargement
Commentaires
1. Le dimanche 30 octobre 2005 à 21:58, par Cyberix
2. Le lundi 31 octobre 2005 à 08:18, par Pierrick
3. Le samedi 12 novembre 2005 à 22:48, par mxrider
4. Le dimanche 13 novembre 2005 à 11:18, par Pierrick
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.