Automator

Fixing HoudahGeo's City And State Reverse Geocoding

I've been looking into geotagging my photos and finally got around to purchasing a GPS logger. Initially, I just wanted a script to automate the merging of the latitude and longitude from the GPS log into each image's EXIF information, after which, I'd just import the images into Aperture as normal. But then I found out that even more useful would be to reverse geocode the images. This would mean the the IPTC fields for city, state and country would be automatically populated, saving me from the task of manually entering each in Aperture.

Well, HoudahGeo does it better and more elegantly than any other software out there. After downloading a demo and reading Brett Gross' write-up on Aperture and houdahGeo I was sold.

The one glitch is that HoudahGeo saves both the city and the state into the IPTC city field, separated by a comma and a space, e.g., Great River, New York. I sent an email to the developers and was told that the next version, 1.5, would have this fix. Until then, I've whipped up an Automator workflow with a bit of bash scripting that calls exiftool that splits the IPTC metadata properly and will work with cities and states with any characters, including spaces, but not commas. Here's the guts to the Split IPTC City And State Automator Script:

# This automator workflow is licensed under the GPL, v2
for f in "$@"
do
        CITYSTATE=`exiftool -City -s -s -s $f`
        CITY=${CITYSTATE%,*}
        STATE=${CITYSTATE#*, }
        exiftool -overwrite_original -City="$CITY" -Province-State="$STATE" $f
done

So my workflow is now:

  1. Copy photos from memory card to temporary directory on my harddrive along with GPS log
  2. Use HoudahGeo to tag each image with longitude, latitude and altitude, along with the city/state and country
  3. Save the GPS log away in case I need it later
  4. Run the Automator script on the images to fix the city/state issue (installing it as a Finder plugin is recommended)
  5. Import the images into Aperture

Syncing Two Macs Without .Mac Or MobileMe

In addition to my Mac Pro, I now have a 12" Powerbook that I use on the go. Having two computers introduces the hassle of keeping them in sync. Since .Mac comes with a 60 day trial, I decided I'd give it a try. For what it does, it does it well: it kept my mail, bookmarks, calendar and address book in sync, but nothing else.

However, .Mac costs $100 a year and it didn't meet all my needs. It did, however, offer a whole bunch of solutions (in the form of cloud computing) that I didn't want because rather than used someone else's cloud, I'd rather roll my own open source cloud. I don't use flickr, gmail or wordpress.com for this very reason, so why would I want .Mac email, webhosting, galleries, etc? All I really want to do is keep to Macs in sync, including all my documents. I googled and the best I found was Geek Throwdown: How to sync two or more Macs?.

Enter Unison. Here's a quick guide:

  1. I turned on remote login in system preferences on the PowerBook. This lets me SSH into it, which is a good thing because Unison operates over SSH.
  2. Installed the OS X binary of Unison onto both machines. (Downloaded the GUI universal binary and then launched the application, from there, within the application I was able to install the text version. Again, I did this for both machines.)
  3. Logged out of the PowerBook, then SSHed into it from the Mac Pro. I then deleted my entire home directory on the PowerBook (rm -rf).
  4. I exited all running programs on the Mac Pro except a terminal.
  5. Created a directory .unison in my home directory on my Mac Pro. Inside that directory, I created a file sync.prf. Here's the contents of that file, annotated to explain what each line means:
    # Roots of synrchonoization
    # I want to sync my entire home directory of the Mac Pro, the local machine with
    root = /Users/brianpuccio
    # ... my PowerBook, hostname beta, the entire home directory
    root = ssh://brianpuccio@beta.local//Users/brianpuccio
    
    # This synchronizes file modification times
    times = true
    
    # This turns off logging
    log = false
    
    # This tells unison to ignore some files and paths
    # http://alliance.seas.upenn.edu/~bcpierce/wiki/index.php?n=Main.WikiSandbox
    ignore = Name .FBCIndex
    ignore = Name .FBCLockFolder
    ignore = Name {Cache*,.Trash*,.VolumeIcon.icns,.HSicon,Temporary*,.Temporary*,TheFindByContentFolder}
    ignore = Name {TheVolumeSettingsFolder,.Metadata,.filler.idsff,.Spotlight,.DS_Store,.CFUserTextEncoding}
    # ~/.fseventsd/ is owned by root, don't have privledges to this, so ignore it
    ignore = Name .fseventsd
    # Unison is also the name of a usenet client http://www.panic.com/unison/
    # This ignores its very large and often changing cache, which is fine since I don't use it on the Powerbook
    ignore = Path {Library/Application Support/Unison/news.usenetserver.com}
    # This is Mail's cache of my IMAP accounts, since this was large and I kept having Unison crash on the
    # first few syncs, I omitted this path figuring Mail on the PowerBook would sync once it went online
    # It worked, so I left it alone and in here
    ignore = Path {Library/Mail/IMAP-*}
    # This is my aperture library and it is too big to fit on my PowerBook (and the PowerBook too slow to run Aperture)
    ignore = Path {Pictures/Aperture Library.aplibrary}
    # It seems like Unison should automatically ignore its own config folder, but it didn't for me, so I added this
    ignore = Path .unison
  6. I ran Unison by issuing the command unison sync (sync because that is the name I cave the preference file, sync.pref.
  7. The GUI launched, asked me for my password on the PowerBook, which I entered. It did a quick comparison (since the PowerBook should have a completely empty home directory) and then listed all the files and directories.
  8. I made sure that Unison was set to sync each file and directory from the Mac Pro to the Powerbook (Unison uses left and right terminology, e.g., sync file from left to right).
  9. I clicked Go and it churned along.

For the most part, it worked. All my files were moved over, my keychain and all its passwords, my browsing history and bookmarks, my Adium settings, accounts and chat histories, my Colloquy settings and chat logs, my dock, my background ... quite literally everything.

There are a couple of issues:

  1. Window positions are copied over. Going from a 1920x1200 screen to a 1024x768 means some windows were too large. A quick window, zoom command fixed those. (But they then get synced back to the Mac Pro, where everything will now launch in the top left of the screen.) I'm just going to accept this.
  2. Several files (such as ~/Library/Preferences/com.apple.dock.plist, ~/Library/Preferences/com.apple.dashboard.plistand ~/Library/Preferences/com.apple.finder.plist) are constantly modified by the OS and the very act of logging in to both machines means they both have their timestamps changed, which means Unison doesn't know which one you want to sync to the other, so it displays a ? instead and the default is to do nothing. Of course you can go through each of these one by one (or even en masse) and set that sync to be a Left to Right or Right to Left sync. I'm going to try using the force option and either favor a root explicitly or use the newer option.
  3. Dropping to a terminal to do this (and I do it a few times a week, whenever I shift from one machine to another) is annoying. I'm created an Automator script to run Unison and added it to my dock.
  4. Typing in my password for every sync is annoying. I now use an SSH key.
  5. I have only tried this where UIDs and GIDs were the same. Good luck to you if they're different!

I will update this as I make improvements.

Adding TV Shows On DVD To iTunes

I was wondering if someone here might now how to do this. I'm ripping my Family Guy DVD collection using Handbrake, and I'd like to know if there's a way to have the videos saved in the "TV Shows" portion of iTunes, as opposed to the "Movies" section.

...

I prefer the AtomicParsley method over using iTunes because it actually writes a new movie file with the designated atoms so that information is sticky no matter where you put the file rather than simply living in iTunes' database.

...

Lostify is easier to use [than Atomic Parsley]. It uses Atomic Parsley for the backend, but is nicer to use than the CLI. It's slightly clunky, but works well enough. And ++ to what GiantRobot said about the information being embedded in the file itself.

Now I can stick all my TV shows I have on DVD onto my computer and sync them to my iPhone. If I want to write some sort of AppleScript or use Automator, the command line would come in handy as it would be easy to pass arguments off to.

Syndicate content