Advertisement
Guest User

MyEpisodes RSS to iCal

a guest
Dec 13th, 2012
367
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.81 KB | None | 0 0
  1.     import urllib2, re, time, pytz
  2.      
  3.     from xml.etree import cElementTree as ET
  4.     from pprint import pprint
  5.     from icalendar import Calendar, Event
  6.     from datetime import datetime, timedelta
  7.      
  8.     from django.http import HttpResponse
  9.      
  10.      
  11.     def myeps(request):
  12.         username = 'YOUR_USERNAME'
  13.         password = 'YOUR_PASSWORD_MD5_HASHED'
  14.         url = 'http://www.myepisodes.com/rss.php?feed=mylist&uid=%s&pwdmd5=%s' % (username, password)
  15.      
  16.         response = urllib2.urlopen(url)
  17.         xml = response.read()
  18.      
  19.         tree = ET.XML(xml)
  20.         descs = tree.findall('channel/item')
  21.      
  22.         cal = Calendar()
  23.         cal.add('prodid', '-//Blaise Kal//NONSGML MyEpisodes//EN')
  24.         cal.add('version', '2.0')
  25.      
  26.         for desc in descs:
  27.             desc = desc.findtext('description')
  28.             title = re.search('\<h3\>(.*)\<\/h3\>', desc).group(1)
  29.             episode = re.search('\<td\>([0-9]{2}x[0-9]{2})\<\/td\>', desc).group(1)
  30.             date = re.search('\<td\>([0-9]{2}-[a-zA-Z]{3}-[0-9]{4})\<\/td\>', desc).group(1)
  31.             date = '%s %s' % (date, re.search('\<td\>([0-9]{2}:[0-9]{2})\<\/td\>', desc).group(1))
  32.             dt = datetime.strptime(date, '%d-%b-%Y %H:%M') - timedelta(hours=1)
  33.      
  34.             event = Event()
  35.             event.add('summary', '%s %s' % (title, episode))
  36.             event.add('dtstart', dt)
  37.             event.add('dtend', dt + timedelta(hours=1))
  38.             event.add('dtstamp', dt)
  39.             event['uid'] = '%s%smyeps' % (title, episode)
  40.      
  41.             cal.add_component(event)
  42.      
  43.         response = HttpResponse(cal.to_ical(), content_type='text/calendar; charset=utf-8')
  44.         response['Content-Disposition'] = 'Content-Disposition: inline; filename=myeps.ics'
  45.      
  46.         return response
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement