59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
import requests
|
|
import json
|
|
from datetime import datetime
|
|
import sys
|
|
|
|
def get_id():
|
|
with open("id.txt", "r") as file:
|
|
return file.read()
|
|
|
|
def cleanse_hour(hour):
|
|
split_hour = hour.split(":", 1)
|
|
return (split_hour[0] if (len(split_hour[0]) == 2) else "0" + split_hour[0]) + split_hour[1]
|
|
|
|
def get_shift(schedule_day):
|
|
shift = schedule_day["DailyShift"][0]
|
|
if (shift == "-"):
|
|
return
|
|
|
|
datestr = schedule_day["StartDate"]
|
|
date = datestr[0:4] + datestr[5:7] + datestr[8:10] + "T"
|
|
|
|
split_shift = shift.split("-", 1)
|
|
startdate = date + cleanse_hour(split_shift[0]) + "00"
|
|
|
|
split_shift = split_shift[1].split(" ", 1)
|
|
enddate = date + cleanse_hour(split_shift[0]) + "00"
|
|
|
|
dept = split_shift[1]
|
|
|
|
return (startdate, enddate, dept)
|
|
|
|
sess = requests.Session()
|
|
|
|
employee_id = get_id()
|
|
|
|
sess.get("https://myschedule.metro.ca/api/Login/" + employee_id)
|
|
total_schedule = sess.get("https://myschedule.metro.ca/api/Employee/" + employee_id).json()
|
|
|
|
with open("calendar.ics", "w") as file:
|
|
file.write("BEGIN:VCALENDAR\n")
|
|
file.write("VERSION:2.0\n")
|
|
file.write("PRODID:SuperNovaa41\n")
|
|
|
|
for i in range(-1, -8, -1):
|
|
res = get_shift(total_schedule["WorkTime"][i])
|
|
if (res is None):
|
|
continue
|
|
|
|
with open("calendar.ics", "a") as file:
|
|
file.write("BEGIN:VEVENT\n")
|
|
file.write("DTSTART:" + res[0] + "\n")
|
|
file.write("DTEND:" + res[1] + "\n")
|
|
file.write("SUMMARY: Work (" + res[2] + ")\n")
|
|
file.write("END:VEVENT\n")
|
|
|
|
with open("calendar.ics", "a") as file:
|
|
file.write("END:VCALENDAR\n")
|
|
|