My relationship with iPhoto was been going downhill for a couple of years now. It’s slow (my photo library includes more than 15k photos and videos and it’s growing faster every year). It doesn’t sync between computers and devices (photo stream is limited to 1,000 photos, no videos). It feels like it’s trying to hide the original photo files from me by burring them somewhere where a normal user would have a hard time getting to.
iPhoto is a feature rich application.
But when it comes to my photos, my first and most important feature is “future proof”. I want to be sure where my photos are. I want to be sure of what happens to my photos if I edit them. I want to be sure of where my metadata are stored. I want to be sure I can easily move to a different OS or mobile OS and still have my full photo library. iTunes has none of these features.
So I decided to move from feature rich to future proof: keep my photos and videos organized in folders and sync them between computers and devices with dropbox.
The steps described bellow fit perfectly my way of doing things. If you are not so much into bash scripting, read the following articles first -or read them anyway, they helped me a lot.
- Moving from iPhoto to Dropbox
- Move entire iPhoto Library to Dropbox
- Exporting your iPhoto Library to Dropbox
Exporting from iPhoto
In order to export my photos and videos from iTunes, I wrote a simple bash script, export_iphoto.sh. It requires ExifTool -I really can’t thank enough Phil Harvey for writing and maintaining this piece of software!
Once you have ExifTool installed, download export_iphoto.sh, edit $IPHOTOPATH and $EXPORTDIR and run it (it will create the file filelist.txt at your current dir, you can delete it after it’s done.)
$ bash ./export_iphoto.sh
Depending on the size of your library, the script may take a lot of time, even hours.
When it’s done, your photos will have been copied to $EXPORTDIR and organized by year and year-month.
Identifying and deleting duplicates
Finding and deleting duplicates in iPhoto is always something difficult for me. So, I ended up with many duplicate files. However, now it is much easier to identify and delete them (without worrying much that I will accidentally delete something I didn’t want to.
I used fdupes, a command line program that identifies duplicate files (first it compares file sizes, then MD5 signatures, then byte-by-byte comparison). For me, the easiest way to install it was homebrew.
$ brew install fdupes
$ fdupes -rd <path to exported photos>
once to make sure you understand what the script does. If you have many duplicates and you trust fdupes, you may use
yes 2 | fdupes -rd <path to exported photos>
What I did so far did not involve dropbox in any way. I even preferred to export the photos to a folder NOT synced by dropbox. The reason is that I suspected that I may have to stop and go over the process more than once and copying, moving and deleting thousands of files (and many GB) while dropbox is trying to index and upload them is not very efficient.
But now that I had all my photos exported, duplicates removed, and I was happy this what I had, I moved all the “year” folders under Dropbox/Pictures (ex. Dropbox/Pictures/2013/, etc.)
You may wander why not move them under Pictures and not under Camera Uploads. For two reasons:
- (I’m not 100% sure, but) it looks like that just adding photos under Camera Uploads doesn’t make them to show up in the photo gallery generated when I visit dropbox.com or in the iOS app. So there was no reason to do so.
- On the other hand, one of my computers has limited disk space. I use “selective sync” to sync to this one only the folders I need. I want to sync “Camera Uploads” and be able to upload photos from this machine too, so I’d rather keep Camera Uploads relatively small (more on this later).
Now that I’ve moved the photos out of iPhoto and to dropbox, I intend to use dropbox’s Camera Upload to add new photos to my library. I will use the desktop dropbox client to add photos from my camera or my flip (yes I still use it) and the iOS app to upload photos from my iPhone (or the android app if I decide to move to android in the future).
Then, I will automatically move photos nad videos from the Camera Uploads dropbox folder to my Photos dropbox folder. To do this, I use hazel a nice little tool for OS X that lets one automate things related to files depending on rules.
I created a rule that will detect files in Camera Uploads that are older than 2 months and move them to my photo archive under Photos. During my tests I found out that even though dropbox will recognize the creation date of photos and videos from my iPhone or modern cameras, it didn’t always do very well with older videos. So, I preferred to go with a variation of the script I used to export the files from iPhoto.
- All my photos are nicely organized in dropbox based on the date they were shot.
- New photos and videos shot with my iPhone are automatically uploaded using the dropbox app to Camera Uploads.
- The same happens when I connect a camera to any of my machines (home, laptop, office).
- Photos/videos older than a month are moved and archived in (dropbox) Photos.
- If someone sends me photos from a party or an event, I just copy them to Camera Uploads (I don’t even bother renaming them) and they will be automatically organized like the rest of them.
- My photos and videos are synced between my computers and are always available on dropbox.com.
OK, this was not the end. I’m still missing a desktop app that will go through all the folders and subfolders under Photos and create a visual timeline/photostream. I don;t think that it should be difficult for an OS X developer to built something like this.
Nice surprise dropbox!
Just when I was about to publish this post, I noticed something new in dropbox.com. When I click “photos” I can see ALL the photos that I’ve stored in dropbox -all, as in ALL, no matter where they are stored, and there’s also a time line on the right, making it easy to jump to specific dates! Very nice dropbox! (Could this be the result of snapjoy acquisition?)
If you want to comment, here is the discussion on HackerNews.