¿Cómo hacer que Lightroom acepte metadatos agregados a las fotos de forma externa?

Estoy trabajando en GeoTagger , una herramienta para geoetiquetar fotos en función de la posición GPS del usuario en el momento de tomar la foto (actualmente usa datos GPS de https://www.moves-app.com/ ).

El proceso consiste en agregar metadatos GPS EXIF ​​a los archivos de fotos.

Uno de los problemas que tengo es con Lightroom: cuando los metadatos de las fotos que se han importado a un catálogo de Lightroom se modifican desde el exterior, Lightroom ofrece solo dos opciones:

  1. Para reemplazar los metadatos del catálogo volviendo a importar todos los metadatos del archivo (perdiendo así cualquier edición realizada en la foto en Lightroom).
  2. Para anular los metadatos del archivo con la versión almacenada en caché en Lightroom (eliminando así las etiquetas añadidas).

Necesito una tercera opción: hacer que las etiquetas agregadas/modificadas externamente se agreguen al catálogo de Lightroom sin alterar ninguna de las existentes. O una forma fiable/documentada de actualizar el catálogo directamente. ¿Es esto posible de lograr?

Como Lightroom usa una base de datos SQLite, probablemente puedas editarla directamente con un editor SQLite, pero eso suena muy raro.
Esta podría ser la única opción. ¿Sabe si hay alguna documentación para el esquema de base de datos que usa LR?
Jeffrey Friedl tiene muchas herramientas útiles: regex.info/blog/lightroom-goodies
¡Gracias! Conozco SQLite, pero me pregunto si la manipulación directa en la base de datos es al menos parcialmente compatible y está documentada.
Si guarda sus ediciones en archivos sidecar (lo cual es una buena idea de todos modos), no se perderán. Elimina el archivo del catálogo de LR y lo vuelve a agregar; LR leerá los nuevos metadatos y aplicará las ediciones del archivo sidecar. Sin embargo, tenga en cuenta que algunos metadatos afectan los resultados de la edición, como la lente utilizada -> las correcciones aplicadas; etc.
@Aganju podría ser bueno para publicar eso como una respuesta corta.

Respuestas (5)

Si cambia la configuración de LR para guardar sus ediciones en archivos sidecar (lo cual es una buena idea de todos modos), no se perderán.

  1. Eliminas el archivo del catálogo de LR, luego
  2. agregarlo de nuevo; LR leerá los nuevos metadatos y aplicará las ediciones del archivo sidecar.

Sin embargo, tenga en cuenta que algunos metadatos afectan los resultados de la edición , como la lente utilizada -> las correcciones aplicadas; etc.

No conozco una forma directa de hacerlo.

Puede ver las herramientas de Jeffrey Friedl, tal vez algunas puedan ayudarlo: http://regex.info/blog/lightroom-goodies .

Si te gusta tu código, echa un vistazo a la guía SDK de Adobe:

¿No puedes hacer esto a través del módulo de mapas de LR-5?

Haga clic en "Mapa", luego en la barra de pie de página del módulo de mapa: haga clic en el ícono con la línea en zig-zag, luego haga clic en "Cargar registro de seguimiento", cargue su archivo GPX, corrija cualquier desplazamiento de zona horaria, haga clic en "Etiqueta automática seleccionada fotos". (Estos son todos los elementos del menú contextual del icono Zig-Zag)

Otra alternativa, más laboriosa, es importar los archivos dos veces, en carpetas diferentes. Luego, en el módulo Mapa, en la tira de película, haga clic en la foto que contiene datos de GPS para importar, luego haga clic en aquellas fotos que carecen de estos metadatos de GPS, luego haga clic en "Sincronizar metadatos...", haga clic en las casillas de verificación de las coordenadas de GPS. Opcionalmente, elimine fotos de la segunda carpeta, ahora innecesaria.

No sé si esto cubre sus requisitos (soy consciente de que su pregunta es más general), pero tal vez aún ayude.

Súper útil, gracias @knb. En realidad, no sabía que Lightroom funciona con GPX. La función Sincronizar metadatos también suena interesante.

Específicamente para el etiquetado geográfico, si primero agrega las etiquetas geográficas y luego las importa a LR, LR conservará los datos y los incorporará. Si intenta cambiar los datos después de importarlos, LR tiende a quejarse.

Las funciones Guardar metadatos en archivos/Leer metadatos de archivo harán lo que necesite.

Lightroom proporciona una función para escribir metadatos de la biblioteca en archivos XMP junto con las imágenes originales, por lo que debería ser posible escribir su programa para ver esos archivos secundarios y editar los datos existentes.

Los metadatos se pueden escribir en archivos utilizando el comando de nombre intuitivo "Guardar metadatos en archivos" en el menú Metadatos. El archivo XMP resultante es externo tanto a la biblioteca como a los metadatos internos de la imagen original. Luego, los campos XMP individuales se pueden manipular mediante programación (por ejemplo, el exif:GPSLatitudecampo). Esto evita sobrescribir los metadatos actuales con metadatos antiguos en cualquier momento y también conservará las ediciones realizadas en las imágenes en Lightroom, así como los metadatos que se ingresaron manualmente en la biblioteca. Después de editar el XMP, Lightroom puede volver a leer los cambios en la biblioteca con el elemento de menú "Leer metadatos del archivo".

Advertencia 1 : guardar los metadatos de la biblioteca en el archivo XMP sobrescribirá un archivo existente en la misma ubicación. Ésto es una cosa buena. Esto significa que no existe una manera fácil de tener dos conjuntos de metadatos en diferentes estados. Como programador, tener dos estados de metadatos puede ser útil para algunos trucos divertidos, pero como fotógrafo puedo decir personalmente que prefiero tener la tranquilidad de saber que solo existe un estado.

Advertencia 2 : la API de Lightroom (a partir de la versión 6) no parece proporcionar una forma conveniente de guardar los metadatos de la biblioteca actual en archivos antes de operar en ellos, ni una forma de leer nuevos metadatos en la biblioteca cuando finaliza su programa. Esto significa que no existe una forma simple de garantizar mediante programación que su código operará en archivos de metadatos que comparten su estado con los metadatos en el catálogo de Lightroom. Mi impresión es que esto es una medida de seguridad para mantener el estado de los metadatos de la biblioteca de Lightroom en la parte superior de la jerarquía, ya que para muchos usuarios la biblioteca representará el estado autorizado de los datos.

La solución alternativa: es posible que deba resignarse a pedirle al usuario que guarde manualmente los metadatos antes de que se ejecute el programa, e indicarle al usuario que lea los metadatos actualizados después de completarlos. No soy un programador de complementos LR, pero he usado varios complementos que usan este patrón, por lo que puede ser lo que sea necesario. Afortunadamente, esto no es una gran molestia en el uso normal, ya que los elementos del menú "Guardar metadatos en un archivo" y "Leer metadatos de archivos" están a solo un clic de distancia en el menú Metadatos, y probablemente solo se usarán una vez después de seleccionar todos. las imágenes a incluir en la operación.