Everpix photo collection archive technical info
A photo collection archive is the export of the raw data of your Everpix user account as stored on our servers (this includes all photos and associated metadata). Although this export is in a format based on open standards, some details are Everpix specific.
The Everpix team has released a Mac app (see below) that can recreate JPEG files with metadata like EXIF from the contents of an Everpix photo collection archive. Some other online photo services have used this document to independently create their own importers.
Files
-
metadata.sqlite
- SQLite database contains account and photo metadata: metadata from JPEG files (EXIF, XMP, etc.), information about the sources photos were imported from, photo pages you shared, photo mails you sent and received, statistics about your account, etc.
-
photos-XX-YY.zip or photos-XX.zip
- Each zip file contains up to 2GB of photo files in JPEG 2000 format. Most photo and imaging software can open JPEG 2000 files and convert them to JPEG. Please see the help for your software on how to do this.
- These photos files do not include JPEG metadata (like timestamps and camera information); that is all in the metadata.sqlite file.
- Filenames are 32-character hexadecimal hash values. Files with the same first 2 characters in their filename are grouped into directories (e.g., all 00… are stored in the 00/ directory), and directories are grouped into zip files. The zip file photos-XX-YY.zip contains directories XX through YY (e.g., photos-00-03.zip would contain 00/, 01/, 02/ and 03/). Very large accounts may have zip files with names like photos-XX.zip, which contain only directory XX.
Metadata tables
Not all data contained in the metadata dump is necessary to extract your photos. To avoid adding confusing details this article focuses on just the data you will need.
-
inbox_mails (one row per Photo Mail)
- mail_id: unique id for a Photo Mail you received
- visibility: 2 = new, 1 = read, 0 = hidden, -1 = deleted but not yet purged
- timestamp: when the Photo Mail was sent
- source_uuid: id of a row in the sources table corresponding to the Photo Mail’s sender
- source_metadata: information about the sender
- subject: subject text associated with the Photo Mail
- body: main message body text associated with the Photo Mail
-
inbox_mails_photos (one row per photo attached to a Photo Mail)
- mail_id: id of the Photo Mail this photo is attached to
- pid: id of the photo itself (see the photos table below)
- source_pid: id of the corresponding row in photos_instances
-
photos
- pid: unique id of this photo
- backing: id of the .jp2 file containing the image (see photos-XX-YY.zip or photos-XX.zip). This is a binary value, while the .jp2 file names are corresponding lower-case hexadecimal values
- To convert binary to hexadecimal in Python, use binasciia.b2a_hex( backing )
- timestamp: Unix timestamp when the photo was taken. Assume timezone is UTC
- visibility: 1 = visible, 0 = hidden, -1 = deleted but not yet purged
- pixels_wide, pixels_high: photo dimensions
- color_profile_id: shortcut values for common color profiles (check photos_instances ICC header for actual ICC color profile data):
other 0 sRGB 1 Adobe RGB 2 Apple RGB 3 Generic RGB 4 Camera RGB 5
-
photos_instances (describes a particular source of a photo--photos may have multiple sources due to duplicates)
- source_pid: unique id of this photo instance
- pid: id of the corresponding photos row
- bid: binary encoding of the first 32 hex chars of the corresponding .jp2 file. If a photo has multiple photo instances, the photo instance(s) whose bid value is a prefix of the photo's backing value are considered primary. Color profiles should be applied from a primary photo instance.
- source_uuid: id of the row in the sources table corresponding to the source of this photo
- album_uuid: id of the album within the source that this came from
- album_name: name of the album this photo came from
- source_metadata: may contain photo metadata from the source (e.g. file name) - for newer photos, this will be in the photo_instance_blobs table instead
- Format: zlib-compressed, binary pickle-encoded Python data
- To decode in Python: cPickle.loads(zlib.decompress( source_metadata ))
- The result will be a self-explanatory dict of source metadata
- headers: may contain EXIF and other JPEG metadata blobs (aka "headers) - for newer photos, this will be in the photo_instance_blobs table instead
- Format: zlib-compressed, binary pickle-encoded Python data
- To decode in Python: cPickle.loads(zlib.decompress( headers ))
- The result will be a dict from JPEG header type names ("EXIF", "ICC", "XMP", "IRB", "TEXT") to binary data
-
photo_instance_blobs
- source_pid: id of corresponding photos_instances row
- blob_data: EXIF and other JPEG metadata blobs (aka "headers")
- Format: zlib-compressed, binary pickle-encoded Python data
- To decode in Python: cPickle.loads(zlib.decompress( blob_data ))
- The result will be a pair of dicts; the first dict is self-explanatory source metadata and the second dict maps JPEG header type names ("EXIF", "ICC", "XMP", "IRB", "TEXT") to binary data
-
shared_snapshots (Photo Pages)
- sid: unique id of a Photo Page
- created_date: Unix timestamp of when the Photo Page was created
- title: title of the Photo Page
- photos: encoded list of pids of photos on this photo page. Format: binary pickle-encoded Python list of binary strings
-
sources (describes sources photos came from)
- source_uuid: unique id of a source (e.g., a folder, an iPhoto album, etc.)
- source_type: the type of source (join with sources__source_types for source type name)
- source_name: name of the source
- device_uuid: id of the device (computer, phone, etc.) this source is part of
- device_type: the type of the device (join with sources__device_types for device type name)
- device_name: name of the device
Using the Everpix Unarchiver for Mac
Everpix Unarchiver is a Mac app that can recreate JPEG files with metadata like EXIF from the contents of an Everpix photo collection archive. An open source version of this app is also available on GitHub. There are no plans to release an equivalent app for Windows or Linux.
Before proceeding with the app, make sure all the archive files (i.e. "metadata.sqlite" and associated "photos-[XX-YY].zip") have been downloaded and are all in the same folder. You must either use the original .zip files downloaded from Everpix or re-create compatible ones[1].
- Get started by downloading the app from this link (requires OS X 10.7 or later): http://www.everpix.com/files/Everpix_Mac_Unarchiver_1.0.1.zip
- Go to your Downloads folder, then double-click the downloaded .zip file to extract the app, and finally double-click on the Everpix Unarchiver app to launch it.
- In the open dialog that appears, select the "metadata.sqlite" file from the photo collection archive you downloaded.
- The new window on screen displays the list of all available photos.
- Select the photos you want to export as JPEG files from the archive then click "Export". In the open dialog that appears, select a destination folder where to store the exported photos. If this folder already contains some photos with the same names, they will not be overwritten and new names will be chosen.
- Wait for the export to complete. Do not quit the app until it is done.
Exported JPEG files will contain embedded metadata like EXIF, XMP, etc. For photos that have duplicates in your Everpix collection (e.g. the same photo imported both from iPhoto and Gmail), the metadata of the primary photo will be preferred.
If you edited the timestamp or orientation of your photos in Everpix, the exported photos will preserve these new values.
[1] If you do not have the original zip files downloaded from Everpix anymore, you can use Terminal to re-create them from the folders of images using the command "cd photos-[XX-YY]; zip -r -0 ../photos-[XX-YY].zip *". Do not attempt to re-create the zip files with the "Compress" feature in the Finder's contextual menu as the result will not work with the Everpix Unarchiver.