#! /usr/bin/env python

from icalendar import Calendar
from dateutil import tz
from datetime import datetime
import sys
import StringIO
import re

r_atendee = re.compile(r'mailto:', re.IGNORECASE)
def format_atendee(a):
    return r_atendee.sub('', a)

def main():
    cal = sys.stdin.read()
    tmpfile = StringIO.StringIO()
    tmpfile.write(cal)
    tmpfile.seek(0)
    tzical = tz.tzical(tmpfile)
    try:
        icaltz = tzical.get()
    except ValueError:
        # No Timezone in iCal, assume UTC?
        icaltz = tz.tzutc()
    cal = Calendar.from_ical(cal)
    events = cal.walk('VEVENT')
    evnum = len(events)
    for n, e in enumerate(events):
        if evnum > 1:
            print '** Event %s:' % (n+1)
#        print e
#        print "--------"
        start = e['dtstart'].dt.replace(tzinfo=icaltz).astimezone(tz.tzlocal())
        end = e['dtend'].dt.replace(tzinfo=icaltz).astimezone(tz.tzlocal())
        print  'Event: %s' % e['summary'].encode('UTF-8')
        print  'Start: %s' % start.strftime('%a, %Y-%m-%d %H:%M %Z')
        print  'End:   %s' % end.strftime('%a, %Y-%m-%d %H:%M %Z')
        print  'Organizer: %s' % format_atendee(e['organizer'])
        print  'Status: %s' % e['status']
        if 'location' in e:
            print  'Location: %s' % e['location'].encode('UTF-8')
        if 'attendee' in e:
            print 'Atendee(s):'
            for a in e['attendee']:
                print " %s" % format_atendee(a)
        print '\n%s' % e['description'].encode('UTF-8')

if __name__ == "__main__":
    sys.exit(main())

@@ -1100,32 +1100,65 @@
 m-%25d %25H:%25M %25Z')%0A
+        if 'organizer' in e:%0A    
         print  '
@@ -1205,16 +1205,46 @@
 izer'%5D)%0A
+        if 'status' in e:%0A    
         
@@ -1431,16 +1431,78 @@
 ee(s):'%0A
+            if not isinstance(e%5B'attendee'%5D, basestring):%0A    
         
@@ -1529,16 +1529,20 @@
 ndee'%5D:%0A
+    
         
@@ -1581,16 +1581,129 @@
 ndee(a)%0A
+            else:%0A                print %22 %25s%22 %25 format_atendee(e%5B'attendee'%5D)%0A        if 'description' in e:%0A    
         

Make more fields optional and fix atendee list if only one atendee