Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Thread Contributor: aurelienpierreCorriger les problèmes de nommage des répertoires
#1
Pour faire suite à mon tuto basé sur mes bétises : https://darktable.fr/forum/showthread.php?tid=1676

À une époque, j'ai changé de configuration pour le nommage des répertoires d'importation : j'ai mis un slash (/) derrière le nom du dossier. Ça donnait $(YEAR)-$(MONTH)-$(DAY)-$(JOBCODE)/.

Le problème, c'est que darktable lie les pellicules avec leur répertoire exact, incluant le / (ou pas, s'il n'est pas entré). Donc, j'avais une partie de mes pellicules liées sans / final (avant 2016), et une autre avec / final.

Aucun problème, me direz vous. Oui, mais là, en refaisant un tour de toutes mes photos, il me semble qu'il me manque des vieux shoots dans ma base de données. Pour être sûr, je refais une importation récursive de tout le disque externe qui contient mes photos. En principe, dt ne devrait pas réimporter les photos déjà en base de données.

Sauf que, lors de l'importation récursive, darktable lie les pellicules avec le répertoire sans / final. Je me retrouve donc avec toutes mes photos entre 2016 et 2018 en doublon car dt ne détecte pas que la pellicule liée avec / et la pellicule liée sans / sont une seule et même pellicule, pour lui, le répertoire est différent, donc il les réimporte sous un autre répertoire. Certaines pellicules comportent alors plus de photos dans le doublon réimporté…

Bref, il me faut trouver les répertoires incriminés et virer le / final.

La requête SQLite3 est :


Code :
update film_rolls set folder=rtrim(folder, '/');


En rouvrant dt, les doublons ont disparus de l'interface, par contre je n'ai pas vérifié quelle version des doublons il a conservé. En regardant dans la base de données si j'ai des images en doubles (d'après leur nom) :


Code :
SELECT filename, COUNT(*) c FROM images GROUP BY filename HAVING c > 1;


je me rends compte que certaines photos sont enregistrées 2 à 12 fois… Ma base de données fait 500 Mo, ça peut valoir la peine de dégraisser. En plus, comme j'ai activé la synchronisation des XMP avec la base de données, en principe j'ai donc N fois exactement le même développement enregistré.

On supprime les images doublons :


Code :
DELETE FROM images WHERE rowid NOT IN (
 SELECT MIN(rowid)
 FROM images
 GROUP BY filename
);


Puis les pellicules doublons :


Code :
DELETE FROM film_rolls WHERE rowid NOT IN (
 SELECT MIN(rowid)
 FROM film_rolls
 GROUP BY folder
);


Bref, pensez à ça quand vous choisissez le répertoire d'importation des photos.
Aurélien, photographe portraitiste à Montréal
Utilisateur darktable depuis 2010. Tutos sur darktable.fr.
Génie mécanique, calcul et modélisation. Maths pour le traitement d'images.
Ubuntu 18.04 | darktable git/master | Nikon FM, D5300, D810.
Répondre
#2
Merci Aurélien, c'est sûr que SQLite3 permet de faire beaucoup de choses dans les bases de données de darktable.
Répondre
#3
(18-06-18, 07:49)jpg54 a écrit : Merci Aurélien, c'est sûr que SQLite3 permet de faire beaucoup de choses dans les bases de données de darktable.
Bonjour,

ce n'est pas trivial comme manip.
Mieux vaut savoir si on maîtrise suffisamment le SQL pour aller triturer la base à coups de requêtes.

En tous cas, merci pour cet éclairage des coulisses de darktable.
Sur l'établi : Images de rêves – des images, des textes
Quelques outils :
— Reflex Pentax, numérique et argentique
— MacBook Pro mid-2010, OS 10.10.5
— Darktable 2.4.x, Lightroom 6.x pour quelque temps encore
Répondre
#4
Si vous voulez voir d'abord et ensuite manipuler la base de donnée (Attention ! Vous le faîtes à vous risques et périls !!! Ne venez pas dire après qu'on vous y a incité ! ;-) !)

Donc, pour faire cela utilisez, si vous ne le connaissez pas encore, sqlitebrowser. Ça simplifie bougrement les choses !
Mes photos : jpverrue.fr
Répondre
#5
Ou DB Browser for SQLite et toujours travailler sur une copie des bases de données.
Répondre
#6
Merci pour l'information
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)