What is it ?
Aperture iPhoto Sync is an applescript which will sync your Aperture projects/albums to iPhoto, thereby making them available to the rest of iLife apps for you to use. (Yes I know that you can drag and drop Aperture images & create iPhoto albums, but a script sure beats doing this manually!) It syncs masters by creating links in iPhoto library to save space.. and (optionally) syncs up modified versions by exporting them using Aperture’s export presets.
Features
- Syncs Masters without copying them – save space !
- Syncs modified versions by exporting them from Aperture using selected presets.
- Will optionally delete photos from iPhoto albums before syncing – ensuring an exact replica.
- Syncs intelligently – ignores ‘Rejects’ and syncs only ‘Select’ of a stack to avoid clutter.
- Uses the library that you have configured in Aperture as the the library it imports from.
First run….
The first time it is run, it will prompt you for certain defaults for it to use henceforth. These values include :
- Whether to Export or Ignore modified photos or ‘versions’ from Aperture while syncing. Exporting modified photos to iPhoto will take up more space since duplicates of the existing versions in Aperture will be made. This also takes up more time to sync.
- If exporting, the Aperture Export preset that will be used by aperture to export the photos.
- Whether to delete photos from existing iPhoto albums (with the same name as the Aperture project/album you are syncing up) before adding photos to it. Selecting this option increases sync time by a bit, but will ensure that the iPhoto album is a replica of your Aperture album/project.
These preferences are stored in the file ~/Library/Preferences/com.devarshi.ApertureiPhotoSync.plist. To change these preferences, either edit the file using plist editor, or delete it. If the script does not find the file, it will prompt you again for the preferences.
The sync….
Using the script is pretty straightforward.
- When run, the script will present you with a list of folders and projects from Aperture that you may choose from. Currently, this script allows you to select only one folder/project at this level.
- Upon selecting a project/folder, the script will present you with a list of projects/albums contained within it, from which you may select one or more.
- If the first selection does not contain any projects/albums, the script will check to see if it contains any images itself. If so, the script shall create an album in iPhoto with the name of the selected project in Aperture and import those images into that album according to the defaults selected earlier .
- If, in step 2, you were presented with and selected one/more sub-projects/sub-albums, the script will then proceed to create albums in iPhoto with the same names as the selected sub-projects/sub-albums and import the images into those albums according to the defaults selected earlier.
A few tips…
- If you choose to “Export” modified images from Aperture, do note that this takes up some amount of time during which, apparently, nothing seems to be happening… This is because Aperture performs a background export of the images… If you don’t believe me, check your CPU usage !
. - The “Export” of modified images creates temporary photos. After each project/album is imported into iPhoto (copies of these temporary photos are made in the iPhoto library), these temporary photos will be moved to trash. So, if you plan to ‘export’ a lot of photos, make sure you clean up your trash periodically !
A few things to note…
- As of version 2.3, the script needs your Aperture library to have atleast one stack for it to run correctly. It will fail in between if you dont. While I work on this problem, for the time being, please create atleast one stack in your library.
- I’ve done some basic tests with Aperture 2.1.2 and iPhoto ‘09. (Do not use this version script for Aperture versions prior to 2.0 – use an older version).
- Please note that this script is still in alpha stage… so please backup your libraries before attempting to use this script.
- I currently do not have a lot of time to test this script extensively, and so am posting it here hoping that it’ll be useful to others, and that I can use your feedback to fix any issues…
- However, if you run into any problems, or if you have any comments, please feel free to get in touch with me or leave me a comment here.
Update History
v2.3:
- Minor update : Fixed the failure in the script if you had “~” in your Aperture Library path.
v2.2:
- Minor update : Fixed preference file creation failure when starting up without an existing
one
v2.1 :
- Updated preference version. We now lookup the library file location from
aperture preferences as opposed to asking the user for it.
v2.0 :
- Updated to work with Aperture 2.x and iPhoto. Does not work with previous
Aperture versions anymore. Use v0.3 of the script for pre 2.x Aperture versions
First of all, thanks for writing this script. I’m interested n it to be able to migrate back from Aperture to iPhoto. I’m getting an error after answering the question about deleting before appending. It says “The variable propertyListFileName is not defined” and the script is hung in the first line of code after “– write defaults to file”
-N
@Nicholas : Download version 2.2 (above). I’ve fixed the problem there.
Thanks! A minor note — if there are projects at the root level of the Aperture library (i.e. not nested in folders) I get a “The List is Empty” error. If I create a folder and put all my projects in it, then it works.
Hmmm. Now I get “Unable to open database “~/Pictures/Aperture Library.aplibrary/Aperture.aplib/Library.apdb”: unable to open database file” frozen on the (do shell script sqlQuery)… Is it because Aperture can’t be opened by more than one process at the same time?
My library is in the usual location. Is this the ’space’ issue? Is there a way to pass “Aperture\ Library.aplibrary/” ? or create an alias to the library, which doesn’t have spaces??
-N
Let me know if oyu’d rather do this by email… I think the space in the name isn’t the issue. I think it’s the ” \” in this; I don’t know the syntax for sqlite, but if I turn that to a forwardslash “/” or add a & the script gets farther and chokes on “item2″ (I don’t know what I’m doing…):
–perform the SQL query : exclude the images which have been adjusted in Aperture
set sqlQuery to “/usr/bin/sqlite3 ” & PrefApertureLibraryFileName & ” \” select distinct
I think you can ignore comment #6.
@Nicolas : The problem is with the ‘~’ not the spacing
. Since the entire library path is quoted (enclosed in quotes), shell expansion for ~ (which should map to your home directory) does not happen and hence it cant find the database file. I didnt see the problem since my aperture libraries are on a separate volume. Am working on the problem… should have a fix soon.
@Nicolas : Update to v2.3. That should fix the problem for you. Also note that as of v2.3, there is a bug which causes the script to fail if you dont have atleast one stack in your library. Workaround : Create one stack in your library for now
.
Thank you so much for writing the script but I do have a problem. When I run the script, this is the message I get: “System Events got an error: Can’t get temporary items folder”. How do I fix this? Thank you!
Devarshi,
Thank you for creating the script. I am able to use it to copy the photos, but it will not copy the metadata. I must have the keywords and rating in order to make this transfer useful. Am I doing something wrong?
___Gary
Thank you so much for this amazing script, but I also do have a problem.
When I run the script, i can select one folder from my aperture library, then it shows me the projects in this folder but i’m unable to select any project. Any idea how to fix this ?
Thank you
Gary, Unfortunately, in it’s current incarnation, the script does not copy the metadata… I havent had the time to work on the script, but when I do, I will try to see if that’s possible..
–Devarshi
Hi Devarshi !
Thank you for publishing your script..
Really..
I would ask you if with my Aperture 2.1.4 and iPhoto 8.1.1 (’09), will I have any problem ? And I didnt get (not native english speaker) what do you mean by create one “stack” ?
Thanks !
Hi,
Is there a filter to sync only pictures with a certain rating (and above) into iPhoto?
thanks,
Levente
Hi Devarshi,
from all I read, this is a great script for folks who have both, iPhoto and Aperture on the same computer etc.
I’m looking for a “family-compatible” setup, where I use Aperture on my MacPro and everyone else in the family can get access to the pictures through their iPhoto on their own Macs (Mini, MB, MBP…).
What is your recommendation to go about this? Could I do this with your script?
Thanks — KH
There is Aperture3 out there and the database file is always locked, besides the names of tables are changed.
Is there a new solution or is your project dead.
Thanx fiveyears
Hi,
I haven’t had a chance to update the script for Aperture 3… Will do so when I get a chance..
–Devarshi