Recientemente, actualicé mi organización de fotos y el flujo de trabajo de administración de "nada en absoluto" a Lightroom 4, y aunque generalmente estoy muy satisfecho con el software, una característica que le falta es la capacidad de grabar cualquier tipo de macros o scripts para automatizar tareas repetitivas: durante el curso de mi migración a lightroom, ha habido muchas tareas repetitivas que he querido hacer, y me pregunto si vale la pena aprender a escribir complementos LR para realizar algunas de estas tareas. Para darle ejemplos de los tipos de cosas que quiero automatizar:
- En un gran grupo de fotos RAW + PSD + JPG apiladas, seleccione el archivo en cada pila con la extensión JPG y colóquelo en la parte superior de la pila
- Realizar una copia masiva de metadatos de un archivo RAW (existente) a un archivo JPEG (existente)
Puedo ver muchas otras formas en que los scripts podrían hacer que la administración de imágenes dentro de Lightroom sea aún más fácil de lo que es ahora. Mi pregunta tiene tres partes:
1) ¿Qué tan difícil es escribir complementos de Lightroom? Estoy bien versado en varios lenguajes de programación (C / C ++, Python, Perl), pero no he hecho nada con Lua. ¿La API de Lightroom es fácil de conectar y requiere herramientas especializadas para el desarrollo?
2) ¿Puedo escribir scripts para realizar fácilmente el tipo de tareas que describo anteriormente?
3) ¿Hay buenos recursos o tutoriales que pueda leer para comenzar a desarrollar el complemento de Lightroom?
fuente
Respuestas:
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.
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.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 oConsole
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.
No creo que ninguna de las tareas sea 100% factible utilizando solo el SDK de Lightroom, pero puede hacer mucho trabajo por usted.
Aquí hay un código vagamente parecido a Lua para llegar casi hasta allí:
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.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).
fuente
LrPhoto:setRawMetadata()
sección, por ejemplo.No conozco Lightroom (todavía, lo tengo pero aún no lo he instalado), pero dependiendo de la complejidad de lo que intente hacer, es posible que desee ver una herramienta de automatización / macro de teclado en todo el sistema como AutoHotKey . Le permite grabar o programar cualquier secuencia de pulsaciones de teclas que pueda descubrir y luego, cuando presiona una tecla de acceso rápido, las reproduce en su programa (como LightRoom) para que, en lo que respecta al programa, se vea como lo escribiste Esto le permite automatizar todo tipo de cosas sin tener que modificar sus programas de aplicación.
fuente
Solo quería ver cómo hacer un procesamiento por lotes basado en nombres de archivo en Lightroom, y por alguna razón parecía que la forma más fácil de hacerlo era a través de la API. Basado en la publicación de @ Warren, logré crear este bucle interno para un botón en un formulario, donde también podría poner un campo de texto para el registro (
logs_field
) y algunos valores de entrada (como un campo de texto para incluir los nombres de archivofilenames_field
y algunos parámetros adicionales para el lote procesamiento enrating_field
):Este fragmento se iría a través de algunos patrones de nombre de archivo, y aplicar una etiqueta a todas las fotos (es posible que desee reemplazar
getAllPhotos
congetMultipleSelectedOrAllPhotos
en caso de que sólo es necesario ejecutarlo en algunas de sus imágenes) que coinciden con los patrones. Tenía que hacer esto porque ya había etiquetado las fotos fuera de Lightroom, pero necesitaba una manera fácil de mover esas etiquetas a LR también en función de los nombres de archivo.Puse todo el proyecto también en github , pero el fragmento anterior debería estar bien para usarlo como base para tareas de procesamiento por lotes basadas en nombre de archivo.
fuente