Estoy buscando documentación para las estructuras del catálogo de Lightroom (base de datos sqlite).
Aquí hay un ejemplo simple de lo que estoy tratando de hacer. Encontré una tabla que contiene los datos exif (AgHarvestedExifMetadata) y ahora estoy tratando de unirla con la imagen original (AgLibraryFile) pero no puedo encontrar un campo común para unirme. En este ejemplo, parece que id_global podría hacerlo, pero hasta ahora no he tenido suerte.
¿Dónde puedo encontrar documentación o ejemplos utilizando el catálogo o la base de datos backend de Lightroom? Encontré documentación para sqlite pero estoy buscando la estructura de la base de datos de Lightroom (tablas, claves externas, integridad referencial, etc.).
Estoy seguro de que no hay documentación oficial: Adobe realmente no quiere que hurguemos allí. Habiendo dicho eso, hay algunas publicaciones de blog con información sobre los contenidos del catálogo e incluso algunas que tratan sobre esa tabla. Aqui hay unos cuantos enlaces...
Esto no responde específicamente a su pregunta, pero puede arrojar luz sobre cómo se une a otras tablas: http://www.max.grenkowitz.net/?topic=1057
Este artículo tiene varias declaraciones SQL que pueden ayudarlo a descubrir cómo se relaciona la tabla con otras: https://forums.adobe.com/thread/1812037
Una buena descripción general con enlaces adicionales y algunos ejemplos: http://www.earthboundlight.com/phototips/querying-sqlite-lightroom-database.html
Otro ejemplo usando esa tabla: http://www.wideopenlens.com/blog/2012/08/hacking-lightroom-or-why-everyone-should-know-how-to-program
Aquí hay algunos enlaces de Python a la base de datos publicados por un usuario:
https://github.com/bzimmer/openroom
Las tablas se modelan en el archivo openroom/model.py, incluidas algunas claves externas. Por ejemplo, la tabla 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)
Solo se representan algunas tablas y las definiciones son de 2009, pero sospecho que son iguales o similares en versiones más recientes de Lightroom.
Las licencias suelen contener una línea o un párrafo que prohíbe explícitamente la ingeniería inversa ; Estoy bastante seguro de que esto incluye analizar la base de datos. Tendría mucho cuidado a menos que haya verificado que las condiciones de la licencia permiten lo que está tratando de hacer. El texto completo está aquí: http://labs.adobe.com/technologies/eula/lightroom.html ; dice:
[...] No puede realizar ingeniería inversa, descompilar, desensamblar ni intentar descubrir el código fuente del Software excepto en la medida en que la ley aplicable le permita expresamente descompilar solo [...]
Podría ser necesario un abogado para interpretar eso con seguridad, ya que una estructura de base de datos no es realmente un código fuente en mi mente. Si la licencia incluye la prohibición del análisis de la base de datos, bien podría ser que a Adobe no le importe mucho que lo haga, pero eso no lo haría menos ilegal.
Robin
DenaliRígida
usuario50888
usuario50888