Я нічого не робив з Луєю
Луа - це, мабуть, найпростіша, найчистіша мова програмування, яку я знаю. (І я знаю декількох .)
Простота Lua також є її найбільшою слабкістю: будучи маленькою, чистою мовою за дизайном, у неї не вбудовано багато речей, які можна було б знайти, якщо ви походите з мови індустріального класу, як Java, або батарей -включає мову, як Python.
Lua розрахований на розширення на C, що в даному випадку означає SDK Lightroom. Це чудово, якщо Adobe зробила роботу з надання необхідних інструментів, які не вбудовані в Lua, але раз у раз ви, ймовірно, опинитесь до зовнішніх інструментів, щоб зробити це можливим.
Чи легко приєднати API Lightroom API
Єдина складна частина цього полягає в тому, що вам потрібно структурувати свій вихідний код певним чином і надати спеціальний Info.lua
файл, який розповість Lightroom про ваш плагін. Все це пояснено в документах SDK . SDK включає в себе кілька функціональних плагінів, з яких можна почати, включаючи досить складний плагін "привіт світ", який можна використовувати для корисного стартового коду.
чи потрібні спеціальні інструменти для розробки?
Ви можете обійтись лише текстовим редактором.
У Lightroom немає вбудованого засобу налагодження, але в SDK є об'єкт для налагодження . Ви можете ловити ці повідомлення в WinDbg
Windows або Console
OS X.
Новітня розробка - це відкритий код ZeroBrane Studio Lua IDE. Ви можете використовувати це замість іншого текстового редактора, але дійсно крутий біт полягає в тому, що можна приєднати його до свого запущеного плагіна, який дозволяє налагоджувати його під час роботи. Я спробував це, і це допомагає скоротити час циклу виправлення / перезавантаження / перезавантаження.
Чи можу я легко писати сценарії для виконання тих завдань, які я описав вище?
Я не думаю, що жодна задача не може на 100% виконати, використовуючи лише Lightroom SDK, але це може зробити багато для вас.
виберіть файл у кожній стеці з розширенням JPG та зробіть його у верхній частині стека
Ось якийсь неясний код, схожий на Луа, щоб отримати вас майже на всьому шляху:
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
На жаль, я не бачу в SDK способу зробити цю найпотаємнішу лінію коментування, як мінімум, на LR 5. Найкраще, що я можу придумати, - це зателефонувати catalog:setSelectedPhotos(peer)
, а потім залишити його користувачеві, щоб насправді натиснути значок номера, щоб переупорядкувати стек.
Виконайте масову копію метаданих із (існуючого) файлу RAW у (існуючий) файл JPEG
Ви можете зробити це з існуючим SDK, але є обмеження.
Наприклад, хоча ви можете прочитати значення dateTimeOriginal
поля EXIF , у самому SDK немає можливості встановити значення. Я припускаю, що це тому, що розробники Lightroom вирішили, що це ніколи не слід міняти програмно, що це дорогоцінна інформація з камери. (Чому це має бути так, коли є метадані> Редагувати час захоплення ... пункт меню, я не знаю, але там у вас є.)
Але, коли SDK намагається захопити вас одним із цих обмежень, часто виникає люк для втечі. Наприклад, ви можете встановити ExifTool і зателефонувати на нього з Lua. Це не ідеальне рішення, оскільки тоді у вас є невідповідність між метаданими каталогу та метаданими фото, але Lightroom помітить і помітить на фотографію значок, який при натисканні на нього дозволить вам вирішити конфлікт, завантаживши метадані з фотографії.
(Вам потрібно встановити параметр "Автоматично записувати зміни в XMP" у діалоговому вікні "Налаштування каталогів" при використанні такого плагіна. В іншому випадку ви полегшите створення двостороннього конфлікту, коли і метадані каталогу, і фотографії мають Lightroom не знає, як об'єднати два набори метаданих; це змушує вас вибрати один, а інший копію метаданих перезаписати.)