Thursday, October 12

Sync Odeo and iTunes with Automator

I hearts Odeo. It’s slick, gradienty, and nicely usable. It’s also available anywhere the tubes go, so I can subscribe while at work. And, of course, it’s run by awesome dudes. Check out my profile! Nevertheless, it does not match iTunes for podcast usability.

iTunes’s big advantage is that podcasts show up in separate channels on my iPod. This is key. But subscribing is only possible on the Mac that I’ve set up to be my podcatcher, which runs essentially headlessly. (iTunes over VNC: not so fun.)

In an earlier post, I talked about using Automator to print the New York Times crossword every morning. In another I described using a separate, dock-tethered Mac for podcasts while keeping my music library on a different computer.

Now I’m going to revisit both those topics with an Automator script that makes iTunes subscribe to everything I’ve subscribed to in Odeo. Now I can find stuff through the nice web interface, dozens of miles away from my Mac mini, and still have the podcasts sync and download for when I plug my iPod in in the morning. Download it here: Sync with Odeo.workflow.

One requirement this script has is that you need to make your Odeo subscriptions public in order to grab the OPML file unauthenticated. Do this in the privacy settings part of your account settings.

I cheated with OPML XML parsing and just pushed the file through sed. I use curl here instead of Automator’s Safari-backed downloading because keeping the data in stdin and stdout means I don’t have to clean up any temp files.

curl $1 | sed -n -e 's/.* xmlUrl="\([^"]*\)".*/\1/pg'

This pipes into a simple AppleScript that loops through the text items in the input and tells iTunes to subscribe to each in turn. I won’t repeat it here because the formatting is a pain.

And there it is! I run it in the middle of the night so I can be sure that everything will be downloaded by the time I sync the iPod in the morning, by saving it as an iCal plug-in and setting up a repeating event. There are just two remaining caveats:
  • Subscriptions are additive. To unsubscribe, I’d have to unsubscribe in Odeo and also iTunes. However, iTunes is good about not updating shows you stop listening to, so not bothering to unsubscribe works, too.
  • I had to unsubscribe from my Odeo inbox. If I didn’t, I’d get everything twice, both through iTunes and through Odeo. This means that I can’t use the “add to inbox” links on Odeo, which is too bad.