Advertisement
ChrisHindefjord

XML to ICS

Mar 12th, 2015
376
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.48 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding: utf-8 -*-
  3. # coding: utf-8
  4.  
  5. '''
  6. Created on 21 sep 2014
  7.  
  8. @author: Zettervall
  9. '''
  10.  
  11. from icalendar import Calendar
  12. from icalendar import Event
  13. import xml.etree.ElementTree as ET
  14. from datetime import datetime
  15. from icalendar import LocalTimezone
  16. import pytz
  17.  
  18. if __name__ == '__main__':
  19.     xmlevents = ET.parse('/var/www/kalender/events.xml')
  20.     locations = {u'Lidköping', u'Örslösa', u'Grästorp', u'Källby'}
  21.  
  22.     lt = LocalTimezone() # we append the local timezone to each time so that icalendar will convert
  23.                          # to UTC in the output
  24.  
  25.     for loc in locations:
  26.  
  27.         root = xmlevents.getroot()
  28.         cal = Calendar()
  29.         cal.add('prodid', 'www.pingstlidkoping.se')
  30.         cal.add('version', '2.0')
  31.         #print (root)
  32.  
  33.         for eventItem in root:
  34.             dateStr = ''
  35.             timeStr = '00:00:00'
  36.             eventAdd = False
  37.             if eventItem.attrib['web'] == "1":
  38.                 event = Event()
  39.                 for item in eventItem:
  40.                     if item.text != None:
  41.                         if item.tag == "title":
  42.                             event.add('summary', item.text)
  43.                         elif item.tag == "date":
  44.                             dateStr = item.text
  45.                         elif item.tag == "time":
  46.                             timeStr = item.text
  47.                         elif item.tag == "location":
  48.                             event.add('location', item.text)
  49.                         elif item.tag == "desc":
  50.                             event.add('description', item.text)
  51.                         elif item.tag == "group":
  52.                             if item.text == loc:
  53.                                 eventAdd = True
  54.  
  55.                 if eventAdd == True:
  56.                     d = datetime.strptime(dateStr, "%Y-%m-%d")
  57.                     t = datetime.strptime(timeStr, "%H:%M:%S").time()
  58.                     # TODO use tzinfo=pytz.utc
  59.                     event.add('dtstart', datetime.combine(d,t).replace(tzinfo=lt))
  60.                     event.add('dtend', datetime.combine(d,t).replace(tzinfo=lt))
  61.                     #event.add('dtstart', datetime.strptime(dateStr + ' ' + timeStr, "%Y-%m-%d %H:%M:%S"))
  62.                     #event.add('dtend', datetime.strptime(dateStr + ' ' + timeStr, "%Y-%m-%d %H:%M:%S"))
  63.                     cal.add_component(event)
  64.  
  65.         f = open(loc + '.ics', mode='wb')
  66.         f.write(cal.to_ical())
  67.         f.close()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement