Script – afficher les donnees Exif sur Thunar

Afficher les métadonnées EXIF avec un clic droit sur Thunar

Ha, il y a longtemps que je n’ai pas écrit sur le sujet !

Sur les PC sous un environnement Gnome avec le gestionnaire de fichiers Nautilus j’applique la méthode décrite dans mon l’article « Afficher les métadonnées exif avec un clic droit sur Nautilus » écrit en 2015 (il y a une légère modification sur le script d’aujourd’hui, mais les deux fonctionnent).

Il se trouve que le PC que j’utilise le plus souvent ces derniers temps est sous Manjaro avec un environnement XFCE et donc Thunar comme gestionnaire de fichiers.

Pour infos

Il existe de nombreuses similitudes avec l’article mentionné plus haut. La principale différence réside dans l’emplacement du script ainsi qu’une procédure spécifique à effectuer sous Thunar, qui ne s’applique pas à Nautilus.
Il est possible de remplacer Zenity par Yad, et Exiv2 par Exiftool, mais je pense que Yad nécessite certainement des critères supplémentaires (je n’ai pas cherché). Bref, il existe plusieurs façons de faire, mais comme je suis de nature plutôt fainéante, je préfère me baser sur des solutions déjà en place et qui fonctionnent chez moi depuis 2015.

Mais voyons la procédure

Tu auras besoin de Zenity et de Exiv2 (Chez-moi, Exiv2 était déjà installé). Pour installer les deux :
Manjaro :

sudo pacman -S exiv2 zenity

Débian et dérivés

sudo apt install exiv2 zenity

Sous XFCE il n’y a pas de ./local/thunar, on va donc créer un répertoire sous .local, je l’ai appelé bin, vous pouvez le nommer scripts ou autres, mais il faudra en tenir compte pour les chemins.

Créer un répertoire bin

mkdir -p ~/.local/bin

On va écrire le script, j’utilise vim, mais vous pouvez utiliser nano ou autre éditeur.

vim ~/.local/bin/exif.sh

et on y écrit :

#!/bin/bash

# métadonnées exif avec exiv2

zenity --info --title="Métadonnées EXIF" --text="$(exiv2 "$1")"

Un peu de pédagogie

#!/bin/bash est un préfixe au nom de l’exécutable qui va effectivement traiter les lignes qui le suivent. On l’appelle « shebang » et doit être la première ligne du script. (il s’agit d’un copié/collé de mon article « Initiation au Shell – Boucle (for, do, done » écrit en 2015).

zenity --info --title="Métadonnées EXIF" --text="$(exiv2 "$1")"

zenity affiche une boite de dialogue d’info (–info), titre optionnel (–title) et enfin avec (–text) le contenu de la sortie de la commande exiv2, les métadonnées exif de $1, le premier argument passé au script, c’est-à-dire le chemin du fichier image.

Il faut rendre exécutable le script

chmod +x ~/.local/bin/exif.sh

– Pas certain que ma pédagogie fasse mouche
– Ouah ah ah… Et c’est toi Sima qui donne des cours d’initiation au Bash à Root66.Net ? Hé ben, ils sont pas aidés.
– Ho ça va, ta gueu… Tais-toi ! Bon, je continue.

Voyons maintenant comment configurer Thunar

On ouvre le gestionnaire de fichier Thunar puis on va dans :
Édition → Configurer les actions personnalisées…

Une boite de dialogue s’ouvre → clique sur le +

Une autre boite de dialogue s’ouvre sur l’onglet « Base »
On met le nom de son choix.
On peut mettre une description.
Dans commande on met le chemin absolu (en entier) vers l’exécutable avec le paramètre %f

Ensuite on va dans l’onglet « Conditions d’apparition » et on coche la case « Fichiers image »

Puis on valide
On voit que l’action « EXIF » a été ajouté. Tu peux fermer.

Sur Thunar vas sur une image et fais un clic droit, puis descend sur « EXIF »

Clic sur « EXIF » et une fenêtre s’ouvre avec les métadonnées Exif.


Si ça ne fonctionne pas, ferme et relance Thunar pour être certain que les modifications ont bien été prises en compte par Thunar.

Des idées pour améliorer ce petit script ou une autre approche à proposer ? Lâche-toi en commentaires.

Le billet « Script – afficher les données Exif sur Thunar » est apparu en premier sur le blog de Sima78.

Linux – De l’interface graphique à la ligne de commande

de l'interface graphique à la ligne de commandeUn peu de ma vie privée, ou plutôt de celle de mes farfadets et mes fadettes, j’en ai deux de chaque.

Tous utilisent depuis leur tendre enfance linux… Maintenant, ils l’utilisent plus ou moins en fonction de leurs besoins. Pour celui qui l’utilise le plus, même exclusivement, il s’agit d’un de mes farfadets, l’autre, étant un « gamer« , et l’utilise le moins, les Fadettes sont entre les deux.

J’en viens à l’une des Fadettes, son pc est en dual boot, pour un usage professionnel, elle utilise au maximum linux (la grande majorité du temps) via les applications graphiques qui lui sont proposées, sauf pour certains de ces travaux.

L’interface graphique, c’est bien… Mais parfois, la ligne de commande, c’est mieux ! J’y viens !

« Papa, on a plusieurs photos de divers appareils (4) et elles se mélangent dans le répertoire, on doit rendre un travail chronologique… Tu m’as dit un jour qu’avec ton écran noir (un terminal) et tes lignes, ça peut se faire facilement… Tu peux me montrer ? » (Sur son pc, une multitude de fenêtres ouvertes sur plusieurs bureaux avec divers travaux en route… Pas question de les fermer pour passer sur un autre système d’exploitation).

Quand on me parle de mes lignes, ça me rend particulièrement fier, même si au fond de moi-même, je sais que quiconque lit le « man » de « find » et « exiv2 » peut en faire autant, voire mieux, mais bon…

Je lui dis, il suffit de suivre le billet sur mon blog « Renommer les photos par lot en utilisant les métadonnées EXIF« . Et là, magie ! En quelques secondes, les centaines de photographies se renomment par ordre chronologique.

Renommer les photos par lot en utilisant les métadonnées EXIF Magique ou presque, car l’un des appareils n’était pas à la bonne date et heure…
Alors, autres lignes de commande, c’est un peu plus long, en suivant le billet « Modifier la date de vos photos« , et le résultat final est parfait !
Je suis heureux de voir que ma Fadette s’en est très bien sorti et surtout qu’elle s’est rendu compte que la ligne de commande est un parfait complément à ce qui peut se faire via une interface graphique !

Afficher les metadonnees exif avec un clic droit sur Nautilus

nautilusPetit script utilisant exiv2 et simple à mettre en oeuvre.

1- Ouvrez un éditeur de texte, copiez les lignes ci-dessous et sauvegardez sous par exemple « exif.sh »

#! /bin/bash
# métadonnées exif avec exiv2
zenity --info --text " `exiv2 "$1" `"

2 – rendez-le exécutable : clic droit => Propriétés dans l’onglet « Permitions »
Cochez la case « Autoriser l’exécution du fichier comme un programme

3 – Ubuntu 14.04, placez le fichier dans ~.local/share/nautilus/scripts/

En ligne de commande, pas plus compliqué…
1 – avec par exemple « nano »

~$ nano .local/share/nautilus/scripts/exif.sh

on copie, on sauvegarde et on quitte.

#! /bin/bash
# métadonnées exif avec exiv2
zenity --info --text " `exiv2 "$1" `"

2 – on rend exécutable et on relance nautilus;

~$ chmod +x .local/share/nautilus/scripts/exif.sh | nautilus -q

Résultat dans les deux cas:
1 – clic droit sur l’image

Nautilus script exif
2 – Résultat 

Nautilus affiche metadonnees exif

Supprimer les métadonnées EXIF avec exiv2

supprimer données exif Womer & Cabincr3wMétadonnées EXIF, utilité et méfiance.

Si les métadonnées exif, et leur enrichissement peuvent être d’une grande utilité, sachez aussi vous en méfier.

En effet, pour des raisons professionnelles ou pour la gestion de photos à titre personnel, les données EXIF ont toutes leurs raisons d’être et sont une véritable richesse.

Par contre, si vous publier vos photos sur un quelconque site internet, dans la majeure partie des cas, pour des raisons de préserver votre vie privée, les métadonnées EXIF n’ont pas d’intérêt.

Pour les supprimer avec exiv2, rien de plus simple.

$ exiv2 -d a photo.jpg

 

En suivant les liens plus bas, vous saurez comment intégrer cette commande dans une boucle pour procéder par lot.
Pour l’anecdote avec un peu d’humour (c’était en 2012) :
Le pirate w0rmer & CabinCr3w (pour ne pas dire l’utilisateur de Scripts kiddies) a publié sur Twitter depuis son smartphone, deux photos, l’une du décolleté de sa petite amie, l’autre de son fessier moulé dans un short… Les métadonnées de ses images ont permis au FBI de le confondre…
Les médias parlent de hacker… Ha les cons! Il n’ont encore rien compris, hacker n’est pas synonyme de pirate, au contraire, et hacker ne s’applique pas seulement à l’informatique mais dans le bricolage créatif visant à améliorer le fonctionnement d’un système… Quelqu’un qui fait du tunning, est aussi un hacker! Les hackers existent depuis longtemps, bien avant les ordinateurs. Le terme de Hacker a perdu son prestige depuis le Crackdown de 1990, lorsque le système téléphonique US a globalement disjoncté, du fait d’une erreur de programmation des opérateurs, qui accusèrent pourtant le monde des BBS.

Pour en savoir plus sur les métadonnées EXIF :
Métadonnées EXIF d’une photo
Renommer les photos par lot en utilisant les métadonnées EXIF
Modifier les métadonnées EXIF de ses photos
Modifier la date de vos photos
Ajouter les coordonnées GPS dans EXIF avec exiv2

Vous pouvez aussi changer le nom de fichier de vos photos sans utiliser les métadonnées EXIF
Renommer les photos sans utiliser les métadonnées Exif

 

Modifier la date de vos photos

Modifier la date de vos photosModifier la date de vos photos sous linux en ligne de commande.

Votre appareil est resté longtemps sans ses piles, vous en avez mis des neuves, et pris des photo sans remettre votre appareil à la bonne date et heure…

Vous allez donc devoir…

Modifier la date sur le fichier EXIF de vos photos.

Mettez vos clichés à modifier dans un répertoire.

Voyez la suite….

Ouvrez un shell et vérifiez le contenu du répertoire avec la commande « ls ».

$ ls
DSCN3449.JPG  DSCN3450.JPG  DSCN3451.JPG  DSCN3452.JPG  DSCN3453.JPG  DSCN3454.JPG  DSCN3455.JPG  DSCN3456.JPG

Vérifiez la date d’une des images du répertoire avec « exiv2 image.jpg »
$ exiv2 DSCN3449.JPG

Nom du fichier        : DSCN3449.JPG
Taille du fichier     : 1230426 Octets
Type MIME             : image/jpeg
Taille de l'image     : 2304 x 3072
Marque de l'appareil  : NIKON
Modèle de l'appareil  : COOLPIX L12
Horodatage de l'image : 2010:05:02 05:32:43
Numéro de l'image     : 
Temps d'exposition    : 1/469 s
Ouverture             : F2.8

La date affiche 02/05/2010 à 05:32:43 alors que l’image a été prise (supposons) le 01/05/2012 à entre 14h et 15h.
Nous allons modifier la ligne « Horodatage de l’image: 2010:05:02 05:32:43 » en ligne de commande.
Plusieurs champs peuvent intervenir pour l’affichage de l’heure, on peut vérifier avec la ligne suivante:
exiv2 -p v DSCN3449.JPG | grep DateTime

$ exiv2 -p v DSCN3449.JPG | grep DateTime
0x0132 Image    DateTime             Ascii   20  2010:05:02 05:32:43
0x9003 Photo    DateTimeOriginal     Ascii   20  2010:05:02 05:32:43
0x9004 Photo    DateTimeDigitized    Ascii   20  2010:05:02 05:32:43

Il y a donc trois champs à modifier.
On peut déjà modifier la première photo en trois ligne avec la commande « exiv2 » et l’option « -Mset »

$ exiv2 -M"set Exif.Image.DateTime 2012:05:01 14:32:43" DSCN3449.JPG
$ exiv2 -M"set Exif.Photo.DateTimeOriginal 2012:05:01 14:32:43" DSCN3449.JPG
$ exiv2 -M"set Exif.Photo.DateTimeDigitized 2012:05:01 14:32:43" DSCN3449.JPG

Oui, mais si vous avez plusieurs photos cela risque de devenir très vite fastidieux, l’idéal est de trouver la bonne boucle à faire.
Déplacez l’image que vous venez de modifier pour éviter que les changements lui soient appliqués.
Faire une modification de date dans une boucle, c’est risquer de se retrouver avec tous les clichés à la même date, à la seconde près. A moins de faire un script assez complexe.
Nous allons nous simplifier la tâche en ajustant l’heure. L’option « ad » de la commande « exiv2 » permet l’ajustement de cette donnée en ajoutant ou retirant des tranches de temps. En fait, il faudra préciser le nombre d’années, mois, jours et heures de décalage.

Dans un premier temps nous allons chercher l’intervalle entre la date du cliché et celui de la prise de vue, soit (01/05/2012 14:32 – 02/05/2010 05:32).

Vous pouvez utiliser un tableur ou un calculateur en ligne.
Résultat: 1 year, 11 months, 29 days, 9 hours
Une fois le décalage évalué, on va l’appliquer avec « exiv2 », donc ajouter 1 ans, 11 mois, 29 jours, 9 heures et 00 minutes, il suffit d’exécuter:
« exiv2 -a 9:00 -Y 1 -O 11 -D 29 ad image.jpg »
Mais nous allons l’introduire dans une boucle « For Do Done« 

$ for i in *; do exiv2 -a 9:00 -Y 1 -O 11 -D 29 ad $i;done

Vérifions sur une des images:

$ exiv2 -p v DSCN3452.JPG | grep DateTime
0x0132 Image    DateTime            Ascii   20  2012:05:01 14:36:22
0x9003 Photo    DateTimeOriginal    Ascii   20  2012:05:01 14:36:22
0x9004 Photo    DateTimeDigitized   Ascii   20  2012:05:01 14:36:22

Réussi !
Maintenant vous pouvez renommer vos photos en utilisant la date et heure du fichier exif.

Ajouter les coordonnées GPS dans EXIF avec exiv2

mettre les coordonnées gps dans exif avec exiv2.pngLinux, exiv2 et ajout des coordonnées GPS dans EXIF

Ajouter les coordonnées GPS à une photo en ligne de commande nécessiterai trois (3) lignes de commande, ce script peut simplifier la tâches.

Ici un petit script permettant de rentrer des coordonnées GPS dans les métadonnées EXIF dans une série de photos.

« exiv2 » doit être installé… sinon:

apt-get install exiv2

Ce script va vous poser quelques questions, bien entendu, il ne faut pas mettre les parenthèses…

Les questions qui vous seront posées:

  • Entrez l’extension de fichier en respectant la casse (jpg) (JPG) (RAW)… : Tapez JPG ou jpg ou RAW ,bref l’extension de votre série photos en respectant la casse, c’est-à-dire, en majuscules ou minuscules…
  • Entrez la latitude (N) ou (S) : N ou S Cela se transformera en North ou South sur les tags exif
  • Entrez la latitude sous forme ex (48/1 13/1 24/1) : Imaginons la latitude à rentrer est 48°, 13min et 24sec… vous devrez le saisir sous forme de 48/1 13/1 24/1 et cela donnera 48deg 13′ 24″ sur le tag exif.
  • Entrez la longitude (E) ou (O) : E ou O cela se transformera en East ou West
  • Entrez la longitude sous forme ex (9/1 52/1 51/1) : (même principe que pour la latitude).

Le sript:

#!/bin/bash
# Ajouter les données GPS aux métadonnées EXIF - Sima78
# Entrez vos données GPS sans les parenthèses... :-)"
echo -n "Entrez l'extention de fichier en respectant la casse (jpg) (JPG) (RAW)... : "
read form
echo -n "Entrez la latitude (N) ou (S) : "
read latref
echo -n "Entrez la latitude sous forme ex (48/1 13/1 24/1) : "
read lat
echo -n "Entrez la longitude (E) ou (O) : "
read longref
echo -n "Entrez la longitude sous forme ex (9/1 52/1 51/1) : "
read long
for i in *.$form
   do
      exiv2 -M"set Exif.GPSInfo.GPSLatitudeRef $latref" $i
      exiv2 -M"set Exif.GPSInfo.GPSLatitude $lat" $i
      exiv2 -M"set Exif.GPSInfo.GPSLongitudeRef $longref" $i
      exiv2 -M"set Exif.GPSInfo.GPSLongitude $long" $i
   done
echo "TERMINE"

Pour utiliser ce script, copiez-le dans votre éditeur texte favori et enregistrez sous… par exemple: ajout-gps-exif.sh

Le rendre exécutable par:

chmod +x ajout-gps-exif.sh

Le placer dans le dossier de vos clichés à modifier et le lancer par:

./ajout-gps-exif.sh

Pour voir le résultat:

exiv2 -pt votre_photo.JPG

Exemple de résultat:

(...)
Exif.GPSInfo.GPSLatitudeRef     Ascii    2  North
Exif.GPSInfo.GPSLatitude        Rational 3  48deg 13' 24" 
Exif.GPSInfo.GPSLongitudeRef    Ascii    2  East
Exif.GPSInfo.GPSLongitude       Rational 3  9deg 52' 51"

Ce script utilise une simple boucle (for, do, done) il est donc facile de l’enrichir avec d’autres champs complémentaires (copyright, auteur, commentaire, etc…)

Liste des champs possibles sur www.exiv2.org/tags.html

Modifier les métadonnées EXIF de ses photos

Modifier les métadonnées EXIF avec Exiv2Modifier les métadonnées EXIF de ses photos

Comment rajouter des informations aux données « EXIF » d’une photo? En effet il manque souvent l’auteur, le commentaire… Je vous propose l’une des méthodes sous linux…

Rapide, car légère, puisqu’en ligne de commande.

Avant de commencer, ayez une idée de ce qu’est un fichier EXIF d’une photographie, ensuite prenez connaissance des variables susceptibles d’enrichissement.
C’est fait? Alors c’est parti…

Imaginons, j’ai pris une série de photographies, avant de les renommer je souhaite rajouter d’autres renseignement aux métadonnées « EXIF »: Un commentaire, le lieu de prise et nom de la plante que j’ai photographié dans la série, il s’agit de la colchique d’automne (Colchicum autumnale).
Si je n’avais qu’une photographie à modifier j’utiliserai la ligne suivante:

$ exiv2 -M"set Exif.Photo.UserComment charset=Ascii Paris - Colchicum autumnale (colchique d'automne) " DSC_0013.JPG

Mais voilà, j’ai plusieurs photographies à modifier, alors je vais utiliser une boucle « for, do, done » et pourquoi pas en faire un script pour éviter la réécriture de la ligne à chaque fois, à vous de voir.

Ajoutons aux données EXIF un commentaire pour le nom et lieu: Paris – Colchicum autumnale (colchique d’automne)

$ for i in *.JPG; do exiv2 -M"set Exif.Photo.UserComment charset=Ascii Paris - Colchicum autumnale (colchique d'automne)" $i; done

Vérifions avec la commande exiv2 et l’option « -pt » pour plus de détail:

$ exiv2 -pt DSC_0012.JP
(...)
Exif.Nikon3.Saturation           Ascii      16  NORMAL
Exif.Nikon3.VariProgram          Ascii      16  AUTO
Exif.Photo.UserComment           Undefined  56  Paris - Colchicum autumnale (colchique d'automne)
Exif.Photo.SubSecTime            Ascii       3  50
(...)

De la même façon on peut mettre le nom d’auteur, le Copyright etc.
Exemple:

$ for i in *.JPG; do exiv2 -M"set Exif.Image.Artist Mon_prenom et NOM" $i; done
$ for i in *.JPG; do exiv2 -M"set Exif.Image.Copyright Creative Commons BY-NC-SA" $i; done
$ exiv2 -pt DSC_0012.JP
(...)
Exif.Image.Artist                 Ascii      18  Mon_prenom et NOM
Exif.Image.YCbCrPositioning       Short       1  Co-sited
Exif.Image.Copyright              Ascii      26  Creative Commons BY-NC-SA
(...)
Exif.Photo.UserComment            Undefined  56  Paris - Colchicum autumnale (colchique d'automne)
(...)

Renommer les photos par lot en utilisant les métadonnées EXIF

Renommer une photo en utilisant les métadonnées exif avec exiv2Renommer des photos par lot en utilisant des données EXIF de chaque image.

Ou comment avoir un nom ressemblant à « 2010-0613-16h07m08s-chantier.JPG » au lieu de « DSC_0005.JPG »

Prérequis:
« exiv2 » doit être installé.
On va utiliser les commandes « find » et « exiv2 « 

Voyons ce qu’il y a dans le répertoire courant:

$ ls
DSC_0005.JPG DSC_0006.JPG DSC_0007.JPG DSC_0008.JPG

On va renommer les photos en utilisant une partie des métadonnées EXIF de chaque image en une seule commande (ici date et heure de prise de vue).

$ find -iname "DSC_*" -exec exiv2 -r %Y-%m%d-%Hh%Mm%Ss-chantier mv {} +
$
$ ls -l
total 10004
-rwxr-xr-x 1 sima sima 2976990 2010-06-13 16:07 2010-0613-16h07m08s-chantier.JPG
-rwxr-xr-x 1 sima sima 2538376 2010-06-13 16:07 2010-0613-16h07m27s-chantier.JPG
-rwxr-xr-x 1 sima sima 2231659 2010-06-13 16:07 2010-0613-16h07m51s-chantier.JPG
-rwxr-xr-x 1 sima sima 2472989 2010-06-13 16:07 2010-0613-16h07m57s-chantier.JPG

Que c’est-il passé?
La commande find a recherché les fichiers dont le nom commence par DSC_
Lorsque la réponse est vrai (renvoi 0) exécute la commande exiv2
La commande exiv2 va renommer en prenant l’année (%Y), le mois (%m), le jour (%d), l’heure (%H), les minutes (%M) et les secondes (%S) de prise de vue en y ajoutant les personnalisations les () (hms) de heure, minutes et secondes puis chantier.

En faisant «man exiv2» ou «man find» on peut voir l’étendue des possibilités.

ATTENTION ! cette commande est récursive et si vous avez des sous-répertoires avec des fichiers correspondant à la requête, ils seront également modifiés. Dans ce cas, vous pouvez utiliser la commande exiv2 dans une boucle for, do, done

Il est facile d’en faire un script…