The rants and ravings of a Mac developer

Finding the original photo file in the iPhoto Library database

Using iPhoto’s SQLite3 database you can get the relative path to the original photo in the iPhoto library for any image in the sqPhotoInfo table. To do so you must join from the sqPhotoInfo table to the sqFileImage table and finally to the sqFileInfo table.

select pi.primaryKey, pi.archiveFilename, fl.relativepath
from SqPhotoInfo as pi
join SqFileImage as fi on pi.primaryKey = fi.photoKey
join sqFileInfo  as fl on fl.primaryKey = fi.sqFileInfo
where fl.relativePath like 'Originals%'
 

Date Format used in iPhotoMain.db database

Not sure how many of you know that iPhoto uses SQLite3 as its database engine. You can access the database files by right clicking on ~/username/Pictures/iPhoto Library and selecting Show Package Contents. Once you have displayed the package, the SQLite3 datbase files are:

  • iPhotoMain.db
  • iPhotoAux.db
  • face.db
  • face_blob.db

The main database file, as you might have guessed, is the iPhotoMain.db file. In Terminal, you can open the file by changing to the directory of iPhoto Library package, e.g.:

cd /Users/gskluzacek/Pictures/iPhoto\ Library
 

Then execute the following

sqlite3 iPhotoMain.db
 

One of the initial problems that I faced was when reading date fields, like the photoDate field on the sqPhotoInfo table. After some experimenting, I determined that the date is stored as a FLOAT which represents the number of days since midnight Jan 1st 2000. To convert this to a Julian Day value, you need to add the Julian Day of 1/1/2000 - then you can use the datetime() function to convert this to a more human readable format. For example:

select primaryKey, 
datetime(photoDate +  julianday('2000-01-01 00:00:00')) as photoDate,
archiveFilename from SqPhotoInfo order by archiveFilename desc;
 

Hopes this saves someone a couple of hours, I googled all over and couldn’t find this info.

IMG_0949: 

iMac Unboxing
IMG_0949:

iMac Unboxing


IMG_0950: 

iMac Unboxing
IMG_0950:

iMac Unboxing


IMG_0951: 

iMac Unboxing
IMG_0951:

iMac Unboxing


IMG_0952: 

iMac Unboxing
IMG_0952:

iMac Unboxing


IMG_0953: 

iMac Unboxing
IMG_0953:

iMac Unboxing


IMG_0954: 

iMac Unboxing
IMG_0954:

iMac Unboxing