Forum darktable FR
Ré-écrire tous les fichiers XMP [RÉSOLU] - Version imprimable

+- Forum darktable FR (https://forums.darktable.fr)
+-- Forum : Utilisation de darktable (https://forums.darktable.fr/forumdisplay.php?fid=97)
+--- Forum : Module Table Lumineuse (https://forums.darktable.fr/forumdisplay.php?fid=74)
+--- Sujet : Ré-écrire tous les fichiers XMP [RÉSOLU] (/showthread.php?tid=2412)

Pages : 1 2


Ré-écrire tous les fichiers XMP [RÉSOLU] - jpverrue - 01-03-18

Bonjour à tous,

Je souhaiterais pouvoir ré-écrire tous les fichiers xmp à partir de la BdD. J'ai parcouru pas mal de ressources, mais je n'ai rien trouvé qui puisse faire cela. Avez vous une idée ?

Merci d'avance !


RE: Ré-écrire tous les fichiers XMP - jpg54 - 01-03-18

Je pense qu'il faudrait que tu fasses une requête Sql avec library.db.


RE: Ré-écrire tous les fichiers XMP - pascal - 01-03-18

Pourquoi? Normalement les XMP sont synchro avec la BD? Est-ce suite à une mauvaise manip?


RE: Ré-écrire tous les fichiers XMP - jpverrue - 01-03-18

Non, pas une mauvaise manip, une manip volontaire.

J'explique. Mes mots clés qui ont été créés avec DT, mais aussi auparavant avec Digikam, étaient écrits avec une majuscule. Malheureusement, je ne sais trop pourquoi, maintenant les mots clés importés de DK arrivent sans majuscule. Ce qui me crée régulièrement des doublons. Doublons qui sont indém..dables, car le filtre de collection ne tient pas compte de la casse. J'ai donc pris la décision de faire l'update dans la BdD. l'opération s'est passée sans problème et je suis très satisfait. Mais je n'ai pas réalisé que la syncho avec les XMP ne se ferai pas automatiquement. Au quotidien, ce n'est pas gênant, car la BdD est prioritaire. Ce qui m'inquiète, c'est le risque de devoir utiliser les XMP pour régénérer une BdD, et dans ce cas, de réimporter les anciennes versions des mots clé. >:-(

J'ai fait le tour des outils, des scripts lua, des options de lancement de darktable et de darktable-cli : rien.
J'ai fait un essai en supprimant les XMP d'un petit dossier (23 photos). Pour qu'ils soient recréés, il faut ouvrir chaque fichier en table noire. J'ai 23600 fichiers importés. je ne me vois vraiment pas faire ça.

Une idée ?


RE: Ré-écrire tous les fichiers XMP - jpg54 - 01-03-18

Tu veux refaire la base de données avec les .xmp ?


RE: Ré-écrire tous les fichiers XMP - jpverrue - 01-03-18

Non, ça c'est trivial, il suffit de réimporter. Je veux faire l'inverse ! mettre à jour les XMP à partir de la base de donnée.


RE: Ré-écrire tous les fichiers XMP - pascal - 01-03-18

Tu as une option de fonctionnement "vérifie les fichier xmp modifiées au démarrage". Est-ce que cela fonctionnerait dans ton cas?


RE: Ré-écrire tous les fichiers XMP - jpg54 - 01-03-18

Je viens d'essayer de voir comment faire des commandes Sql pour exporter les données de library.db mais Db Browser For SSLite plante sur certains champs.


RE: Ré-écrire tous les fichiers XMP - jpverrue - 01-03-18

Oui, je connais, mais ça ne fonctionne pas nativement ; faut un peu bidouiller.

La solution c'est de faire au préalable de faire un 'touch' des fichiers XMP. En suite d'ouvrir DT. La fenêtre 'versions modifiées des fichiers trouvée' s'affiche. Ensuite c'est facile : cocher 'tout', et cliquer sur le bouton 'écraser les fichiers XMP sélectionnés'. Roulez jeunesse !!!

J'avais pensé à cette option tout à l'heure, mais pas au touch... Merci Pascal !


RE: Ré-écrire tous les fichiers XMP [RÉSOLU] - jpverrue - 01-03-18

Voilà, c'est fait. J'ai fait un petit script pour automatiser tout le processus. Le voici si ça peut aider quelqu'un
Code :
#!/bin/bash

sqlite3 -separator '/' ~jpv/.config/darktable/library.db \
       'select folder, filename from images, film_rolls  where images.film_id = film_rolls.id ;' |
while read f
do
               fichier="${f}.xmp"
               # echo "fichier='$fichier'"
               if [ -f "${fichier}" ] ; then
                       touch "${fichier}"
               else
                       echo " $0 : Fichier '${fichier}' introuvable."
               fi
done
echo "fait"
Bonne soirée !