Где я могу найти документацию по базе данных Lightroom? - Фотопедия
4 голосов
/ 04 октября 2017

Мне нужна документация для структур каталога Lightroom (база данных sqlite).

Вот простой пример того, что я пытаюсь сделать. Я нашел таблицу, содержащую данные exif (AgHarvestedExifMetadata), и теперь я пытаюсь соединить ее с исходным изображением (AgLibraryFile), но не могу найти общее поле для присоединения. В этом примере кажется, что id_global может это сделать, но мне пока не повезло.

Где я могу найти документацию или примеры, используя внутренний каталог / базу данных Lightroom? Я нашел документацию по sqlite, но мне нужна структура базы данных Lightroom (таблицы, внешние ключи, ссылочная целостность и т. Д.).

Ответы [ 3 ]

6 голосов
/ 04 октября 2017

Я уверен, что официальной документации нет - Adobe не хочет, чтобы мы там ковырялись. Сказав, что есть несколько сообщений в блоге с информацией о содержимом каталога и даже несколько, которые имеют отношение к этой таблице. Вот несколько ссылок ...

Это не относится конкретно к вашему вопросу, но может пролить свет на то, как он объединен с другими таблицами: http://www.max.grenkowitz.net/?topic=1057

В этой статье есть несколько SQL-операторов, которые могут помочь вам понять, как таблица связана с другими: https://forums.adobe.com/thread/1812037

Хороший обзор с дополнительными ссылками и некоторыми примерами: http://www.earthboundlight.com/phototips/querying-sqlite-lightroom-database.html

Другой пример использования этой таблицы: http://www.wideopenlens.com/blog/2012/08/hacking-lightroom-or-why-everyone-should-know-how-to-program

1 голос
/ 07 июля 2018

Вот некоторые привязки Python к базе данных, опубликованной пользователем:

https://github.com/bzimmer/openroom

Таблицы моделируются в файле openroom / model.py, включая некоторые внешние ключи. Например, таблица AgHarvestedExifMetadata:

class Exif(Base):
    __tablename__ = "AgHarvestedExifMetadata"
    id = Column("id_local", Integer, primary_key=True)
    imageId = Column("image", Integer, ForeignKey("Adobe_images.id_local"))
    image = relation(Image, backref=backref('exif', uselist=False))
    aperture = Column(Integer)
    cameraId  = Column("cameraModelRef", Integer, ForeignKey("AgInternedExifCameraModel.id_local"))
    camera = relation(Camera)
    cameraSNId  = Column("cameraSNRef", Integer)
    dateDay = Column(Integer)
    dateMonth = Column(Integer)
    dateYear = Column(Integer)
    flashFired = Column(Boolean)
    focalLength = Column(Numeric)
    hasGPS = Column(Boolean)
    isoSpeedRating = Column(Integer)
    lensId = Column("lensRef", Integer, ForeignKey("AgInternedExifLens.id_local"))
    lens = relation(Lens)
    shutterSpeed = Column(Numeric)

Представлено только несколько таблиц, определения даны с 2009 года, но я подозреваю, что они совпадают или похожи в более поздних версиях Lightroom.

0 голосов
/ 05 октября 2017

Лицензии обычно содержат строку или абзац, которые явно запрещают обратный инжиниринг ; Я совершенно уверен, что это включает в себя анализ базы данных. Я был бы очень осторожным, если вы не проверили, что условия лицензии позволяют вам делать то, что вы пытаетесь сделать. Полный текст здесь: http://labs.adobe.com/technologies/eula/lightroom.html; там написано:

[...] Вы не можете перепроектировать, декомпилировать, разбирать или иным образом пытаться найти исходный код Программного обеспечения, кроме как В той степени, в которой вам может быть разрешено в соответствии с применимым законодательством декомпилировать только [...]

Может потребоваться адвокат, чтобы наверняка истолковать это, поскольку структура базы данных на самом деле не исходный код в моей памяти. Если лицензия включает запрет на анализ базы данных, вполне возможно, что Adobe не очень заботится о том, что вы делаете это, но это не сделает ее менее незаконной.

...