Errors importing iCal data (iCalendar) into Google Calendar

While attempting to import iCal export (.ics) files into Google Calendar, I’ve encountered the following errors:

  • Failed to import events: Unable to process your iCal/CSV file. (Google, Bing)
  • HTTP/1.1 403 Google Calendar doesn’t support storing of “To Do” (VTODO) components (Google, Bing)

It appears as though Google Calendar is choking on both the VTODO and VALARM stanzas within the export file.

VTODO data is easy to remove, as it will appear near the end of the export file.  Find the first instance of “BEGIN:VTODO,” and remove all data beginning with that line and ending with the final “END:VTODO” instance (take care not to delete the “END:VCALENDAR” line, as it will invalidate the export).

VALARM data is problematic, as it is nested within each VEVENT stanza.  Depending on the size of the export file, it could easily contain hundreds or thousands of these.

The fast and dirty solution is to remove these elements from the iCal export file, and then import the “clean” version into Google Calendar.  Note that imported events in the target Google Calendar will no longer contain alarms–these events will need to be updated manually, if desired.

Following is a simple Python script that will remove these stanzas and produce a new file that should import properly.  After downloading, be sure to edit the INFILE variable at a minimum.

Head on over to Code for the latest version (iCal-to-GCal).

It’s worth noting that this script can be used to quickly remove data from any file that contains similarly-formatted information.  Just update the TAGS list accordingly.

UPDATE01: Wondering whether the integration of Tasks into Google Calendar will alleviate the VTODO handling issue?

Share This

E-mail items to Instapaper

I use Instapaper every day, as a means of saving off pages that I come across but don’t have the time to read/evaluate immediately.  And when I’m working on a computer this is all well and good–the Instapaper bookmarklet allows me to save pages quickly and move on.

The problem arises when I’m viewing content on my mobile phone, as the concept of a bookmarklet in any mobile browser that I’ve had the pleasure of using does not exist.  To make matters worse, I’m one of the five or six people on Earth who does not own an iPhone.  So, the surely-pleasant Instapaper apps are dead to me.

For some time, I’ve been using the “Send this Page” functionality built in to my mobile browser to e-mail pages to a mailbox for further processing.  Some simple mailbox rules and a short list of known source addresses make this a viable solution.  Unfortunately, viable is never good enough.

To scratch this itch, I’ve thrown together a small collection of scripts that will:

  1. Retrieve messages from an IMAP mailbox (this needn’t be a dedicated inbox–a specific folder, Gmail label, etc. will suffice).
  2. Validate senders using a whitelist.
  3. Extract things that look and smell like URLs from message bodies (should handle crappy HTML messages, too).
  4. Submit URLs to Instapaper.

Surprisingly, it works (for me).  Requires Python 2.5+ (haven’t tested with 3.X, but should work), and an IMAP-enabled mailbox of some sort.

Head on over to Code for the latest version (IPMailer).

Share This

Breakwater Inn Sunset

Sunset as seen from the Breakwater Inn, Hatteras, NC.

Sunset at the Breakwater Inn

Share This

Brett Dennen at The State Theatre

I had the pleasure of seeing (and photographing, without a pass) Brett Dennen’s 6 February show at the State Theatre in Falls Church, VA.

I’ve shot a handful of indoor shows, with a variety of lenses.  In this case, I decided to shoot with a couple of faster primes (the Canon 50mm F/1.8 and 35mm F/1.4).  Shooting with these focal lengths at an indoor venue tends to work out very well, or very poorly, depending on the distance to the stage, available lighting, and the type of photo that one has in mind.  In this case, I was more interested in seeing how the primes would perform in terms of focus and color, and not so much concerned with getting any really tight shots.  

The venue itself was small but crowded, and getting up front was inconvenient.  So, I shot everything from the standing room behind the sound booth, stage left, or the balcony.  Given that I didn’t have a lot of focal length on my side, I had to be mindful of both framing and focus, so that shots would be metered appropriately and could be focused relatively quickly in the low light.  My specific concern with respect to metering was the drastic lighting imbalance at a distance–when I had a dark crowd in the bottom of the frame, and a bright stage above–causing my shutter speeds to decrease (when, in my mind, they should not have), resulting in blur where I didn’t want blur.

Overall, I was happy with the results.  And, here are a few of my favorites.  Enjoy . . . 

Share This