Un script pour les photos

Certains logiciels comme darktable ne modifient pas les photos mais créent un fichier texte des modifs associé à la photo pare exemple pour maphoto1.jpg ou maphoto1.rw2 il associe le fichier maphoto1.jpg.xmp ou maphoto1.rw2.xmp. Quand on a ses photos dispersées dans des dossiers dispersés il devient difficile de les trouver. Une solution est de les ranger dans une hiérarchie de dossiers nommés aaaa/mm/jj et pour ça un logiciel comme rapid photo downloader ut XnView le fait, seulement il laisse en plan les fichiers .xmp alors qu’il faudrait les laisser à côté de la photo.
On pourrait probablement écrire un script pour rapatrier les fichiers .xmp (quelques ko), je me demande si on ne pourrait pas l’intégrer dans un champs de métadonnées puis la réorganisation faite le ressortir (balayer le disque pour les déplacer ça risque de braser si on a des dizaines de milliers de photos et des centaines de dossiers). J’ai regardé les exiftools, ça pourrait être possible mais je ne suis pas assez compétent pour le faire

Bonjour Daniel, @dapa,

Je ne suis pas un utilisateur de Darktable mais selon ce que j’ai lu, le logiciel est conçu pour mieux fonctionner si les photos ne sont pas déplacées après leur usage dans Darktable. En gros, les fichiers .xmp (aka fichiers sidecar) sont aussi représentés dans une DB interne et la DB a préséance sur les fichiers liés.

Pour un accès rapide, en plus des fichiers liés, darktable conserve les données associées à toutes les images dans une base de données. Une image ne peut être affichée et modifiée dans darktable que si ses données ont été chargées dans cette base de données. Ceci se fait automatiquement lorsque vous importez une image pour la première fois ou, à tout moment, lorsque vous la réimportez (voyez la Section 2.3.1, « Importer »). Dans ce dernier cas, la base de données est mise à jour avec les données trouvées par darktable dans le fichier lié XMP de cette image.

Références:

1 « J'aime »

Oui merci millette, c’est vrai, mais le besoin s’en fait sentir quand on désire réorganiser ses dossiers de photos pour une nouvelle structure, notamment chronologique et que l’on veuille conserver ses traitements. Reconstituer la BD si les .xmp accompagnent les photos sera alors automatique avec la fonction importer de darktable (en fait elle n’importe rien mais crée les entrées dans la BD en récupérant les infoss du .xmp).

Un peu plus loin dans le manuel:

Plusieurs éditions d’une même image source, appelées clones, peuvent co-exister – partageant les mêmes données d’entrée (RAW) mais ayant chacune leurs propres métadonnées, mots-clés et pile de l’historique. Chaque clone est représenté par un fichier lié XMP séparé dont le nom de fichier est de la forme « _nn ..xmp », où nn (au minimum deux chiffres) est le numéro de version de cette édition.

Autrement dit,si les photos sont déplacées, on ne poura pas nécessairement recréer le lien, à cause des clones, des fichiers avec le même nom (dans des répertoires différents), etc.

C’est peut-être mon inexpérience avec Darktable mais je ne vois pas comment ça pourrait être automatisé sans causer des conflits.

J’espère que quelqu’un aura une solution à proposer :slight_smile: Peut-être que Lua permettrait d’ajouter des hash uniques aux .xmp basés sur les photos originales ou quelque chose dans ce sens là comme identifiant fiables pour les photos au lieu du nom du fichier.

@dapa,

En fait, le mieux serait probablement d’utiliser Darktable pour réorganiser les images (selon une hiérarchie, par dates, etc.). Ainsi, les métadonnées suivraient puisque ce serait géré automatiquement.

Oui les clones sont des versions du fichier .xmp, si on les perd ce n’est pas grave, mais on pourrait toujours les conserver avec la version initiale.

Le besoin est en principe simple après réorganisation des dossiers en vue d’un nouvel import dans darktable on veut que les fichiers xmp restent à côté des photos.

On peut reconstituer une bd de darktable automatiquement en autant que l’on a pas perdu les fichiers .xmp.

Et faire la réorganisation au sein de Darktable ce n’est pas possible?

Pas vraiment car l’import par dossier ne refait pas une structure, ce serait possible de passer par la caméra qui alors crée une structure mais on ne récupère pas les fichiers .xml.
Hier Sébastien m’a donné une idée aller poser la question sur les forums des logiciels de transfert de photo.
Perso j’ai résolu mon pb mais comme je suis en train de rédiger un wiki pour débutant, c’est un pb posé dur le forum de darktable qui est resté sans solution. Mon wiki est là https://pascot.ca/labo/ il devait être bouclé d’ici un mois , s’il y a des gens que intéresse profitez en, je suis intéressé aux feed backs pour mon approche.

Je veux dire, utiliser darktable lui-même pour déplacer les images entre les répertoires. Ainsi, les .xmp (et la DB) seraient en mesure de suivre ces déplacements.

Script

Est-ce que tu utilises une DB de fichiers comme mlocate? Ça permettrait par exemple de faire:

locate *.xmp

pour obtenir assez rapidement la liste des fichiers liés sans parcourir le disque. Pour cela, la DB mlocate est mise à jour automatiquement (cron).

Ensuite pour chaque fichier, on peut faire:

basename UN-FICHIER.jpg.xmp .xmp

Pour obtenir le nom d’une image (ça ne tient pas compte des clones),

Enfin, on cherche cette image (avec locate encore) pour comparer avec le premier fichier .xmp et comparer les chemins et renommer au besoin.

Ailleurs

Sur un autre forum, une longue discussion (qui dégénère quelque peu à la fin):

Et aussi: