Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from urllib import urlencode
- from urllib2 import urlopen, Request
- import json
- import gdata.calendar.client
- import gdata.calendar.data
- import atom.data
- import datetime
- import getpass
- print "Enter carleton user name: ",
- username = raw_input()
- print "Enter carleton password: ",
- password = getpass.getpass()
- print "Enter gmail user name: ",
- gmailuser = raw_input()
- print "Enter gmail password: ",
- gmailpass = getpass.getpass()
- term = "201430"
- calname = "Class Schedule 2"
- login = urlencode( [("userid", username), ("userpwd", password)] )
- cookie = urlopen("https://mobileapps.carleton.ca:8443/iPhone/login.jsp").headers.getheader("Set-Cookie")
- sess = cookie[cookie.index("=")+1:cookie.index(";")]
- headers = {"Cookie":"JSESSIONID=" + sess}
- r = urlopen(Request("https://mobileapps.carleton.ca:8443/iPhone/login.jsp", headers=headers), login)
- s = r.read()
- #print s
- key = s[s.index('value="', s.index('id="key"'))+len('value="'):s.index(">", s.index('id="key"'))-1]
- r2 = urlopen(Request("https://mobileapps.carleton.ca:8443/iPhone/protected/getClassesTerm?userid=" + username + "&key=" + key + "&term=" + term, headers=headers), login)
- terms = json.loads(r2.read())
- courses = terms["terms"][0]["courses"]
- cal_cli = gdata.calendar.client.CalendarClient()
- cal_cli.ClientLogin(gmailuser, gmailpass, cal_cli.source)
- feed = cal_cli.GetOwnCalendarsFeed()
- calend = None
- for cal in feed.entry:
- if cal.title.text == calname:
- print "Found calendar..."
- calend = cal
- break
- if calend == None:
- print "Invalid calendar"
- exit()
- print "Updating Google Calendar..."
- for course in courses:
- #print course
- print "Adding calendar item:"
- print "Title: " + course["courseTitle"]
- print "Description: " + course["courseDescription"]
- print "Days: " + course["dayOfWeek"]
- print "Starts: " + course["startDate"]
- print "Ends: " + course["endDate"]
- if course["startTime"] == "TBD":
- print "Time is TBD, not adding to calendar."
- continue
- startTime = datetime.datetime.strptime(course["startTime"], "%I:%M %p")
- endTime = datetime.datetime.strptime(course["endTime"], "%I:%M %p")
- startDate = datetime.datetime.strptime(course["startDate"], "%Y-%m-%d %H:%M:%S.%f")
- finalDate = datetime.datetime.strptime(course["endDate"], "%Y-%m-%d %H:%M:%S.%f")
- finalDate += datetime.timedelta(days=1)
- cur = startDate.weekday()
- target = []
- day = -1
- recurranceDays = ""
- for d in course["dayOfWeek"]:
- if d == 'M':
- day = 0
- recurranceDays += "MO,"
- if d == 'T':
- day = 1
- recurranceDays += "TU,"
- if d == 'W':
- day = 2
- recurranceDays += "WE,"
- if d == 'R':
- day = 3
- recurranceDays += "TH,"
- if d == 'F':
- day = 4
- recurranceDays += "FR,"
- target.append((7 - cur + day) % 7)
- if recurranceDays != "":
- recurranceDays = recurranceDays[:-1]
- tdiff = datetime.timedelta(days=min(target))
- startDate = datetime.datetime.combine(startDate.date(), startTime.timetz()) + tdiff
- endDate = datetime.datetime.combine(startDate.date(), endTime.timetz())
- print "First occurance: " + startDate.isoformat().replace("-", "").replace(":", "")
- print "Until: " + endDate.isoformat().replace("-", "").replace(":", "")
- print "Time: " + course["startTime"] + " until " + course["endTime"]
- print "Location ID: " + course["locationId"]
- print "Location: " + course["location"]
- evt = gdata.calendar.data.CalendarEventEntry()
- evt.title = atom.data.Title(text=(course["courseTitle"] + course["courseSection"]))
- evt.content = atom.data.Content(text=course["courseDescription"])
- evt.where.append(gdata.calendar.data.CalendarWhere(value=course["location"]))
- interval = "1"
- if course["courseSection"][-1] == "O" or course["courseSection"][-1] == "E":
- interval = "2"
- recur = ('DTSTART;TZID=America/Toronto:%s\r\n' +
- 'DTEND;TZID=America/Toronto:%s\r\n' +
- 'RRULE:FREQ=WEEKLY;INTERVAL=%s;BYDAY=%s;UNTIL=%s\r\n') % (
- startDate.isoformat().replace("-", "").replace(":", ""),
- endDate.isoformat().replace("-", "").replace(":", ""),
- interval,
- recurranceDays,
- finalDate.date().isoformat().replace("-", ""))
- print "Recurrance data: " + recur
- evt.recurrence = gdata.data.Recurrence(text=recur)
- cal_cli.InsertEvent(evt, calend.FindAlternateLink())
- print "Done!"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement