export-events/main.py
2025-04-03 19:07:58 +02:00

46 lines
1.9 KiB
Python
Executable File

from intra import IntraAPIClient
import json
from icalendar import Calendar, Event, vCalAddress, vText
from datetime import datetime, timedelta
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', "Evaluation:\n" + event['corrector']['login'] + "->" + event['correcteds'][0]['login'] )
ical_event.add('description', event['corrector']['login'] + " will evaluate " + event['correcteds'][0]['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)