Bibliothèque

Cataloguez chaque disque, retrouvez la même image où qu’elle soit, et sachez si supprimer une copie fait perdre quelque chose.

Sur cette page
1:11
Commenté en anglais, avec sous-titres. Lu depuis YouTube lorsque vous lancez la lecture.

Tout photographe qui a plus de quelques années de travail a la même image à quatre endroits : l’importation de la carte, le dossier que quelqu’un a copié sur un disque de sauvegarde, le DNG qu’un convertisseur en a tiré, et le JPEG parti chez un client. La bibliothèque catalogue chaque image de chaque disque que vous lui indiquez : vous parcourez tout au même endroit, même quand un disque est dans un tiroir, et elle vous dit lesquels de ces fichiers sont la même image — et, pour chacun, si le supprimer ferait perdre quelque chose.

La vue Library#

0:10
Commenté en anglais, avec sous-titres. Lu depuis YouTube lorsque vous lancez la lecture.
La vue Library : chaque image de chaque disque, par disque et dossier, date, album, mot-clé, personne, lieu, appareil et objectif. L’année choisie à gauche est ce sur quoi travaille la grille à côté.
La vue Library : chaque image de chaque disque, par disque et dossier, date, album, mot-clé, personne, lieu, appareil et objectif. L’année choisie à gauche est ce sur quoi travaille la grille à côté.

Ouvrez-la avec Cmd+Shift+L, View → Library ou le menu des vues dans la barre d’informations. Le panneau de gauche liste ce que contient la bibliothèque, chaque entrée avec son nombre d’images :

  • All Pictures
  • Sources — chaque disque ou dossier, avec son espace libre, ou la date à laquelle il a été vu pour la dernière fois s’il n’est pas branché ; ouvrez-en un pour voir ses dossiers
  • Dates — les années, puis les mois, puis les jours, dans votre fuseau horaire ; Undated pour les images sans heure de prise de vue
  • Collections — vos albums et vos recherches enregistrées
  • Published — les albums tenus sur un événement ou dans un dossier, et où en est chacun ; voir Publier des albums
  • Keywords, People, Places, Cameras et Lenses

Ce que vous choisissez s’ouvre dans la grille à côté, comme ce sur quoi travaille la fenêtre : notez, marquez, développez, exportez et publiez exactement comme dans un dossier, et chaque changement arrive dans le dossier de l’image. Une image sur un disque non branché s’affiche à partir de l’aperçu enregistré par la bibliothèque, et une action qui a besoin du fichier dit quel disque brancher.

Le champ au-dessus de la grille cherche dans ce qui est choisi — les mots des légendes, titres, mots-clés, personnes, lieux, boîtiers, objectifs et noms de fichiers. Le menu à côté trie par heure de prise de vue, nom, note, date d’ajout ou date de dernière retouche ; un album s’ouvre dans son propre ordre. Save Search… garde ce qui est choisi et cherché comme recherche enregistrée sous Collections.

Une bibliothèque vide propose Add a Disk or Folder…, et Import Lightroom Catalog… quand un catalogue est trouvé dans ~/Pictures/Lightroom.

Par l’API, POST /api/library/view choisit, cherche, trie et ouvre la vue ; GET /api/library/browse renvoie ce que liste le panneau.

Rechercher par ce que montre l’image#

Le champ de recherche trouve aussi les images par ce qu’elles montrent, en mots simples et dans votre propre langue — un héron sous la pluie, a bird on a branch, remise des prix — sans que personne y ait écrit de mots-clés. Search by Content… à côté du champ télécharge une fois le modèle de contenu (environ 230 Mo). La bibliothèque lit ensuite ses images en arrière-plan, à partir des aperçus qu’elle garde déjà, les plus récentes d’abord, en s’effaçant dès que vous triez. La barre indique où elle en est, et une recherche trouve les images déjà lues.

Le menu à côté du champ choisit ce qu’il cherche : Words and Content (d’abord les mots écrits dans les fichiers, puis les images les plus proches de ce que vous avez écrit), Words ou Content. Une recherche par contenu s’affiche de la plus proche à la moins proche, en Best Match.

Faites un clic droit sur une image et choisissez Find Similar in Library pour voir les images qui lui ressemblent, sur tous les disques de la bibliothèque, la plus proche d’abord.

Le modèle lit l’anglais, le norvégien, le suédois, l’allemand, le finnois, le français, l’espagnol et plus de quarante autres langues. Ce sont CLIP d’OpenAI pour les images et un modèle de texte multilingue entraîné à le rejoindre, tous deux exécutés sur cet ordinateur : aucune image ne le quitte. Dans l’API : content et similar_to dans POST /api/catalog/search et les recherches enregistrées, search_by dans POST /api/library/view, et GET /api/library/content pour l’avancement (SDK : client.library.content()).

Albums, collections dynamiques et ensembles#

0:11
Commenté en anglais, avec sous-titres. Lu depuis YouTube lorsque vous lancez la lecture.
Une nouvelle recherche enregistrée : chaque règle qu’une image doit remplir, et combien d’images de la bibliothèque les remplissent pendant que vous modifiez.
Une nouvelle recherche enregistrée : chaque règle qu’une image doit remplir, et combien d’images de la bibliothèque les remplissent pendant que vous modifiez.

Collections, dans le panneau de la vue Library, contient vos albums (des images réunies à la main, depuis n’importe quel dossier et disque) et vos collections dynamiques (des recherches enregistrées, qui retrouvent leurs images à chaque fois), dans des ensembles de collections qui peuvent contenir leurs propres ensembles. Chacune indique combien d’images elle contient ; pour une collection dynamique, c’est ce qu’elle trouve maintenant.

  • + New crée un album, une collection dynamique ou un ensemble. Faites un clic droit sur un ensemble pour en créer un à l’intérieur ; faites glisser une collection ou un ensemble sur un autre ensemble pour l’y déplacer, ou sur l’espace vide en dessous pour le placer en haut.
  • Faites un clic droit sur une collection pour la renommer, la dupliquer ou la supprimer, modifier une collection dynamique, ou faire d’un album l’album cible.
  • Mettez des images dans un album en les faisant glisser depuis la grille, avec Add to Album dans le menu de l’image (avec New Album…), ou avec Shift+B, qui met les images sélectionnées — ou celle à l’écran — dans l’album cible, et les en retire quand toutes y sont déjà. La barre d’informations montre la cible et son nombre ; cliquez dessus pour en choisir une autre. Sans cible, Shift+B fait de la Quick Collection la cible. Dans un album, Remove from "…" dans le menu de l’image retire des images.
  • Une image de l’album cible porte un signet dans la grille, le bandeau et Survey, et le nom de l’album sur l’image dans Develop et en plein écran, quel que soit le dossier ouvert. Dans le menu du filtre, Album … ne montre que les images qui y sont (Dedans) ou que celles qui n’y sont pas (Pas dedans). Avec Pas dedans, Shift+B retire une image de la vue dès qu’elle y entre, si bien qu’un passage sur une carte ne laisse que ce qui reste à choisir. Un RAW de la carte compte comme dans l’album quand l’album contient la même prise dans un autre fichier — le DNG DxO qu’une livraison en direct a envoyé —, reconnue à l’appareil et à l’instant de la prise, à la fraction de seconde près. Un fichier sans cette fraction (un appareil plus ancien, une capture d’écran) n’est dans l’album que pour lui-même. Mettre un tel RAW dans l’album le laisse de côté et indique quel fichier s’y trouve, si bien que l’image ne part jamais deux fois. Remplacer … dans « … » dans le menu de l’image le met à la place de ce fichier : il est envoyé par-dessus la photo publiée, qui garde sa place et les liens de ses acheteurs. Une photo achetée n’est jamais remplacée. L’étape Add to Album d’un workflow laisse de côté de la même façon un second fichier d’une prise, comme le JPEG d’un appareil qui envoie son JPEG et son RAW.
  • L’éditeur de collection dynamique liste les règles : mots, mots-clés, personnes, lieux, légendes, boîtier, objectif, note, drapeau, libellé, type de fichier, retouchée, publiée, date de prise de vue (un jour donné, ou les derniers jours), modifiée ces derniers jours, a des mots-clés, a une légende, netteté, dossier, album et disque. La collection correspond à toutes ou à l’une d’elles, et + Group ajoute un groupe avec toutes ou l’une de ses propres règles — « trois étoiles ou plus, et le mot-clé relais ou natation ». Elle compte ce qu’elle trouve pendant que vous la modifiez. Save as Smart Collection… dans les colonnes de filtres enregistre ce que montre la fenêtre comme collection dynamique.

Un album tient ses images par leur place dans la bibliothèque, donc une image déplacée dans le Finder y est toujours après le scan suivant. Une image mise à la corbeille quitte ses albums, et l’application dit lesquels. Info dans le panneau latéral liste les albums et collections dynamiques dont fait partie l’image à l’écran. Deliver → Deliver Event Folder… peut appliquer son flux aux images d’un album ou d’une collection dynamique plutôt qu’à un dossier.

Par l’API, /api/library/collections liste, crée, modifie et supprime les collections, met des images dans un album ou les en retire, et définit la cible ; /api/library/collection-sets fait de même pour les ensembles.

Les disques non branchés#

Les images d’un disque non branché sont toujours trouvées par chaque recherche, filtre, collection et séance, affichées à partir de l’aperçu enregistré avec le nom du disque dessus. La barre d’informations et le panneau latéral disent où elles sont — « On Archive-3 (not connected, last scanned 12 March 2026) » — et OFFLINE dans la barre de filtres les retire de la fenêtre, ou les montre de nouveau.

L’arborescence des dossiers : les favoris en haut, les dossiers ouverts récemment en dessous, et chaque disque avec le nombre d’images dans chaque dossier.
L’arborescence des dossiers : les favoris en haut, les dossiers ouverts récemment en dessous, et chaque disque avec le nombre d’images dans chaque dossier.

Ce qui peut se faire sans le fichier est fait : notes, drapeau, libellé, mots-clés, légende et autres champs IPTC, et albums changent tout de suite dans la bibliothèque, et sont écrits dans les images quand le disque est branché — la barre d’informations dit combien de changements attendent. Seul ce qui a changé est écrit : un champ que la bibliothèque ne connaît pas reste tel que le fichier l’a. Ce qui a besoin du fichier le dit : développement, recadrage, rotation et exportation répondent « Connect Archive-3 to … ». Quand le disque revient, l’image à l’écran s’ouvre d’elle-même.

Par l’API, connected figure sur chaque fichier renvoyé par les routes de la bibliothèque, et GET /api/library/pending-writes liste ce qui attend ; hide_offline dans POST /api/filter exclut ces images.

Les images présentes sur un seul disque#

Les disques ne coûtent pas cher ; les images perdues, si. Une fois vos disques scannés, la bibliothèque sait quelles images n’existent que sur un seul disque physique. Une copie compte quand c’est le même fichier, ou la même image avec d’autres métadonnées (un DNG avec un nouveau XMP), ou les mêmes données de capteur ; un JPEG exporté est une autre image, pas une copie. Deux partitions d’un même disque font un seul disque, et un disque non branché compte quand même.

To Do → Not backed up ouvre ces images, la liste Sources indique combien sur chaque disque sont only here, et la carte d’une séance dit combien de ses images ne sont que sur un disque. Back Up to… sous To Do les copie toutes dans un dossier d’un autre disque, dans <dossier>/<disque>/<leur chemin dessus> avec leurs fichiers annexes, vérifie chaque copie contre l’original et scanne le dossier, pour que le compte baisse. Les images d’un disque non branché attendent qu’il le soit. Faites un clic droit sur un disque sous Sources, ou sur une séance, pour ne sauvegarder que ses images. Une image présente sur un même disque dans plusieurs dossiers n’est copiée qu’une fois.

Par l’API : GET /api/library/backup-coverage, POST /api/library/backup-copy ({"scope": {"kind": "all"}, "dest": "/Volumes/Backup"}, ou pour une source ou une séance), et unbacked sur chaque séance.

Séances#

0:12
Commenté en anglais, avec sous-titres. Lu depuis YouTube lorsque vous lancez la lecture.
Séances : la bibliothèque en frise, chaque séance une carte avec son nom, ses dates, où elle en est, et sa meilleure image.
Séances : la bibliothèque en frise, chaque séance une carte avec son nom, ses dates, où elle en est, et sa meilleure image.

Shoots, dans le panneau de la vue Library, montre des années d’images comme vous vous en souvenez : « l’arrivée du Kystjegerløpet », « le mariage de Kari », « les Lofoten en mars ». Une séance se déduit de l’heure des prises de vue, tous boîtiers confondus : un écart de plus d’une heure, ou un déplacement de plus de 25 km entre deux images avec position, en commence une nouvelle (les deux se modifient par l’API, PUT /api/library/shoots/rules). La frise remonte année par année avec une carte par séance : sa couverture, son nom, ses dates, son lieu, son nombre d’images et ses boîtiers. Cliquez sur une carte pour voir ses images.

  • Une séance prend le nom d’un album qui contient la plupart de ses images (un album publié sur eventphotos, ou la sélection d’une livraison), sinon du dossier qui en contient au moins la moitié, sinon du lieu où se trouve l’essentiel, sinon de ses dates.
  • Faites un clic droit sur une carte pour la renommer (Rename) ou la fusionner avec la précédente (Merge with the Shoot Before). Sur une image, Shoot → Start a New Shoot Here coupe sa séance à cette image, et Use as Shoot Cover en fait la couverture ; sinon la couverture est l’image la mieux notée, puis une retenue, puis la plus nette. Ce que vous changez reste quand la bibliothèque est scannée de nouveau.
  • La colonne Shoot du filtre et la règle In the shoot des collections dynamiques choisissent les images par séance.

Par l’API : GET /api/library/shoots, POST /api/library/shoots/edit (renommer, fusionner avec la précédente, couper à une image, couverture) et PUT /api/library/shoots/rules (les heures et les kilomètres) ; ouvrez une séance avec POST /api/library/view et le choix {"kind": "shoot", "at": <startMs>}.

Ce qui reste à faire#

Ce qui reste à faire : les images pas encore triées, les retenues pas encore développées, et ce qui est retouché mais pas livré.
Ce qui reste à faire : les images pas encore triées, les retenues pas encore développées, et ce qui est retouché mais pas livré.

Chaque carte dit où en est sa séance, d’après ce que sait la bibliothèque (aucun fichier n’est lu) : Not culled (aucune image n’a d’étoiles, de drapeau ou de libellé), Culled (marquée, rien de retouché ; Picks to develop quand des retenues ne sont pas développées), Edited, not delivered ou Delivered (une image exportée, envoyée ou publiée sur eventphotos ou dans le journal). La colonne Shoot Status du filtre choisit les images selon ce statut.

To Do dans le panneau liste les séances non triées, les retenues non développées et les images retouchées non livrées, avec leur nombre ; cliquez sur l’une pour voir ces images. Faites un clic droit sur une carte pour Mark Done — retirée des listes, sans changer aucune image — et utilisez Mark Year Done sur une année pour retirer d’un coup des listes une archive terminée depuis longtemps.

Par l’API : GET /api/library/todo, le statut dans GET /api/library/shoots, done et done_between dans POST /api/library/shoots/edit, et le choix {"kind": "todo", "list": "not_culled"} (ou picks_not_developed, edited_not_delivered).

Mots-clés#

0:13
Commenté en anglais, avec sous-titres. Lu depuis YouTube lorsque vous lancez la lecture.

Keywords, dans le panneau de la vue Library, liste chaque mot-clé de vos images, sur chaque disque, sous forme d’arbre avec le nombre d’images de chacun — la hiérarchie est celle qu’écrit Lightroom (Places|Norway|Stavanger), donc une liste de mots-clés faite là-bas a le même aspect ici. Les mots-clés de votre liste qu’aucune image n’a encore sont grisés. Cliquez sur un mot-clé pour voir chaque image qui l’a, ou qui a un mot-clé en dessous.

  • Faites un clic droit sur un mot-clé pour le renommer (Rename), le fusionner avec un autre (Merge Into), le placer en haut (Move to the Top), lui donner des synonymes (Synonyms), l’exclure des fichiers exportés (Include on Export), peindre avec (Paint with It) ou le supprimer (Delete). Faites glisser un mot-clé sur un autre pour le placer dessous.
  • Un renommage, une fusion, un déplacement ou une suppression est écrit dans chaque image qui a le mot-clé, dans son fichier annexe ou dans le fichier, avec le reste de ses métadonnées inchangé, et la ligne sous le titre dit où cela en est. Undo remet les mots-clés de chaque image comme ils étaient. Les images d’un disque non branché sont écrites quand il revient ; le panneau dit combien attendent.
  • Une recherche sur un synonyme trouve les images du mot-clé, et un fichier exporté porte les synonymes. Un mot-clé non inclus à l’exportation reste dans vos propres fichiers et n’apparaît pas dans ceux qui sont exportés.
  • + New ajoute un mot-clé à la liste, et importe ou exporte la liste au format texte de Lightroom (Metadata → Export Keywords et Import Keywords dans Lightroom) : un mot-clé par ligne, une tabulation de plus par niveau, {synonyme} et [not exported].
  • Paint with It fait du mot-clé le mot-clé pinceau : Shift+K ou Metadata → Paint Keyword le pose sur les images sélectionnées — ou celle à l’écran — et le retire quand toutes l’ont. La barre d’informations l’affiche ; cliquez dessus pour arrêter de peindre.

Par l’API, /api/library/keywords renvoie l’arbre avec les nombres, et ses routes renomment, fusionnent, déplacent et suppriment un mot-clé, annulent, définissent des synonymes, lisent et écrivent la liste au format de Lightroom, et définissent et peignent le mot-clé pinceau (client.library.keywords(), renameKeyword() et les autres).

Disques et doublons#

0:15
Commenté en anglais, avec sous-titres. Lu depuis YouTube lorsque vous lancez la lecture.
Disks & Duplicates, après le scan d’une arborescence. Chaque groupe est une image et chacune de ses copies trouvées — et la relation dit de quel type de copie il s’agit, pour savoir si la supprimer fait perdre quelque chose.
Disks & Duplicates, après le scan d’une arborescence. Chaque groupe est une image et chacune de ses copies trouvées — et la relation dit de quel type de copie il s’agit, pour savoir si la supprimer fait perdre quelque chose.

Disks & Duplicates en bas du panneau, ou Library → Disks & Duplicates, regroupe les outils pour les copies et les disques.

Ajouter un disque#

Disques : chaque source de la bibliothèque, branchée ou non, avec ce qui y est catalogué et les dossiers à ignorer.
Disques : chaque source de la bibliothèque, branchée ou non, avec ce qui y est catalogué et les dossiers à ignorer.

Dans l’onglet Disks, appuyez sur Add folder or disk… et choisissez un dossier ou la racine d’un disque. C’est une source. Les disques branchés qui ne sont pas encore des sources sont listés en dessous, sous « Connected, not in the library », avec chacun un bouton Add.

Une source est identifiée par l’UUID du volume du disque plutôt que par son chemin, donc un disque monté ailleurs le mois prochain reste la même source, avec tout ce qui y a déjà été scanné.

Les sources ne peuvent pas se chevaucher. Si /Volumes/Archive est une source, /Volumes/Archive/2019 ne peut pas en être une aussi — le même fichier sous deux sources serait trouvé comme doublon de lui-même. Retirez la première si vous voulez la seconde.

Pour exclure un dossier, tapez son chemin relatif à la racine de la source dans « folder to skip » et appuyez sur Skip folder. L’exclusion supprime aussitôt ce qui est déjà catalogué dessous, et dit combien de fichiers c’était. Annuler l’exclusion ne les ramène pas ; le dossier est parcouru de nouveau au scan suivant.

Certains endroits ne sont jamais parcourus : les dossiers système, ~/Library, la corbeille, les bibliothèques Photos, .git et node_modules.

Le scan#

Scan connected disks scanne chaque source branchée ; chaque carte de source a son propre Scan pour elle seule. Le bouton devient Cancel scan pendant un scan, et une annulation prend effet au fichier suivant.

Un scan se fait en cinq passes, et la ligne d’état nomme celle en cours :

  1. Listing files — les entrées de répertoire seulement. Rien n’est lu.
  2. Reading headers — le conteneur, l’heure de prise de vue, la note et une empreinte rapide des 64 premiers ko.
  3. Comparing possible copies — le fichier entier et ses données d’image sont hachés, mais seulement pour les fichiers dont l’empreinte rapide correspond déjà à autre chose. La plupart des fichiers ne sont jamais lus au-delà de leur en-tête.
  4. Comparing raw data — les valeurs du capteur sont décodées, pour une prise de vue qui existe sous forme de deux fichiers aux données d’image différentes. C’est ce qui associe un CR2 au DNG qui en a été tiré.
  5. Comparing images without metadata — désactivé sauf si vous le demandez. Voir ci-dessous.

Les résultats apparaissent pendant le scan : les groupes sont recalculés toutes les quelques secondes à mesure que de nouveaux hachages arrivent, puis une dernière fois à la fin.

Un seul scan tourne à la fois, et une source ne peut pas être retirée pendant un scan.

Les images sans métadonnées d’appareil#

L’onglet Disks a un réglage : Also compare images without camera metadata by how they look (slower). Activé, le scan ajoute un hachage perceptuel pour les fichiers sans aucune identité de prise de vue — captures d’écran, téléchargements, tout ce qui a perdu son EXIF — et les rapproche par leur apparence.

Il est désactivé par défaut parce qu’il décode un aperçu de chacun de ces fichiers. Le seuil est volontairement serré : une copie réencodée ou redimensionnée d’une image reste à quelques bits près, alors que la vue prise une demi-seconde plus tard non.

Les réglages s’appliquent à partir du scan suivant, pas rétroactivement.

Les aperçus de chaque image#

La bibliothèque garde un petit aperçu de chaque image sur cet ordinateur, pour qu’on puisse parcourir un disque débranché. Un scan les crée à partir de l’aperçu que l’appareil a mis dans le fichier, pendant qu’il lit de toute façon le fichier ; un dossier ouvert dans photosuite les obtient sans scan. Une image que vous développez, recadrez ou tournez s’affiche ainsi une fois le changement enregistré, et telle que prise de vue à nouveau quand vous la réinitialisez.

Stored previews dans l’onglet Disks règle leur taille — 256, 384 ou 512 pixels sur le grand côté, ou aucun — et dit la place qu’ils prennent. Une nouvelle taille est créée au scan suivant. Un appareil qui ne met aucun aperçu dans ses fichiers (certains d’avant 2005) n’en a pas.

Sauvegardes#

L’essentiel de ce que sait la bibliothèque revient avec un scan, parce que les marques et les mots sont dans les images. Vos albums, vos recherches enregistrées et ce qui a été déplacé où ne reviennent pas, donc la bibliothèque est sauvegardée — chaque semaine sauf si vous choisissez autre chose, et avant chaque mise à jour qui change son mode de stockage. L’onglet Disks dit à quelle fréquence, combien de sauvegardes sont gardées (huit sauf si vous choisissez autre chose), et où elles vont : un dossier que vous choisissez, ou sinon un dossier sur un autre disque de la bibliothèque que celui de cet ordinateur, pour qu’un disque qui lâche n’emporte pas les deux. Chaque sauvegarde contient aussi chaque album sous forme de simple liste de ses images.

La bibliothèque est vérifiée avant chaque sauvegarde, et une bibliothèque endommagée n’est jamais sauvegardée par-dessus les bonnes copies. Si elle est endommagée, la barre d’informations le dit et propose Restore from Backup… ; si les sauvegardes sont arrêtées depuis deux fois leur intervalle, elle propose Back Up Now. Restore… à côté d’une sauvegarde remet la bibliothèque telle qu’elle était alors, avec ses albums et recherches enregistrées, et scanne les disques branchés pour que ce qui a changé dans les images depuis revienne.

Sur vos autres appareils#

Votre téléphone et vos autres ordinateurs peuvent parcourir les albums et dossiers que vous choisissez, sans les fichiers, avec FLOGVIT.plus. Faites un clic droit sur un album ou un dossier dans la vue Library et cochez Available on My Devices : un aperçu de chacune de ses images — développée, recadrée et tournée comme ici — va sur le site de photosuite, avec la date de prise de vue et l’appareil. Décochez, et ils sont retirés. Rien n’y va sans que vous l’y mettiez, car les aperçus prennent de la place sur le site.

Les étoiles, drapeaux, libellés, le développement, le recadrage et l’IPTC vous suivent de toute façon d’un ordinateur à l’autre, pour chaque image, quand Keep marks and edits in step with my other devices est activé dans les Réglages.

Quand des fichiers bougent ou disparaissent#

Un disque de la bibliothèque est scanné en arrière-plan quand il est branché ; la barre d’informations dit ce que fait le scan et a un bouton pour l’arrêter. Seul ce qui a changé depuis le dernier scan est relu.

Un dossier renommé ou déplacé dans photosuite, des images déplacées vers un autre dossier et un renommage par lot changent tout de suite la bibliothèque, et les albums gardent leurs images aux nouveaux chemins. Déplacée dans le Finder, une image est retrouvée au scan suivant où qu’elle soit sur un disque de la bibliothèque : même contenu de fichier, ou même prise de vue du même appareil, à un nouveau chemin. Elle garde tout ce qui s’y rattache, et les albums suivent.

Un fichier que le scan ne trouve nulle part est missing, pas oublié. Chaque carte de source de l’onglet Disks liste ses fichiers manquants avec leur dernier chemin. Locate… demande le dossier où se trouve maintenant l’un d’eux, et chaque fichier manquant de son ancien dossier qui s’y trouve sous le même nom suit. Forget est pour les fichiers disparus pour de bon. Les fichiers manquants sont exclus des recherches et des groupes de doublons.

Ce que veut dire « la même image »#

Deux fichiers peuvent être identiques de six façons différentes, et laquelle décide si vous pouvez en jeter un sans risque. La relation est indiquée à côté de chaque fichier, en vert quand les copies sont interchangeables et en orange quand elles ne le sont pas.

Relation Ce qu’elle signifie En supprimer une sans risque ?
Identical file Le même fichier, octet pour octet. Oui
Same image, different metadata Les mêmes pixels ; les notes, mots-clés ou IPTC diffèrent. Oui, mais fusionnez d’abord les métadonnées
Same raw data, different file Les mêmes valeurs de capteur dans un autre conteneur ou une autre compression — un RAW et son DNG sans perte. Oui
Same capture, different version Une exposition, deux images : un export, une retouche, un DNG avec perte. Non — les pixels diffèrent
Looks identical (no metadata) Aucune identité de prise de vue d’un côté comme de l’autre, mais elles se ressemblent. N’apparaît qu’avec le réglage perceptuel activé. À vous de juger
Related Dans ce groupe seulement par un autre fichier. À vous de juger

Les trois premières sont ce que l’application appelle interchangeables : en supprimer une fait perdre au plus des métadonnées. Les autres sont des versions, et une version est une autre image.

L’identité de prise de vue, c’est la marque et le modèle de l’appareil plus l’heure de prise de vue jusqu’à la fraction de seconde. Sans fractions, toute une rafale partage la même clé, donc elles ne comptent jamais comme la même prise de vue. Le numéro de série du boîtier est volontairement laissé hors de la clé, parce que les exports le retirent — mais quand les deux fichiers en ont un et qu’ils diffèrent, le rapprochement est refusé.

Décider de ce qui reste#

L’onglet Duplicates liste les groupes, ceux qui libèrent le plus d’espace en premier, avec une pastille de filtre par relation présente. Choisissez un groupe et chaque copie s’affiche à droite avec un aperçu et ses caractéristiques : taille, dimensions, boîtier, date de prise de vue, note et disque où elle se trouve.

  • Keep marque celle qui reste. Elle commence sur le premier fichier branché du groupe.
  • Trash marque un fichier à jeter. Un fichier sur un disque débranché ne peut pas être marqué.
  • Mark all interchangeable copies coche chaque fichier qui est la même image que celle que vous gardez — le cas courant, d’un seul geste.
  • Move N files to Trash redemande une fois, puis les déplace.

Des badges vous préviennent avant que vous ne perdiez quelque chose : has .xmp sidecar, has develop settings or edit history, disk not connected, inside a folder copy.

Deux garde-fous qu’on ne franchit pas par accident. Un groupe entier ne peut jamais être jeté — un fichier reste toujours. Et marquer quelque chose qui n’est pas la même image que celle que vous gardez — un export, une retouche — exige de cocher Yes, trash those versions too, car ces pixels n’existent nulle part ailleurs.

Jeter signifie la corbeille du système. Les fichiers restent récupérables jusqu’à ce que vous la vidiez ; le catalogue les oublie aussitôt. Les fichiers annexes suivent leur fichier, sauf un fichier annexe partagé avec un autre fichier du même dossier, qui reste.

Un fichier dont la taille ou la date de modification ne correspond plus à ce qu’a enregistré le scan n’est jamais jeté — il est signalé « file changed since it was scanned ».

Fusionner d’abord les métadonnées#

Merge metadata into kept copy apporte la note, le drapeau, le libellé de couleur, le GPS, les mots-clés, les personnes, le texte IPTC et la mention de copyright des autres copies dans celle que vous gardez. Les valeurs de celle que vous gardez l’emportent ; les autres ne comblent que ce qui lui manque. Les mots-clés et les personnes sont réunis. Quand celle que vous gardez est ouverte dans la fenêtre principale, ses étoiles et son drapeau y changent aussitôt.

Ce qu’une fusion ne déplace pas vous est indiqué : les recadrages, les réglages de développement et l’orientation restent où ils sont. Si une copie que vous allez jeter porte une retouche, la fusion ne la sauvera pas.

Copies de dossiers#

Copies de dossiers : des dossiers entiers dont les images forment le même ensemble. Un dossier de sauvegarde correspond encore après qu’un convertisseur a écrit de nouvelles métadonnées dans ses fichiers, car la comparaison porte sur les images et non sur les octets.
Copies de dossiers : des dossiers entiers dont les images forment le même ensemble. Un dossier de sauvegarde correspond encore après qu’un convertisseur a écrit de nouvelles métadonnées dans ses fichiers, car la comparaison porte sur les images et non sur les octets.

L’onglet Folder copies travaille un niveau au-dessus : des dossiers entiers dont les images forment le même ensemble. Un dossier de sauvegarde correspond encore après qu’un convertisseur a écrit de nouvelles métadonnées dans ses DNG, car la comparaison porte sur des ensembles interchangeables et non sur des octets.

Les correspondances imbriquées remontent au dossier le plus extérieur. Un dossier d’une correspondance doit toujours rester, et la racine d’une source n’est jamais jetée — retirez plutôt la source.

Quand les copies ne sont pas toutes identiques, on vous le dit, en ces termes, avant que quoi que ce soit ne bouge : les images sont les mêmes, mais certaines copies portent des notes, des mots-clés ou des retouches que les autres n’ont pas.

Les groupes entièrement contenus dans une paire de dossiers correspondants sont masqués dans l’onglet Duplicates, puisque la ligne du dossier les représente déjà. C’est pourquoi les deux comptes ne s’additionnent pas.

Retirer une source#

Remove oublie la source et tout ce qui y est catalogué. Les fichiers sur le disque ne sont pas touchés.

Un disque que vous débranchez reste dans la bibliothèque. Ses fichiers apparaissent toujours dans les groupes, marqués disk not connected, et comptent toujours dans ce que vous pourriez récupérer — ils ne peuvent simplement pas être jetés avant son retour.

Par l’API#

0:11
Commenté en anglais, avec sous-titres. Lu depuis YouTube lorsque vous lancez la lecture.

Tout ce qui précède est client.library dans le SDK.

import { CullingClient } from './photosuite-sdk.mjs';

const client = new CullingClient();   // 127.0.0.1:9100, token from CULLING_API_TOKEN

const source = await client.library.addSource('/Volumes/Archive');
await client.library.exclude(source.id, 'Proofs');

// Scans, then waits for the grouping that follows it.
await client.library.scanAndWait();

const page = await client.library.results({ relation: 'identical', limit: 50 });
if (page.stats) {
  console.log(`${page.stats.groups} groups, ${page.stats.recoverableBytes} bytes recoverable`);
}

for (const group of page.groups) {
  const [keeper, ...rest] = group.files;
  if (!keeper) continue;
  await client.library.mergeMetadata(keeper.id, rest.map((f) => f.id));
  const report = await client.library.trash(rest.map((f) => f.id));
  for (const skip of report.skipped) console.warn(`kept ${skip.path}: ${skip.reason}`);
}

scanAndWait existe parce qu’un scan terminé n’est pas la même chose que des résultats prêts : le regroupement tourne après. Interroger seulement scanStatus() trouve un results() vide pendant un instant.

La progression arrive aussi sous forme d’événements — library_scan_started, library_scan_progress, library_scan_finished, library_results_changed et library_sources_changed :

client.on('library_scan_progress', (p) => {
  console.log(`${p.phase}: ${p.hashDone}/${p.hashTotal}`);
});

missing(), relink(id, folder) et forgetMissing(ids) font ce que fait la liste des fichiers manquants de l’onglet Disks, et preview(id) renvoie l’aperçu enregistré d’un fichier en octets JPEG. backups(), backUp() et restore(path) font ce que fait la ligne Backups.

Deux choses à savoir avant d’automatiser des suppressions. trash() refuse la dernière copie d’une image dans son groupe sauf si vous passez allowLastOfCluster — ne le passez pas pour rendre un script plus silencieux. Et results() peut revenir avec ready: false pendant que le premier regroupement tourne encore ; scanAndWait le gère déjà, une boucle écrite à la main doit le faire elle-même.

Chaque route est dans la référence de l’API sous Analyze.

Où elle est conservée#

Un fichier SQLite, library.sqlite, dans le dossier library du dossier des réglages (~/Library/Application Support/flogvit/), avec les aperçus enregistrés et les sauvegardes à côté. Il contient des chemins, des tailles, des hachages et des métadonnées — jamais de données d’image. Les marques et les mots reviennent des images avec un scan, mais vos albums, vos recherches enregistrées, vos séances et ce qui a été déplacé où ne vivent que là : pour repartir de zéro, restaurez une sauvegarde plutôt que de le supprimer.

Si vous utilisiez FLOGVIT.duplicates, sa base de données est importée la première fois que la bibliothèque s’ouvre, hachages compris, pour qu’un nouveau scan n’ait pas à relire des disques qui ne sont peut-être même pas branchés. Cela n’arrive qu’une fois, et seulement dans une bibliothèque encore vide.

esc
    ↑↓ naviguer↵ ouvrir