Suggestion d'évolution: Gestion des fichiers

[color=#000000][size=small][font=Arial]Bonjour à tous.[/font][/size][/color]
[color=#000000][size=small][font=Arial]Dans ma longue phase d’apprentissage de darktable, je me pose beaucoup de questions quant à la gestion de la bibliothèque.[/font][/size][/color]
[color=#000000][size=small][font=Arial]Pour des questions de convenance personnelle, je peux être amené à travailler sur plusieurs machines différentes et, pourquoi pas, tantôt sous Windows et tantôt sous Linux, mes photos se trouvant sur un disque dur externe.[/font][/size][/color]
[color=#000000][size=small][font=Arial]La fonction cruciale qui me manque c’est la possibilité d’indiquer à dartable où se trouve la racine de mes photos (lesquelles sont organisées hiérarchiquement en dossiers par années).[/font][/size][/color]

[color=#000000][size=small][font=Arial]Par exemple si mes photos sont dans E:\photos sur un ordinateur et si, sur un autre ordinateur, le disque se monte sur D: (et que je ne peux changer cela n’ayant pas les droits administrateur), j’aimerais pouvoir indiquer à darktable que E: est devenu D:[/font][/size][/color]
[color=#000000][size=small][font=Arial]Et si je veux utiliser Linux, j’aimerais:[/font][/size][/color]
[list]
[][color=#000000][size=small][font=Arial][color=#000000][size=small][font=Arial]D’une part que la version Linux sache lire les chemins Windows et réciproquement (il me semble qu’actuellement, en lisant la base de données, la version Linux voit les chemins Windows qui s’y trouvent, mais ne sait rien en faire alors que la version Windows ne voit même pas les chemins Linux),[/font][/size][/color][/font][/size][/color]
[
][color=#000000][size=small][font=Arial][color=#000000][size=small][font=Arial]D’autre part indiquer à darktable que E: est finalement /home/user ou alors que /home/user1 est devenu /home/user2.[/font][/size][/color][/font][/size][/color]
[/list]
[color=#000000][size=small][font=Arial]Il n’est bien entendu pas question de réimporter toutes les photos à chaque fois que je change d’ordinateur, ça prend plusieurs heures ! Et je n’ai pas spécialement envie d’aller trafiquer la base de données par un outil externe non plus.[/font][/size][/color]

[color=#000000][size=small][font=Arial]Je sais que je pourrais avoir une base de données “complète” sur l’ordinateur que j’utilise le plus et importer au besoin sur les ordinateurs temporaires, toutes les informations utiles étant dans les fichiers xmp mais, parfois, l’un des travails auxquels je me livre lorsque je n’ai pas envie de réfléchir est le ménage dans certains mots-clés ou le tri des photos correspondant à certains mots-clés. Et pour ça il me faut toute la bibliothèque.[/font][/size][/color]

[color=#000000][size=small][font=Arial]Voilà, j’espère n’avoir pas été trop long. J[color=#000000][size=small][font=Arial]'ai beau avoir recherché sur le forum et dans la doc, je n’ai pas trouvé de réponse à ma question.[/font][/size][/color]Si mon cas d’utilisation parle à certains j’en serais ravi. Et sinon, désolé de déranger avec des sujets hors de propos.[/font][/size][/color]

[color=#000000][size=small][font=Arial]Merci à tous ceux qui contribuent à cet outil.[/font][/size][/color]
[color=#000000][size=small][font=Arial]Bien à vous.[/font][/size][/color]

Une bonne partie de la solution est dans le manuel, § 2.3.2.1 dans le paragraphe « Mise à jour du chemin du dossier ». Bonne lecture !

Bonjour Margu

Je suis d’accord avec toi concernant la « racine » de la photothèque. Comme toi, toutes mes photos sont classées au même endroit, et j’apprécierais aussi d’avoir ce type de fonctionnement, qui éviterait d’ailleurs de devoir importer dans la BDD darktable des images qui se trouvent déjà physiquement sur le disque dur.
Je crois cependant avoir compris que l’avantage du fonctionnement de dt, c’est de pouvoir agréger via l’importation dans une même pellicule des photos stockées un peu n’importe où.

Pour moi il s’agit de deux façons de travailler contradictoires :

  • soit on fixe la racine et on sait que tout se trouvera en-dessous
  • soit on laisse le choix plus ouvert mais on doit alors importer à chaque fois

La première solution est celle du catalogage dans digikam, que j’utilise aussi, et j’avoue que c’est celle qui me paraît la plus naturelle. Mais je crois qu’il s’agit avant tout des goûts de chacun et de sa façon de travailler.

J’utilise darktable avec les photos sur un disque externe formaté en NTFS aussi bien sous Mint 19.3 que sous W10 sans problème. Il faut juste faire migrer les bases de données pour avoir à jour des traitements mais darktable doit aussi savoir récupérer les traitements entre les 2 systèmes s’il voit que les .xmp ont changé.

Oui, merci et j’ai essayé la fonction de déplacement d’un dossier en long en large et en travers avant de poster et… je dois être une quiche car, pour moi, cette fonction n’est pas récursive. Dans le sens où je peux déplacer un dossier contenant des photos mais je ne peux déplacer d’un coup un dossier qui en contient d’autres. Ou alors je suis vraiment une quiche.
Et ça ne résout pas la question des dossiers importés sous Linux et qui n’apparaissent même pas dans la vue « Folders » sous Windows.

Merci. J’ai dû mal m’exprimer. Il ne s’agit pas de débattre sur l’organisation ou non des photos à partir d’une racine unique. Il ne s’agit donc pas de spécifier dans darktable une localisation absolue des photos. Il s’agit de pouvoir modifier le chemin absolu d’une arborescence de fichiers. Et si on utilise plusieurs arborescences, il faudrait pouvoir le faire sur toutes (indépendamment).

Et, donc, « juste faire migrer les bases de données », que se cache derrière ce terme ésotérique pour moi ? Les traitements, mots-clés etc. sont tous dans les fichiers .xmp donc cette partie de pose pas de problème. Ce sont les chemins qui m’en posent.

Je pense que les deux sont liés. Si on peut spécifier une racine unique, on peut aussi modifier le chemin absolu d’une arborescence de fichiers. Mais peut-être est-ce moi qui n’ai pas bien tout capté :huh:

Pourtant il me semblait que c’est ce que tu disais dans ton post de départ :

darktable utilise 2 fichiers pour sa base de données : data.db et library.db que tu trouves expliqués : https://darktable.fr/les-fichiers-de-configuration/ dans ce documet pour chaque système d’exploitation.
J’ai une méthode simple :
j’ai une répertoire /photos sur mon disque externe en NTFS avec un répertoire par APN utilisés :
je crée un répertoire après chaque séance photo : AAAA_MM_JJ avec une déscription simple de la séance et j’ai copie les photos avec un gestionnaire de fichiers.
Après que j’ouvre le répertoire sous Linux ou W10, il va créer les .xmp et la copie dans les bases de données du système utilisé ainsi que les traitements faits.
Si tu fais une copie des 2 fichiers de base de données d’un système d’exploitation vers l’autre (après sauvegarde des 2 fichiers avec leur écrasement), tu dois avoir les fichiers importés et traitements faits dans l’autre système d’exploitation.
Sinon, lorsque tu vas ouvrir le(s) répertoires, darktable va :
détecter que les photos n’ont pas été traitées dans ce système car elles ne sont pas dans la base de données, il va y recopier les .xmp :
soit si elles ont été traitées dans l’autre système, il détecte un différence entre le la base de données et le .xmp dans le répertoire et va te demander ce qu’il doit faire :
soit le mettre à jour ; soit l’écraser.

En principe si, elle est récursive. Sauf que… Je viens d’essayer et que la fonction ne fonctionne plus sur ma version 3.1.0+1731. Je vais regarder ça.

Concernant l’affichage des chemins Linux sous Windows, je ne sais pas… Je n’ai pas dit dans mon premier message que ça réglait tous les problèmes. J’ juste dit "une bonne partie ;-). À ce propos, j’ai lu cette semaine que la dernière M.à.J. de W10, intègre nativement un système Linux complet. L’accès aux filesystems Linux devrait se faire sans problème dans l’explorateur… À tester.

@G.Eco: je réagissais à « Pour moi il s’agit de deux façons de travailler contradictoires : » J’ai pas cité la bonne partie du message, désolé

@jpverrue, j’aurais peut-être dû préciser, je suis en 3.0.2. Ca ne m’arrange pas que la fonction dysfonctionne mais je préfère ça que de ne rien comprendre :wink:
Et sinon on peut effectivement essayer de tester des chemins « à la Linux » sous Windows mais je n’ai pas encore testé cette intégration de Linux dans Windows.

@jpg54 Alors merci beaucoup pour cette explication sauf que… j’ai rien compris ! J’utilise les mêmes bases de données entre Linux et Windows (le répertoire de configuration de darktable est sur mon disque dur externe) mais les chemins des photos entre les deux systèmes ne sont pas du tout les mêmes donc un dossier importé sur l’un des deux systèmes ne se retrouve pas sur l’autre sauf à modifier son chemin (cf. ci-dessus) ou à le réimporter. Il y a manifestement quelque chose que je ne comprends pas ou que je fais de travers.

Bon… Je viens de comprendre le PB. Il y a effectivement un bug et j’ai mis le doigt dessus. Mais je ne sais pas si ta difficulté viens de là.
Explications : j’ai fait mon essai de tout à l’heure avec un dossier (et ses sous dossiers), qui contient une apostrophe dans le nom (mauvaise idée, mais bon…). Il s’avère que dans cette fonction de renommage, la prise en charge des caractères spéciaux n’est pas implémentée. Du coup pas moyen de renommer. L’accès au dossier dans BdD échoue lamentablement. Je viens de refaire l’essai avec un autre dossier - sans caractères spéciaux dans le nom. Aucun pb. Tout fonctionne normalement. J’en ai profité pour regarder le code. JE te confirme que la prise en charge de la récursivité est bien là. Le second essai que j’ai fait me l’a prouvé. Le dossier visé, et tous ses sous dossiers on bien été renommés.
Je m’en vais de ce pas faire la correction et la proposer à la validation, pour que la gestion des noms de dossiers « exotiques » soit prise en compte dans cette fonction, comme dans le reste de darktable.

Tu cherches à te compliquer la vie, laisses les répertoires config pour chaque système et utilises la 2 ème méthode que je te propose et laisses faire le système et darktable qui saura trouver ses petits.
Je viens de voir la réponse de Jean-Pierre, pour ceux qui veulent travailler avec 2 systèmes d’exploitation, je déconseille les lettres accentuées et les caractères spéciaux dans les noms de fichiers et de répertoires.

Merci, merci de faire cas de ma demande.

Pour le déplacement des dossiers, effectivement, ça semble marcher.
Je n’utilise que des chiffres, des lettres, des tirets et des soulignés dans mes noms de dossiers.
Pour que ça fonctionne correctement et afin que darktable me montre le dossier racine dans la vue « folders » il faut que j’ai importé des images qui soient ailleurs que dans cette racine.
Mais après quelques opérations d’aller et retour entre deux arborescences, la présentation dans la vue « folders » n’est plus la même qu’au départ, certains répertoires étant présentés à plat.
(C’est un peu compliqué à expliquer. Par exemple si au départ j’ai un répertoire « photos » dans lequel il y a les sous-répertoires 2020, 2019, 2018, 2017…, et dans eux-mêmes des sous répertoires, après quelques relocalisations de « photos », la vue « folders » me montre « à plat » 2020/sousdir1 2020/sousdir2 2019/sousdir3…, bref, tous mes répertoires photo ce qui peut faire beaucoup.)
Il y a sans doute des choses que je n’ai pas comprises mais quand j’aurai réussi à importer toutes mes photos, je vais éviter ce genre de manipulations, c’est trop risqué (et l’importation est trop longue).
Mais, encore une fois, merci.
[hr]

C’est très gentil à toi mais je n’ai toujours pas compris quelle est ta méthode.
Je déduis de ce que tu me racontes que tu importes les photos sous les deux systèmes.
Et que donc tu gères deux jeux de bases de données (au moins deux « library.db »), une pour Linux et une pour Windows (et si, pour chacun des deux OS, c’est toujours avec le même PC que tu bosses, tu peux effectivement laisser les db à leurs emplacements par défaut mais moi, je suis susceptible d’utiliser plusieurs PC Windows et plusieurs PC Linux).
Ce qui suppose, à chaque fois que tu changes de système, de réimporter toutes les photos que tu avais importées sur l’autre système, darktable se chargeant de retrouver tous les réglages depuis les xmp.
J’ai bon ?
C’est pas inutilisable comme méthode mais il va falloir que j’importe deux fois toutes mes photos (deux nuits, en gros) pour amorcer la pompe.
Ah oui et mes noms de répertoires contiennent exclusivement des chiffres, des lettres (sans accent), des tirets et des soulignés. Et les noms des fichiers sont ceux donnés par les APN.

Re-bonjour.

J’ai fini par trouver un mode de fonctionnement qui me convient à peu près, en utilisant effectivement une base de données (library.db) par système et en important les photos sur chaque système (je garde une data.db commune). Le petit inconvénient résiduel, ce sont les photos qu’on supprime physiquement sur un système (après les avoir rejetées par exemple) dont il faut ensuite retirer les vignettes à la space invaders sur l’autre système. J’ai lu qu’il existait des scripts pour ça mais je ne me suis pas encore penché sur la question.

L’importation de toutes mes photos sous darktable n’a pas été une mince affaire (d’autant qu’il a fallu le faire deux fois, une fois sous Windows et une fois sous Linux). J’ai procédé en plusieurs étapes, répertoire par répertoire car s’il y a « trop » de photos d’un coup, darktable mouline en tâche de fond, sans donner de feedback, pendant des heures et on ne sait pas si c’est parce qu’il continue de bosser ou si c’est parce qu’il s’est planté. Lorsque le nombre de photos est raisonnable (200-300) tout se passe bien.

Il me reste maintenant à comprendre les arcanes du développement sous darktable et ce n’est pas gagné. Quand on regarde les tutos, tout a l’air simple mais, en pratique, dès que j’ai des écarts de luminosité un peu importants, pour l’instant, je patauge et je ne parle même pas des couleurs.

C’était une bonne solution d’importation fragmentée. Tu pourrais proposer des RAW en téléchargement (FramaDrop par exemple) pour avoir des idées de traitements des membres.

Oui je vais sans doute faire ça car je n’y arrive vraiment pas !

Je peux te dire que j’ai été confronté à ce problème à mes débuts avec darktable et mon portable a bien failli passer le permis de vol. Puis il y a eu les tutos de CaraFife et tout est devenu limpide. Un conseil : tu prends un module et tu le tritures dans un tout les sens pour voir jusqu’où tu peux l’utiliser et ensuite tu passes à un autre module. Pour moi, je suis assez fainéant et moins j’utilise de modules et plus je suis content.

Très bonne suggestion. Comme je viens de débarquer, je m’étais concentré sur les tutos plus « récents », articulés autour de filmique notamment mais je crois que, du coup, j’ai un peu négligé l’apprentissage de base ce qui explique que je ne comprenne rien (sans compter que j’ai quelques années d’habitudes sur un autre logiciel qui ne fonctionne pas de la même manière).

Voici la liste des scripts disponibles avec une distrib’ standard de darktable :
[list]
[]common.sh
[
]extract_wb_from_images.sh
[]purge_from_cache.sh
[
]purge_non_existing_images.sh
[*]purge_unused_tags.sh
[/list]Certaines distributions ne les fournissent qu’à travers un paquet supplémentaires, mais il est toutefois parfaitement possible de les télcharger sur https://github.com/jpverrue/darktable
Il sont installés ici sur un système Linux : $(ROOT_INSTALL)/share/darktable/tools/
$(ROOT_INSTALL) étant par défaut /usr, ou /opt/darktable en cas de compilation « à la maison »

Je ne sais rien de la disponibilité de ces scripts dans un environnement Windows.

Tu auras très certainement besoin de purge_non_existing_images.sh et de purge_from_cache.sh

P-s. : common.sh est nécessaire aux 4 autres.

OK, merci, vu les scripts, ils sont préinstallés chez moi.
En bossant un peu je devrais être capable de les modifier pour faire la purge dans la base de données Windows en tenant compte de la correspondance des chemins. Je devrais même réussir à migrer une db Linux vers une db Windows et réciproquement et m’affranchir du maintien de deux db. Mais ce ne sera pas pour tout de suite.

Oui, si tu maîtrise SQL, c’est assez facile à faire, surtout qu’il n’y a qu’une table en cause.