importer le collections de LR en mot cle dans darktable

bonjour,

Nouvelle ici, je voudrais récuperer mes collections (pas les dynamiques) de LR dans darktable.

Dans LR j’ai fait un rangement « grande categories » de mes photos avec des collections,
dans des ensembles de collections (2 etages max, je pense).

Si je change de facon de penser pour passer des collections LR ( modèle ensembliste) aux mots clés et filtres,
je dois recuperer les noms des collections LR et les mettre en mots clés dans darktable.

Comme le catalogue LR (6.0pour moi) est un sqlite, en allant regarder dedans, j’ai trouvé moyen de pouvoir sortir
une grosse liste comme ca, enfin le format peut etre adapté, pour l’instant un petit tas de requete sql.
52A0129.CR2|claude|nous
452A0139.CR2|claude|nous
452A0096.CR2|crozon|mer
452A0099.CR2|crozon|mer
452A0276.CR2|sport
452A0139.CR2|hors_classe

La question: je ne trouve pas comment faire l’import dans darktable
(je peux commencer à aller voir la base, ou editer le xmp, mais je crois qu’il y a plus intelligent que ca dans darktable)

merci

Dans le module « mots-cés » il y a un bouton importer, mais pas de description pour ce bouton dans le manuel :frowning: En cliquant dessus il propose de sélectionner un fichier, mais quid du format de celui-ci ? Pour voir, j’ai cliqué sur l’autre bouton non documenté également : exporter. Cela m’a généré un fichier avec une structure un peu bizarre de la forme suivante :
[mot-clé-racine]
premier-mot-clé-enfant
deuxième-mot-clé-enfant
troisième-mot-clé-enfant
premier-mot-clé-enfant-enfant
etc.
Je suppose que le format du fichier à importer est identique à celui du fichier exporté.

Ce n’est pas exactement ce que tu cherches, puisqu’il n’y a pas de liaison mots-clés fichiers. Il faudrait donc, en effet, jouer avec sqlite3 ou sqlitebrowser (plus convivial)

Difficulté : les mots-clés sont dans la base data, les images dans la base library, et l’association mots-clé ↔ images, dans deux tables de la base library…

Merci, au besoin j’irai voir, en fait tant que j’y suis , je me dis que c’est plus simple de bricoler dans LR,
je vais voir si je peux mettre des mots clés maintenant que je sais lire les collections.
sqliteman marche aussi pour inspecter. Ensuite les requêtes dans un script plus rapide pour moi.

je vais voir si je peux mettre des mots clés maintenant

Les mots-clés Lr sont importé par dt s’il sont dans les xmp. Voir les précédentes discussions sur comment re-générer tous les XMP Lr.

Oui, merci, j’ai bien compris, d’ailleurs je voudrais en profiter, je vais essayer de transformer mes collections LR en mot clés, dans LR.

Alors à coup d’un script shell, qui fait des appels SQl, je peux, dans LR ttransformer les collections (pas dynamique) en mots clés. Du coup, comme c’est des mots clés, une fois les xmps re-écrits, ils sont ensuite loadés par le module d’import de darktable.
Voila comment je fais (testé sur petite base lr)
1/ Aller dans LR et creer les mots clés tmp1 à tmp300, ou nombre qu’on veut
je les ai mis sur une photo, mais on doit pouvoir importer tmp.txt contenant les mots clés
(servent à remplir la base avec toutes les colonnes de la table dans LR, et ensuite juste modif name avec nom collection)
2/ sortir de LR, faire copie de la base fichier .lrcat
3/ faire le script .sh (qui bricole la base lrcat)
4/ relancer LR, qui fonctionne! Et a les nouveaux mots clés, avec les noms des collections, attachés aux photos
(moi j’ai aussi des ensembles de collection, je mets aussi le nom l’ensemble comme mot clé)
5/ redemarrer LR, virer les mots clé tmpXXX qui restent
6/ refaire sauver les meta donnéees
7/ aller ouvrir les dossiers dans darktable.
(si on l’a déjà fait faire rm des CR2.xmp avant)

ignore les MOV et .psd, et les copies virtuelles
Si quelqu’un en veut, faut attendre un peu que je teste en grand sur les 40000 photos rangés dans les collections LR.
Si pressé, demander, sans garantie dans tous les cas, mais sans risque puisqu’on peut tester sur une copie deu catalogue LR,
et ensuite reprendre sa copie et effacer les xmp, avant de les refaire.

Je pense que pas mal d’utilisateurs qui veulent passer de LR à darktable vont être intéresser. Un initiative prometteuse et à saluer.

Bonjour,

avant même de l’avoir vu, c’est sûrement un beau travail de reverse engineering sur la base LR.

Et un grand pas pour ceux qui veulent faire le grand saut.

bonjour,
Peuetre mais ca ne sert qu’à ceux qui veulent leur collections non dynamqiues LR dans DT sous forme de mots clés, pour ensuite faire du dynamqie dans DT.
Je vous raconte quand j’ai fait sur les 40 000 photos, la je n’en avais que 43, dont 2 copies vituelles, et 2 psd, un MOV, qui ont ete biensur ignorés, donc 38 avec comme mots clés les noms des collections dans DT.

Attention, je n’ai fait que pour LR 6.0, pour les autres versions ça depend de adobe, s’ils ont changé le modèle de données.

@clo pas tout lu mais cela me semble compliqué, non? ou alors je ne comprends pas bien ce que tu veux faire. Ce que je ferais:

  • récupérer depuis le SQLite de Lr les collections dynamiques et images associées

  • créer les tags correspondant (pour chaque image) directement dans le SQLite de dt sous la forme : collection|

Tu obtiens alors dans le filtre de collection de dt pour les tags un arbre de la forme:

collection <nom collection 1> <nom collection 2> <nom collection 3> <nom collection 4>

Tu cliques sur une des collections et tu as toutes les images correspondantes.

Ajouter une image à une collection revient à ajouter un tag collection|, et supprimer une image d’une collection revient à détacher le tag correspondant.

@pascal, je vois ce que tu veux dire, la tu parles des « collections dynamiques de LR », et pour ca la recup ne vaut
pas du tout la peine, très simple a regenerer quand on en a besoin, surtout que les critères vont etre differents d’un logiciel à l’autre.
Je parle des collections « normales » (et statiques) de LR, tu peux creer une collection la nommer « bretagne », et ensuite ranger
tes photos en les ajoutant à la collection. Ces collections ne sont pas stockées dans les xmps, et purement LR.
Pour avoir suivi à la lettre les conseils des videos de ouiouiphoto, j’ai consciencieusement rangé toutes mes photos
à la main dans une ou plusieurs collections, en utilisant quasiment jamais les mots clés.
D’où le fait que je cherche à transformer ces collections en mots clés.

Au passage, dans mes tests, les photos ont zéro etoiles, et j’en ai mis une avec 1 etoitle, une avec 2, …
et j’ai systematiquement un décalage de 1 dans DT, toutes mes photos ont une etoile, celle qui en avait 2 en a 3 etc…
pareil pour tout le monde ?

Non non. Je parle des collections normales/statiques. Les informations sont dans le SQLite de Lr. Tu n’as qu’a utiliser un tag collection| dans dt pour faire ces collections normales/statiques.

Placer une photo dans ta collection bretage de Lr revient à attribuer le tag collection|bretage dans dt. C’est fonctionnellement équivalent, placer une image dans une collection normale c’est attacher le tag correspondant, supprimer une image d’une collection normale c’est détacher le tag correspondant.

il faut que j’etudie coment ca marche dans DT, je ne comprends pas tout ce que tu me dis.
Peutetre qu’il y a plus simple.

@pascal, j’ai compris, oui effectivement une collection devient un tag, et etiqueter une photo avec le tag est trivial.

Ce que je cherche à faire c’est récuperer dans darktable la relation image<->collection de LR, de mes 40 000 photos
pour ne pas avoir à refaire l’etiquetage de mes 40 000 photos dans dt.

Ce que je cherche à faire c’est récuperer dans darktable la relation image<->collection de LR,
de mes 40 000 photos pour ne pas avoir à refaire l’etiquetage de mes 40 000 photos dans dt.

Oui, ça je comprends bien :slight_smile: Si tu arrives à extraire une liste des collections Lr (et de contribuer ton code) sous la forme par exemple:

nom_de_collection ; nom_image

Je pense que je peux t’aider à faire le script qui:

  1. ajoute le tag collection|nom_de_collection
  2. attache ce tag à l’image nom_image

A deux on aura un script qui migre les collections Lr vers dt :slight_smile:

Les nouvelles:
J’ai fini le script, qui transforme dans LR, les noms de collections en mot clés, et les attache à chaque photos, ca marche nickel sur mes 40 000 photos,
ça prend 20 minutes. Ensuite, je redémarre LR, il est content et « presque » tous les mots clés sont la :-). Par contre, on ne peut plus en ajouter, car sa façon de générer des nouveaux identifiant a l’air compliquée, et il ne prend pas max+1 comme moi. Je laisse tomber, y’ 101 tables dans LR …

La piste de @pascal semble plus intéressante, y’a que peu de tables dans DT et on sait comment les gerer, enfin lui :-).
Je reboote pour essayer de retrouver le script qui sortait
452A0096.CR2|crozon|mer,
en changeant le format pour:
ensemble; collection ; nom_fichier_photo ?

Qu’entends-tu par « ensemble » ?

j’ai des collections qui sont toutes seules et d’autres groupées en ensemble de collections
par exemple moi j’ai mer|camaret, ou mer|bateau ou mer|brest ou mer|corse
ensuite je peux faire (pour celles dans les ensembles):
mer; 123.CR2
corse;123.CR2
ou
mer_corse ; 123.CR2
ou
mer;corse;123.CR2

Celles qui ne sont pas dans un ensemble: sortent comme ca
guyane:123.CR2
[hr]
Avec la premiere option, ca m’a fait une fichier collections_image.txt de 81588 lignes
je t’ai mis le script la: https://drive.google.com/open?id=19w83BP_-1AOR10plQRU3jtEFwubKEYw0
(tu verras où est la sortie pour les ensembles facilement)

J’ai testé, ça marche. J’ai change le début du script pour prendre en paramètre le nom du lrcat:

[code][ -z $1 ] && echo « usage: $0 nom.lrcat » && exit 1

DB=$1
[/code]

Sinon, le plus gros souci est avec les noms des fichiers. Tu sors uniquement le nom et du coup on peut avoir des doublons. C’est mon cas. J’ai eu plusieurs appareils Nikon (D200, D300, D800) et tous commences avec _DSC0001.NEF.

Je pense qu’il faudrait donc ajouter un chemin, ou l’année… Pour éviter l’ambiguïté une autre information est nécessaire.

La table image dans darktable est:

CREATE TABLE images (id INTEGER PRIMARY KEY AUTOINCREMENT, group_id INTEGER, film_id INTEGER, width INTEGER, height INTEGER, filename VARCHAR, maker VARCHAR, model VARCHAR, lens VARCHAR, exposure REAL, aperture REAL, iso REAL, focal_length REAL, focus_distance REAL, datetime_taken CHAR(20), flags INTEGER, output_width INTEGER, output_height INTEGER, crop REAL, raw_parameters INTEGER, raw_denoise_threshold REAL, raw_auto_bright_threshold REAL, raw_black REAL, raw_maximum REAL, caption VARCHAR, description VARCHAR, license VARCHAR, sha1sum CHAR(40), orientation INTEGER, histogram BLOB, lightmap BLOB, longitude REAL, latitude REAL, color_matrix BLOB, colorspace INTEGER, version INTEGER, max_version INTEGER, write_timestamp INTEGER, history_end INTEGER, altitude REAL);

Donc je pense qu’en ajoutant le modèle (model contient D300, D800…) d’appareil photo on devrait pouvoir s’en sortir.

@pascal, voila:
L’acces à la date de prise de vue est direct, il suffit d’ajouter captureTime dans la requete ou apparait la table adobes_images
Ca sort au format :
2014-04-07T15:59:43.77
ou
2013-10-20T21:12:02.536+00:00
ou
2014-12-27T16:07:55
LR n’a pas de type sur les données des champs dans les tables, donc c’est variable

Si on veut le chemin, c’est plus compliqué, ils sont decoupés de facon inattendue, et il faut parcourir 2 tables, en allant voir sur plusieurs lignes. C’est possible mais bien plus pénible.

V2 ici: https://drive.google.com/open?id=1WQKkxk4sbOFv-wnk5OPuZman1I6FV3Cr

Ca sort ca (mais c’est facile de modifier le format)
troyes ; IMG_2392.CR2|2015-03-07T17:23:51
ou
maison_crozon ; IMG_0468.JPG|2014-10-23T12:42:06.24
mais aussi des cas foireux comme (blanc ou parenthese dans nom de fichier, et date surpremante)
marion ; 1996_02_ZI_ (10).tif|1990-02-08T20:49:34.264+00:00
[hr]

je n’ai pas encore trouvé ou se fait le lien dans LR entre image et APN modele, mais meme avec le meme modele
ca repasse a zero assez rapidement, le Canon 7D2 a une rafale de 11 images a la seconde, et stocke
les noms d’image sur 8 caracteres dont 4 sont toujours les memes (452A???.CR2) donc ca tourne au bout de 9999 photos
ce que je fais regulierement quand je chasse les oiseaux agités.