Je n'ai rien fait avec Lua
Lua est probablement le langage de programmation le plus simple et le plus propre que je connaisse. (Et j'en connais quelques-uns .)
La simplicité de Lua est également sa plus grande faiblesse: étant un petit langage propre par conception, il ne contient pas beaucoup de choses que vous vous attendriez à trouver en venant d'un langage de qualité industrielle comme Java ou d'une batterie -inclus le langage comme Python.
Lua est conçu pour être étendu par C, ce qui signifie dans ce cas le SDK de Lightroom. C'est formidable si Adobe a fait le travail pour fournir les outils dont vous avez besoin qui ne sont pas intégrés à Lua, mais de temps en temps, vous vous retrouverez probablement à appeler des outils externes pour faire avancer les choses.
L'API Lightroom est-elle facile à connecter
La seule partie délicate à ce sujet est que vous devez structurer votre code source d'une manière particulière et fournir un Info.lua
fichier spécial pour informer Lightroom de votre plugin. Tout est expliqué dans la documentation du SDK . Le SDK comprend plusieurs plugins fonctionnels pour commencer, y compris un plugin "hello world" assez élaboré qui peut être récupéré pour un code de démarrage utile.
faut-il des outils spécialisés pour le développement?
Vous pouvez vous en tirer avec un simple éditeur de texte.
Il n'y a pas de fonction de débogage intégrée à Lightroom, mais il existe une fonction de journalisation du débogage dans le SDK. Vous pouvez intercepter ces messages WinDbg
sur Windows ou Console
sur OS X.
Un développement plus récent est l' IDE open source ZeroBrane Studio Lua. Vous pouvez l'utiliser à la place d'un autre éditeur de texte, mais le truc vraiment cool est qu'il est possible de le joindre à votre plugin en cours d'exécution qui vous permet de le déboguer pendant son exécution. J'ai essayé cela, et cela aide à réduire le temps de cycle de débogage de correction / rechargement / redémarrage.
Puis-je écrire des scripts pour effectuer facilement le type de tâches que je décris ci-dessus?
Je ne pense pas que l'une ou l'autre tâche soit 100% réalisable en utilisant uniquement le SDK Lightroom, mais elle peut faire beaucoup de travail pour vous.
sélectionnez le fichier dans chaque pile avec l'extension JPG et placez-le en haut de la pile
Voici un code vaguement semblable à Lua pour vous y conduire presque tout le temps:
for photo in catalog:getMultipleSelectedOrAllPhotos() do
for peer in photo:stackInFolderMembers() do
if string.find('%.jpg$', peer:getFormattedMetadata('fileName')) then
-- *mumble* move 'peer' photo to top of stack *mumble*
break
end
end
end
Malheureusement, je ne vois aucun moyen dans le SDK de faire l'action de cette ligne de commentaire la plus profonde, à partir de LR 5 au moins. Le mieux que je puisse trouver est d'appeler catalog:setSelectedPhotos(peer)
, puis de laisser à l'utilisateur le soin de cliquer sur le badge numérique pour réorganiser la pile.
Effectuer une copie de masse des métadonnées d'un fichier RAW (existant) vers un fichier JPEG (existant)
Vous pouvez le faire avec le SDK existant, mais il y a des limitations.
Par exemple, alors que vous pouvez lire la valeur du dateTimeOriginal
champ EXIF , il n'y a aucune possibilité dans le SDK lui-même pour définir la valeur. Je suppose que c'est parce que les développeurs de Lightroom ont décidé que cela ne devrait jamais être modifié par programme, que ce sont des informations précieuses de la caméra. (Pourquoi cela devrait-il être le cas lorsqu'il existe un élément de menu Métadonnées> Modifier l'heure de capture ... Je ne sais pas, mais vous l'avez.)
Mais, chaque fois que le SDK essaie de vous piéger avec l'une de ces limitations, il y a souvent une trappe d'échappement. Vous pouvez installer ExifTool et l'appeler depuis Lua, par exemple. Ce n'est pas une solution parfaite, car vous avez alors une incohérence entre les métadonnées du catalogue et les métadonnées de la photo, mais Lightroom remarquera et apposera un badge sur la photo qui, lorsque vous cliquez dessus, vous permettra de résoudre le conflit en rechargeant les métadonnées à partir de la photo.
(Vous souhaiterez que l'option "Écrire automatiquement les modifications dans XMP" soit définie dans la boîte de dialogue Paramètres du catalogue lors de l'utilisation d'un tel plug-in. Sinon, vous faciliterez la création d'un conflit bidirectionnel, où les métadonnées du catalogue et des photos ont Lightroom ne sait pas comment fusionner les deux ensembles de métadonnées; il vous fait en choisir un et il écrase l'autre copie de métadonnées avec.)