University of Sydney Timetable Exporter (Sync with iPhone, Google Calendar)

Posted: Sunday 8 March 2015

Link to Web App: https://www.extramaster.net/USyd/timetableExporter/

If you're ever lost and don't know when your next lecture, practical, lab, or tutorial will be in, or in fact where it even is, then this web application will help simply the process of managing your time at the University of Sydney.

iOS supports this web application natively through Safari, and so you can add your timetable automatically with two taps of a finger after you've submitted your credentials to login.

The instructions for iOS assume that you're using iOS Safari, however, if you're on a PC/Mac, and want to sync your timetable with your iPhone, then you can send the generated ics file via email to your iPhone, and you're all set!

With Google Calendar, you can sync this calendar with your Android device. So, by extension, this web application supports Android devices as well (although it hasn't been tested)!

Outlook (tested with Outlook 2013) works, but to a degree. Your timetable will be imported but your times will be off by an hour, due to timezone/daylight savings issues. iOS and Google Calendar do not have this daylight savings issue.

Link to Web App: https://www.extramaster.net/USyd/timetableExporter/

iOS Video Demo

Instructions for iOS

With this web app, you can "sync" your University of Sydney timetable into your iOS calendar app, so that you don't have to refer to an image every time.

Step 1:

Enter your University of Sydney UniKey and Password. Don't worry, this will only be used to gain access to your timetable!

Step 2:

Wait for the Web App to process your timetable. This may take up to 60 seconds, so put your phone down for a while.

Step 3:

Click on the "Add All" button that appears on the Top-Right corner

Step 4:

Check your Calendar! If successful, your timetable should be synced to your iPhone.

Link to Web App: https://www.extramaster.net/USyd/timetableExporter/

Instructions for Gmail

The UNSW version can sync directly to Gmail using OAuth whilst this can't? Well it might be able to in the future, but who uses Google Calander if they have an iPhone?

Step 1:

Enter your University of Sydney UniKey and Password. Again, don't worry, this will only be used to gain access to your timetable!

Step 2:

Wait a while, around 60 seconds, until you get a prompt like the one below

Step 3:

Save/download the file to a location where you can easily retrieve it later. I recommend your Desktop for this.

Step 4:

Go to https://www.google.com/calendar/render#j and click on the "Import Calendar" link, as displayed below.

Step 5:

Click on the "Choose File" button in the following dialogue prompt, and locate the process.ics file that you downloaded in step 3. And then click on "Import"

Step 6:

If successful, a prompt will show up to tell you that your calendar import has been successful. Enjoy your newly imported timetable!

Link to Web App: https://www.extramaster.net/USyd/timetableExporter/

No, I'm not releasing the source code. But authentication can be achieved with the following code:

import requests, re

wasmUrl = "https://wasm.usyd.edu.au/login.cgi?apprealm=usyd&appID=tt-studentweb&destURL=https%3A//www.timetable.usyd.edu.au/personaltimetable/"

headers = {"Referer": "https://wasm.usyd.edu.au/login.cgi?apprealm=usyd&appID=tt-studentweb&destURL=https%3A//www.timetable.usyd.edu.au/personaltimetable/"}
post_data = "appID=tt-studentweb&appRealm=usyd&destURL=https%3A%2F%2Fwww.timetable.usyd.edu.au%2Fpersonaltimetable%2F&credential_0=" + username + "&credential_1=" + password + "&Submit=Sign+in"

with requests.Session() as requestsSession:
    try:
        secondaryUrl = "https://www.timetable.usyd.edu.au" + re.search(r'"/personaltimetable/timetable/(.*?)/current/"',requestsSession.post(requestsSession.post(wasmUrl, data = post_data, headers = headers, verify=False,allow_redirects=False).url).content).group(0)[1:-1]
    except Exception as e:
        raise "Your login creditionals failed to return a result. Please restart again."
    data2 = requestsSession.get(secondaryUrl, headers = {"Referer" : "https://www.timetable.usyd.edu.au/personaltimetable/"}, verify=False)
    timetablesite = data2.content

The MIT License (MIT)

Copyright (c) 2015 Andy Tran

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

Link to Web App: https://www.extramaster.net/USyd/timetableExporter/