LR - Chercher des mots clefs SANS synonymes ?

Démarré par Christophe Mely, Octobre 13, 2018, 12:06:17

« précédent - suivant »

Christophe Mely

Bonjour,

Je voudrais mettre à jour ma liste de mots-clefs, dans Lightroom et je veut notamment rajouter des synonymes pour les mots clefs qui n'en n'ont pas.
Savez-vous s'il existe une méthode (interne ou externe à LR) qui permette de retrouver tous les mots-clefs qui n'ont PAS de synonymes ?

Pour l'instant la seule méthode qui me vienne à l'esprit est d'exporter la liste de mots-clefs, puis de rajouter les synonymes via un éditeur de texte. Peut-être y-a-t'il plus simple ?

Merci d'avance :)

patrickj

Fastoche ! Un petit script LUA peut faire ça facilement.

Quelques indices :
catalog:getKeywords() donne la liste des mots-clés tout en haut de la hiérarchie
keyword:getSynonyms() donne la liste des synonymes d'un mot-clé
keyword:getChildren() donne la liste des mots-clés fils d'un parent

C'est dimanche et j'ai pas mal de boulot dans la maison, mais si tu n'es pas familier avec le scripting de LR, je veux bien te l'écrire demain matin dans le train.

Christophe Mely

Merci Patrickj pour tes infos et ta proposition d'aide :)

Je ne sais pas si le terme "fastoche" est bien celui qui me viendrait spontanément à l'esprit pour ce type de travaux :D mais je vais quand même jeter un oeil sur les indices donnés. Si vraiment je sèche, je reviendrait vers toi pour solliciter ton expertise :)

Bon dimanche.

patrickj

Bon, j'ai été un peu présomptueux en disant que c'était fastoche  :D Mais j'ai un script qui fonctionne, le voici :

local LrApplication = import 'LrApplication'
local LrTasks = import 'LrTasks'
local LrDialogs = import 'LrDialogs'

--
--  fonction récursive de traitement d'un mot-clé
--

function processKeyword(keyword, fullName)

   local longName = keyword:getName()
   if fullName ~= "" then
      longName = fullName .. " -> " .. longName
   end

   -- Vérifie si le mot-clé a des enfants
   
   childrenKeywords = keyword:getChildren()
   if next(childrenKeywords) == nil then
   
      -- Le mot-clé n'a pas d'enfants, on vérifie s'il a des synonymes
      
      listSynonyms = keyword:getSynonyms()
      
      if next(listSynonyms) == nil then
      
         results = results .. "\n" .. longName .. " n'a pas de synonyme"
         
      end

   else
   
      -- Traite les mots-clés enfants
      
      for j, childKeyword in ipairs(childrenKeywords) do
         processKeyword(childKeyword, longName)
      end
   
   end
      
   return
   
end
--
--  fonction principale
--

LrTasks.startAsyncTask( function()
 
  LrDialogs.message("Started!")
 
  results = "Résultats :\n"
 
  catalog = LrApplication.activeCatalog()         -- obtient le catalogue actif

   arrayTopKeywords = catalog:getKeywords()      -- obtient la liste des mots-clés
   
   for i,topKeyword in ipairs(arrayTopKeywords) do      -- boucle sur les mots-clés
   
      processKeyword(topKeyword, "")

   end
   
   LrDialogs.message(results)
 
end)


Pour l'utiliser, il faut que tu copies toutes les lignes en bleu, et que tu les mettes dans un fichier avec une extension ".lua", par exemple synonymes.lua
Attention de bien vérifier que ton système ne rajoute pas une extension .txt à ce fichier, sinon ça ne marchera pas. Je te conseille d'aller dans les options pour afficher les extensions.

Ensuite, il faut placer ce fichier dans un répertoire qui dépend de ton système :

  • Sur MAC, c'est dans /Users/ton_utilisateur/Library/Application Support/Adobe/Lightroom/Scripts. Si le répertoire Scripts n'existe pas, tu le crées.
  • Sur PC, c'est dans C:\Users\ton_utilisateur\AppData\Roaming\Adobe\Lightroom\Scripts. Idem ci-dessus, si le répertoire Scripts n'existe pas, tu le crées.

Ensuite, tu relances LR et tu dois voir un nouveau menu :


En cliquant sur ce menu, tu dois voir apparaître le nom que tu as donné au script, soit synonymes. Tu cliques dessus et le script s'exécute.

La liste des mots-clés sans synonyme va s'afficher dans une fenêtre. Si la liste est longue, tu ne vas pas tout voir, mais si tu sélectionnes une partie de cette liste et que tu appuies sur Ctrl-A (ou Cmd-A sur MAC) pour tout sélectionner et Ctrl-C (ou Cmd-C sur MAC) pour copier, tu pourras coller la liste entière dans un éditeur de texte.

Note : cette version ne vérifie la présence de synonymes que sur les mots-clés qui n'ont pas d'enfants. Mais je peux le modifier pour vérifier tous les mots-clés si nécessaire.