#!/usr/bin/python import vobject import time import datetime import urllib url="http://user:pass@www.scheduleworld.com/sw/webDAVDir/id.ics" ical=urllib.urlopen(url) cal=vobject.readOne(ical.read()) now = datetime.datetime.now() #now = datetime.datetime(2008, 5, 1, 0, 0) events = [] for c in cal.components(): if c.name == u'VEVENT': if len(str(c.dtstart.value)) == 25: start=datetime.datetime(*(time.strptime( str(c.dtstart.value)[:19], "%Y-%m-%d %H:%M:%S")[0:6])) else: start=datetime.datetime(*(time.strptime( str(c.dtstart.value), "%Y-%m-%d")[0:6])) if len(str(c.dtend.value)) == 25: end=datetime.datetime(*(time.strptime( str(c.dtend.value)[:19], "%Y-%m-%d %H:%M:%S")[0:6])) else: end=datetime.datetime(*(time.strptime( str(c.dtend.value), "%Y-%m-%d")[0:6])) if getattr (c, 'summary', ''): summary = getattr (c.summary, 'value', '') else: summary = "" if getattr (c, 'location', ''): location = getattr (c.location, 'value', '') else: location = "" summary = summary.encode('ascii', 'replace') location = location.encode('ascii', 'replace') delta = datetime.timedelta(days=3) if (start > now and start < (now + delta)) or \ (end > now and end < (now + delta)): event = { 'start' : start, 'end' : end, \ 'summary' : summary, 'location' : location} events.append( event ) events.sort() for e in events: start = str(e.get('start', ""))[:-3] end = str(e.get('end', ""))[:-3] summary = e.get('summary', "") print '%s => %s - %s' % (start, end, summary)