No he hecho nada con Lua.
Lua es probablemente el lenguaje de programación más simple y limpio que conozco. (Y conozco algunos ).
La simplicidad de Lua también es su mayor debilidad: al ser un lenguaje pequeño y limpio por diseño, no tiene muchas cosas incorporadas que esperaría encontrar cuando viene de un lenguaje de grado industrial como Java, o baterías -incluido lenguaje como Python.
Lua está diseñado para ser extendido por C, que en este caso significa el SDK de Lightroom. Eso es genial si Adobe ha hecho el trabajo para proporcionar las herramientas que necesita que no están integradas en Lua, pero de vez en cuando probablemente se encontrará llamando a herramientas externas para hacer las cosas.
¿Es fácil conectar la API de Lightroom?
La única parte difícil es que necesita estructurar su código fuente de una manera particular y proporcionar un Info.lua
archivo especial para informar a Lightroom sobre su complemento. Todo se explica en los documentos del SDK . El SDK incluye varios complementos en funcionamiento para comenzar, incluido un complemento bastante elaborado "hello world" que puede buscarse para obtener un código de inicio útil.
¿Requiere alguna herramienta especializada para el desarrollo?
Puedes sobrevivir con solo un editor de texto.
No hay una instalación de depuración integrada en Lightroom, pero hay una instalación de registro de depuración en el SDK. Puede atrapar estos mensajes en WinDbg
Windows o Console
en OS X.
Un desarrollo más reciente es el código abierto ZeroBrane Studio Lua IDE. Puede usar esto en lugar de otro editor de texto, pero lo mejor es que es posible adjuntarlo a su complemento en ejecución que le permite depurarlo mientras se ejecuta. He intentado esto, y ayuda a reducir el tiempo del ciclo de depuración de reparación / recarga / reinicio.
¿Puedo escribir scripts para realizar fácilmente el tipo de tareas que describo anteriormente?
No creo que ninguna de las tareas sea 100% factible utilizando solo el SDK de Lightroom, pero puede hacer mucho trabajo por usted.
seleccione el archivo en cada pila con la extensión JPG y colóquelo en la parte superior de la pila
Aquí hay un código vagamente parecido a Lua para llegar casi hasta allí:
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
Desafortunadamente, no veo una manera en el SDK para hacer la acción de esa línea de comentarios más íntima, al menos a partir de LR 5. Lo mejor que se me ocurre es llamar catalog:setSelectedPhotos(peer)
y luego dejar que el usuario haga clic en la insignia de número para reordenar la pila.
Realizar una copia masiva de metadatos de un archivo RAW (existente) a un archivo JPEG (existente)
Puede hacer algo de esto con el SDK existente, pero hay limitaciones.
Por ejemplo, si bien puede leer el valor del dateTimeOriginal
campo EXIF , no hay ninguna facilidad en el SDK en sí para establecer el valor. Supongo que esto se debe a que los desarrolladores de Lightroom decidieron que esto no debería cambiarse nunca programáticamente, que es información valiosa de la cámara. (¿Por qué ese debería ser el caso cuando hay un elemento de menú Metadatos> Editar tiempo de captura ... No lo sé, pero ahí lo tienes).
Pero, cada vez que el SDK intenta atraparlo con una de estas limitaciones, a menudo hay una escotilla de escape. Puede instalar ExifTool y llamarlo desde Lua, por ejemplo. Esa no es una solución perfecta, porque entonces tienes una inconsistencia entre los metadatos del catálogo y los metadatos de la foto, pero Lightroom lo notará y colocará una insignia en la foto, que al hacer clic te permitirá resolver el conflicto al volver a cargar los metadatos de la foto.
(Deberá tener configurada la opción "Escribir automáticamente los cambios en XMP" en el cuadro de diálogo Configuración del catálogo cuando utilice dicho complemento. De lo contrario, facilitará la creación de un conflicto bidireccional, donde tanto el catálogo como los metadatos de la fotografía tienen cambiado. Lightroom no sabe cómo fusionar los dos conjuntos de metadatos; te hace elegir uno y sobrescribe la otra copia de metadatos con él).