In my previous post, I wrote that there was no way in AppleScript to get the original filename of a version. Because Aperture uses SQLite to store information about the Library, however, there is a way to access this information!

There are a number of tables in the Library database, which is normally located at ~/Pictures/Aperture Library.aplibrary/Aperture/aplib/Library.apdb, but the ones that I’ll focus on are ZRKMASTER, ZRKVERSION and ZRKFILE. Examining the table schemas reveals a common field, Z_PK. This is the unique id for each master image. AppleScript lets me retrieve the unique id for an image version; with that I can access the original filename for the file. Thanks to Scott, deriving the appropriate SQL code was fast:

SELECT zrkfile.zname FROM zrkfile, zrkmaster, zrkversion WHERE zrkfile.z_pk = zrkmaster.z_pk AND zrkversion.z_pk = zrkmaster.z_pk AND zrkversion.zuuid = “yjjEFvlGRReGkOke+xLXsw”;

or

SELECT zrkfile.zname FROM zrkfile join zrkmaster ON zrkfile.z_pk = zrkmaster.z_pk JOIN zrkversion ON zrkversion.z_pk = zrkmaster.z_pk WHERE zrkversion.zuuid = “yjjEFvlGRReGkOke+xLXsw”;

Incorporating this into my AppleScripts was equally easy, thanks to the do shell script command:

sqlite3 ~/Pictures/Aperture Library.aplibrary/Aperture.aplib/Library.apdb “select zrkfile.zname from zrkfile join zrkmaster on zrkfile.z_pk = zrkmaster.z_pk join zrkversion on zrkversion.z_pk = zrkmaster.z_pk where zrkversion.zuuid = ‘yjjEFvlGRReGkOke+xLXsw’;”

Where “yjjEFvlGRReGkOke+xLXsw” is the id of the image version.

We’re getting closer!

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Adam, here

Welcome to tow.com, my home on the internet since 1995. I’m an indie software artist and creator of apps such as MixEffect, MsgFiler, AlbumFiler, Wipe My Screen, and more. I’m also the producer and co-director of Autumn Gem. Enjoy your visit here!

Let’s connect