Newer
Older
from pathlib import Path
import re
import json
import dateutil
import ics
course = ics.Calendar(Path('mytimetable_export.ics').read_text())
events = []
def parse_data(description):
type_conversion = {
'Exam/Test in Osiris': 'Exam',
'Exam/Test not in Osiris': 'Minitest',
'Lecture': 'Lecture',
'Instruction': 'Exercises',
}
type = type_conversion[re.search(
'^Type: (.*)$', description, flags=re.MULTILINE
).group(1)]
out = re.search(
'^Location\\(s\\):\n(?P<name>.*?)(?:: http:.*?)?$',
description,
flags=re.MULTILINE,
).groupdict()
out['type'] = type
return out
for original in course.events:
parsed = parse_data(original.description)
event = {
'start': str(original.begin),
'end': str(original.end),
'title': f'{parsed["type"]} @ {parsed["name"]}',
}
events.append(event)
events = sorted(events, key=(lambda event: dateutil.parser.isoparse(event['start'])))
events[-1]['title'] = events[-1]['title'].replace('Exam', 'Retake exam')
Path('src/figures/events.json').write_text(json.dumps(events))