from intra import IntraAPIClient import json from icalendar import Calendar, Event, vCalAddress, vText from datetime import datetime, timedelta from pytz import timezone import pytz def utc_to_time(naive, timezone="Europe/Istanbul"): return naive.replace(tzinfo=pytz.utc).astimezone(pytz.timezone(timezone)) cal = Calendar() cal.add('prodid', '-//Codam Events//Duinvoetje.nl//') cal.add('version', '2.0') ic = IntraAPIClient() response = ic.get("users/187348/events_users") for entry in response.json(): ical_event = Event() event = entry['event'] ical_event.add('uid', event['id']) ical_event.add('dtstamp', datetime.now()) ical_event.add('summary', event['name']) ical_event.add('description', event['description']) ical_event.add('dtstart', utc_to_time(datetime.fromisoformat(event['begin_at'].split('.')[0]), "Europe/Amsterdam")) ical_event.add('dtend', utc_to_time(datetime.fromisoformat(event['end_at'].split('.')[0]), "Europe/Amsterdam")) ical_event.add('location', event['location']) cal.add_component(ical_event) response2 = ic.get("users/187348/scale_teams") for entry in response2.json(): ical_event = Event() event = entry ical_event.add('uid', event['id']) ical_event.add('dtstamp', datetime.now()) ical_event.add('summary', event['corrector']['login'] + "->" + event['correcteds'][-1]['login'] ) ical_event.add('description', event['corrector']['login'] + " will evaluate " + event['correcteds'][-1]['login']) ical_event.add('dtstart', utc_to_time(datetime.fromisoformat(event['begin_at'].split('.')[0]), "Europe/Amsterdam")) ical_event.add('dtend', utc_to_time(datetime.fromisoformat(event['begin_at'].split('.')[0]) + timedelta(minutes=30), "Europe/Amsterdam")) ical_event.add('location', "Codam Campus") cal.add_component(ical_event) print(cal.to_ical().decode('UTF-8')) # print("="*20) # print(json.dumps(response2.json(), indent=2)) # print("="*20)