urlwatch 1.5 (ical2txt, utidylib, documentation)
[urlwatch.git] / ical2txt.py
blob4bc1e89179090feed593286b362ef4036b0e7b28
1 #!/usr/bin/python
2 # Convert iCalendar data to plaintext (very basic, don't rely on it :)
3 # Requirements: python-vobject (http://vobject.skyhouseconsulting.com/)
4 # Thomas Perl <thpinfo.com>; Fri, 14 Nov 2008 12:26:42 +0100
5 # Website: http://thpinfo.com/2008/urlwatch/
7 def ical2text(ical_string):
8 import vobject
9 result = []
10 if isinstance(ical_string, unicode):
11 parsedCal = vobject.readOne(ical_string)
12 else:
13 try:
14 parsedCal = vobject.readOne(ical_string)
15 except:
16 parsedCal = vobject.readOne(ical_string.decode('utf-8', 'ignore'))
18 for event in parsedCal.getChildren():
19 if event.name == 'VEVENT':
20 if hasattr(event, 'dtstart'):
21 start = event.dtstart.value.strftime('%F %H:%M')
22 else:
23 start = 'unknown start date'
25 if hasattr(event, 'dtend'):
26 end = event.dtend.value.strftime('%F %H:%M')
27 else:
28 end = start
30 if start == end:
31 date_str = start
32 else:
33 date_str = '%s -- %s' % (start, end)
35 result.append('%s: %s' % (date_str, event.summary.value))
37 return '\n'.join(result)
39 if __name__ == '__main__':
40 import sys
42 if len(sys.argv) == 2:
43 print ical2text(open(sys.argv[1]).read())
44 else:
45 print 'Usage: %s icalendarfile.ics' % (sys.argv[0])
46 sys.exit(1)