Как заставить Lightroom принимать метаданные, добавленные к фотографиям извне?

Я работаю над GeoTagger , инструментом для геотегирования фотографий на основе GPS-позиции пользователя во время фотосъемки (в настоящее время он использует данные GPS с https://www.moves-app.com/ ).

Процесс включает в себя добавление метаданных EXIF ​​GPS в файлы фотографий.

Одна из проблем, с которыми я столкнулся, связана с Lightroom: когда метаданные фотографий, которые были импортированы в каталог Lightroom, изменяются извне, Lightroom предлагает только два варианта:

  1. Чтобы заменить метаданные каталога, повторно импортировав все метаданные из файла (тем самым потеряв все изменения, внесенные в фотографию в Lightroom).
  2. Переопределить метаданные файла версией, кэшированной в Lightroom (таким образом удалив добавленные теги).

Мне нужен третий вариант: сделать так, чтобы внешне добавленные/измененные теги добавлялись в каталог Lightroom, не связываясь ни с одним из существующих. Или надежный/задокументированный способ обновления каталога напрямую. Возможно ли это достичь?

Поскольку Lightroom использует базу данных SQLite, вы, вероятно, можете редактировать ее напрямую с помощью редактора SQLite, но это звучит очень странно.
Это может быть единственный вариант. Знаете ли вы, есть ли документация по схеме базы данных, которую использует LR?
У Джеффри Фридля много полезных инструментов: regex.info/blog/lightroom-goodies
Спасибо! Я хорошо разбираюсь в SQLite, но мне интересно, поддерживается ли прямая манипуляция в БД хотя бы частично и задокументирована.
Если вы сохраните свои изменения в файлах sidecar (что в любом случае является хорошей идеей), они не потеряются. Вы удаляете файл из каталога LR и добавляете его обратно; LR прочитает новые метаданные и применит изменения из файла sidecar. Однако обратите внимание, что некоторые метаданные влияют на результаты редактирования — например, используемый объектив -> примененные исправления; и т.п.
@Aganju, возможно, было бы неплохо опубликовать это как короткий ответ.

Ответы (5)

Если вы измените настройки LR, чтобы сохранить ваши изменения в файлах sidecar (что в любом случае является хорошей идеей), они не потеряются.

  1. Вы удаляете файл из каталога LR, затем
  2. добавить его обратно; LR прочитает новые метаданные и применит изменения из файла sidecar.

Однако обратите внимание, что некоторые метаданные влияют на результаты редактирования — например, используемый объектив -> примененные исправления; и т.п.

Я не знаю прямого способа сделать это.

Вы можете посмотреть инструменты Джеффри Фридля, возможно, некоторые из них могут вам помочь: http://regex.info/blog/lightroom-goodies .

Если вам нравится ваш код, взгляните на руководство по SDK от Adobe:

Разве вы не можете сделать это через модуль карты LR-5?

Нажмите «Карта», затем в нижнем колонтитуле модуля карты: нажмите значок с зигзагообразной линией, затем нажмите «Загрузить треклог», Загрузите файл GPX, исправьте любое смещение часового пояса, нажмите «Автоматическая пометка фото". (Это все элементы контекстного меню значка Zig-Zag)

Другой, более трудоемкий вариант — дважды импортировать файлы в разные папки. Затем в модуле «Карта» на полосе пленки щелкните фотографию, содержащую данные GPS, которые необходимо импортировать, затем щелкните фотографии, на которых отсутствуют эти метаданные GPS, затем нажмите «Синхронизировать метаданные...», установите флажки для координат GPS. По желанию удалите фотографии из второй папки, теперь ненужные.

Я не знаю, соответствует ли это вашим требованиям (я знаю, что ваш вопрос более общий), но, возможно, это все же помогает.

Очень полезно, спасибо @knb. На самом деле я не знал, что Lightroom работает с GPX. Функция синхронизации метаданных также звучит интересно.

В частности, для геотегов: если вы сначала добавите геотеги, а затем импортируете их в LR, LR сохранит данные и включит их. Если вы попытаетесь изменить данные после импорта, LR будет жаловаться.

Функции « Сохранить метаданные в файлы» и «Чтение метаданных из файла » сделают то, что вам нужно.

Lightroom предоставляет возможность записи библиотечных метаданных в файлы XMP вместе с исходными изображениями, поэтому должна быть возможность написать вашу программу для просмотра этих дополнительных файлов и редактирования существующих данных.

Метаданные можно записывать в файлы с помощью интуитивно понятной команды «Сохранить метаданные в файлы» в меню «Метаданные». Результирующий XMP-файл является внешним как по отношению к библиотеке, так и по отношению к внутренним метаданным исходного изображения. После этого отдельными полями XMP можно манипулировать программно (например, exif:GPSLatitudeполем). Это позволяет избежать перезаписи текущих метаданных старыми метаданными в любой момент, а также сохранит изменения, внесенные в изображения в Lightroom, а также любые метаданные, введенные вручную в библиотеку. После редактирования XMP Lightroom может прочитать изменения обратно в библиотеку с помощью пункта меню «Чтение метаданных из файла».

Предупреждение 1 : Сохранение метаданных библиотеки в файл XMP перезапишет существующий файл в том же месте. Это хорошая вещь. Это означает, что нет простого способа иметь два набора метаданных в разных состояниях. Как программисту наличие двух состояний метаданных может быть удобно для некоторых забавных трюков, но как фотограф я могу лично сказать, что я бы предпочел быть уверенным в том, что существует только одно состояние.

Предупреждение 2 : Lightroom API (начиная с версии 6), по-видимому, не предоставляет ни удобного способа сохранения метаданных текущей библиотеки в файлы перед операцией с ними, ни способа чтения новых метаданных в библиотеку после завершения работы вашей программы. Это означает, что нет простого способа программно гарантировать, что ваш код будет работать с файлами метаданных, состояние которых совпадает с метаданными в каталоге Lightroom. У меня сложилось впечатление, что это гарантия сохранения состояния метаданных библиотеки Lightroom на вершине иерархии, поскольку для многих пользователей библиотека будет представлять достоверное состояние данных.

Обходной путь: возможно, вам придется смириться с тем, чтобы просить пользователя вручную сохранить метаданные перед запуском вашей программы и инструктировать пользователя прочитать обновленные метаданные после завершения. Я сам не программист плагинов LR, но я использовал несколько плагинов, которые используют этот шаблон, так что вполне может быть то, что нужно. К счастью, при обычном использовании это не доставляет больших хлопот, так как пункты меню «Сохранить метаданные в файл» и «Читать метаданные из файлов» находятся всего в одном щелчке мыши в меню «Метаданные» и, вероятно, будут использоваться только один раз после выбора всех изображения, которые будут включены в операцию.