Copie et importation avec XMP

Bonjour.

À l’époque où j’utilisais Lightroom, mes fichiers étaient nommés ainsi :

img_AAAAMMJJ_XXX.PEF

Pendant un petit bout de temps, après la transition sur Darktable, à l’importation, j’avais laissé le nom des fichiers tels quels :

IMGPXXXX.PEF

Depuis plus d’un an environ, j’utilise ce nommage de fichiers :

primus$(EXIF_YEAR)$(EXIF_MONTH)$(EXIF_DAY)$(SEQUENCE).$(FILE_EXTENSION)

Soit :

primusAAAAMMJJXXXX.PEF

Je voudrais réorganiser le nommage de tous les fichiers antérieurs. Comme malheureusement l’option de renommage après importation (et editing) façon Lightroom n’est pas implémentée, j’ai songé à ceci :

  1. Dans la table lumineuse, enlever la collection complète (dans mon cas, les fichiers bruts situés $(PICTURES_FOLDER)/Raw).
  2. Renommer Raw en par exemple Raw_ancien.
  3. Créer un nouveau dossier Raw.
  4. Copier et importer (récursivement) Raw_ancien dans Raw.

J’ai fait un petit test ; les fichiers sont parfaitement renommés selon le modèle.

Problème : le contenu des fichiers XMP n’est pas pris en compte et le développement se fait selon le flux paramétré.

Y aurait-il un moyen d’y remédier ?

Merci.

Bonjour. As-tu recopié aussi les anciens fichiers .XMP dans leurs nouveaux dossiers, en les renommant de leurs nouveaux noms, c’est à dire primusAAAAMMJJXXXX.PEF.xmp ?

Après, je n’ai pas fait le test, mais dans le fichier xmp la référence au fichier RAW existe aussi dans une balise xmpMM: DerivedFrom…

C’est à l’importation, lors de la copie, que le nommage se fait selon le modèle. Dans le dossier source (et ensuite dans le dossier de destination), les fichiers XMP ont le même nom que les fichiers bruts.

Certes, mais tes anciens traitements sont enregistrés dans les anciens xmp, donc si tu ne les « ramènes » pas à côté de tes PEF avec leurs nouveaux noms, tu n’as pas tes traitements.
Dès que tu importes dans dt, les xmp sont créés par dt, en utilisant bien sûr le nom du RAW.

D’où :

Si j’ai bien compris ce que tu expliques, il faut importer les fichiers bruts, supprimer les nouveaux XMP créés automatiquement, copier les anciens XMP, les renommer identiquement aux fichiers bruts et enfin les ouvrir un à un pour modifier la référence du fichier brut dans la ligne DerivedFrom. Au secours… :smiley:

Oui, au secours… :s

Je ne vois pas d’autre façon pour renommer un ensemble de photos exploitables dans dt que de passer par des commandes bash, exiftool notament, ou un/des scripts.
C’est en tout cas comme ça que je m’y prendrais.

Si tu comprends l’anglais, tu peux jeter un œil du côté de ce post.

Quelque part, ça pourrait en intéresser (au moins qui utilise Linux, voire macOS) de faire un script bash pour renommer des paires (voire triplets) RAW+xmp(+JPG)…

@manu, je pensais à une possibilité de modification d’un fichier de configuration qui permettrait de procéder à l’opération. C’est peut-être faisable…

@Phil7857, d’une part, ça serait déjà un gros travail, et d’autre part, chaque fichier brut correspondant étant défini dans chaque XMP par DerivedFrom, ça ne résoudrait pas le problème.

Oui, je viens de faire le test en dupliquant une paire RAW/xmp, la donnée dans le xmp est à mettre à jour pour que le traitement soit appliqué au fichier renommé.

xmpMM:DerivedFrom="nom du fichier raw"

Si pas d’autre solution, je ne vois que le scripting bash ou autre pour qui n’est pas sous Linux (ou MacOS ?)…

Dans les préférences, onglet stockage, section xmp, comment as-tu configuré ?

Ça c’est une bonne nouvelle, ça simplifie déjà un aspect des choses !

Reste le renommage des anciens xmp…

Est-ce que entre :
[list]
[*]img_AAAAMMJJ_XXX.PEF
[*]IMGPXXXX.PEF
et
[*]primusAAAAMMJJXXXX.PEF
[/list]

les X sont la même donnée ?

Si non, comment associer les anciens xmp avec les nouveaux raw ?

Les X sont la numérotation. À l’époque de Lightroom, j’avais choisi 3 chiffres, soit un maximum de 999 images par jour, ce que je n’ai jamais atteint. La $(SEQUENCE) de Darktable est quant à elle à 4 chiffres, ce qui n’est pas modifiable (tout au moins dans l’interface des paramètres). Ainsi depuis que j’utilise primusAAAAMMJJXXXX.PEF la numérotation se fait à 4 chiffres.

Quoi qu’il en soit, avec mes 3 types de formatages actuels, le XMP est nommé pareillement que le PEF.

primus202207200001.PEF

Pour :

primus202207200001.PEF.xmp

Oui, les xmp sont nommés pareils aux RAW, c’est justement ce qui permet à dt de les associer, ainsi que DerivedFrom comme on l’a vu.

Mais pour récupérer les traitements qui avaient été faits dans IMGPXXXX.PEF, maintenant primusAAAAMMJJXXXX.PEF, qui sont décrits dans IMGPXXXX.PEF.xmp il faut bien savoir comment relier le nom initial IMGPXXXX à primusAAAAMMJJXXXX.

Comment ?

J’ai fait un essai en activant la vérification, ça crée toujours un nouveau XMP.

L’arborescence :

/home/primus/Images/Raw
/home/primus/Images/Raw/2022
/home/primus/Images/Raw/2022/2022-07-19
/home/primus/Images/Raw/2022/2022-07-20
Etc…

Paramètres XMP :

écrire un fichier xmp redondant pour chaque image : à l’importation
vérifie les fichiers xmp modifiés au démarrage : activé

Paramètres importation :

nommage du répertoire de base : $(PICTURES_FOLDER)/Raw/$(EXIF_YEAR)
nommage du sous répertoire : $(EXIF_YEAR)-$(EXIF_MONTH)-$(EXIF_DAY)
nommage des fichiers : primus$(EXIF_YEAR)$(EXIF_MONTH)$(EXIF_DAY)$(SEQUENCE).$(FILE_EXTENSION)

Si j’ajoute à la bibliothèque des fichiers qui sont déjà dedans, ils vont garder le même nom. Et si ce sont de nouveaux fichiers, ils vont rester dans leur emplacement initial.

Pour l’utilisation d’un logiciel de renommage, quand bien même il serait assez évolué pour nommer un fichier avec la date de prise de vue incorporée dans l’exif (j’ai un bon paquet de fichiers qui sont simplement numérotés IMGPXXXX.PEF) et faire tout bien comme il faut récursivement, restera toujours le problème des XMP où est défini le nom du fichier correspondant.

Je te remercie pour le temps passé, j’ai bien compris ce que tu as écrit mais ça pose deux problèmes.

Je reprends. J’ai trois « séries » de fichiers nommés comme suit :

  1. img_AAAAMMJJ_XXX.PEF

  2. IMGPXXXX.PEF

  3. primusAAAAMMJJXXXX.PEF

Ce qu’il y a de commun c’est qu’ils sont tous structurés de la même manière :

/home/primus/Images/Raw
/home/primus/Images/Raw/2022
/home/primus/Images/Raw/2022/2022-07-19
/home/primus/Images/Raw/2022/2022-07-20

Et que chaque fichier XMP porte le même nom que chaque fichier brut. Ça c’est ok.

Je voudrais donc formater le nom des séries 1 et 2 comme la 3 (ça fait quand même plusieurs milliers de fichiers). Je ne connais pas les possibilités de Krename, mais la série 2 va certainement poser des problèmes puisque AAAAMMJJ n’est pas indiqué dans le nom du fichier (c’est pourquoi je songeais à extraire l’année dans l’exif, si le logiciel le permet) à moins qu’il puisse utiliser le nom du dossier comme chaîne commune.

Maintenant, à supposer qu’avec un bon paramétrage, tout ce passe très bien et qu’il ne reste plus qu’à ajouter le tout à la bibliothèque, reste un problème de taille : au renommage, la cible (le fichier brut ou autre JPG, TIF, etc) référencée dans le XMP (xmpMM:DerivedFrom=« primusAAAAMMJJXXXX.PEF ») n’est pas rennomée et le développement est caduque ; Darktable crée un nouveau XMP et développe l’image selon les paramètres généraux.

Ça reste une suggestion, mais ça doit pouvoir le faire.
L’idée serait quand même de faire un premier test sur un sous-ensemble de photos.

Voici une série de commandes à copier/coller dans un terminal, en admettant que les photos à renommer soit dans /home/primus/Images/Raw (à changer pour un test sur une arborescence réduite).

cd /home/primus/Images/Raw racine="`pwd`" find . -type d | while read dir; do cd "$dir" ; exiftool -ext xmp -verbose -dateFormat "%Y%m%d" -tagsfromfile %-.4f.PEF '-FileName<primus${DateTimeOriginal}%.4nc.PEF.%e' -fileOrder filename . ; cd "$racine" ; done find . -type d | while read dir; do cd "$dir" ; exiftool -ext PEF -verbose -dateFormat "%Y%m%d" '-FileName<primus${DateTimeOriginal}%.4nc.%e' -fileOrder filename . ; cd "$racine" ; done

Ces commandes vont renommer tous les xmp et les PEF trouvés sous /home/primus/Images/Raw en primusAAAAMMJJXXXX.PEF et .PEF.xmp

Il restera ensuite à importer ces dossiers dans dt, les traitements réalisés sur les photos avec les anciens noms de fichiers seront appliqués automatiquement.

@Phil7857, effectivement, de cette manière, la cible est renommée (je n’avais pas procédé de la même façon).

@Manu, là ça va tout seul, je n’aurais pas su écrire un tel bash. :slight_smile: Juste savoir avant de traiter tout le dossier si les extensions indiquées sont sensibles à la casse ? Parce que pour les fichiers originellement traités avec Lightroom, l’extension pef est en minuscules (pour le fichier même ainsi que pour le xmp). Savoir donc si je rajoute une ligne (j’en ai déjà rajouté une parce que j’ai également des dng).

Dans Linux, la casse est significative, oui. Là où tu vois PEF, tu remplaces par pef.
[hr]
Si tu as rajouté les dng, tu auras compris comment ça marche, notamment par paire pour les lignes commençant par find. Tu me diras si tu as un souci…

Tout a bien fonctionné mais j’ai dû faire une erreur quelque part. TOUS les fichiers ont été renommés mais ceux qui avaient une extension pef en minuscule l’ont toujours, ainsi que pour le xmp.

primusAAAAMMJJXXXX.pef

primusAAAAMMJJXXXX.pef.xmp

Pour transformer la casse ça doit être ça mais je préfère demander, parce que tout le traitement prend du temps (environ 6000 photos).

[code]find . -type d | while read dir; do cd « $dir » ; exiftool -ext xmp -verbose -dateFormat « %Y%m%d » -tagsfromfile %-.4f.pef ‹ -FileName<primus${DateTimeOriginal}%.4nc.PEF.%e › -fileOrder filename . ; cd « $racine » ; done

find . -type d | while read dir; do cd « $dir » ; exiftool -ext pef -verbose -dateFormat « %Y%m%d » ‹ -FileName<primus${DateTimeOriginal}%.4nc.PEF › -fileOrder filename . ; cd « $racine » ; done[/code]

Pour info, sous Linux, dans l’environnement KDE, il existe un utilitaire : Krename qui fait tout ça très bien ;-). Bien sûr, il est spécialisé dans le renommage par lots. Il gère tout seul l’incrémentation de séries, l’utilisation de motifs et / ou d’expressions régulières, etc, etc, etc. Il d’ispose de tout un tas de modules pour faire plein de choses étourdissantes :wink: Voir https://userbase.kde.org/KRename

Ayant un classement de fichiers basé sur un numéro de série unique, il m’arrive parfois d’avoir à renommer des quantités importantes de fichiers. Ma solution : enlever les photos de darktable, renommer les fichiers (raw et xmp), sur place, sans copie via darktable avec krename, réimporter dans darktable. Je n’ai jamais eu besoin de toucher au champ DerivedFrom