-
Notifications
You must be signed in to change notification settings - Fork 0
/
seances2ical.py
80 lines (61 loc) · 2.21 KB
/
seances2ical.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import os
import argparse
import pandas as pd
from icalendar import Calendar, Event
from datetime import datetime
def transformDate(adate, heure):
day, month, year = map(int, adate.split("/"))
heures, minutes = map(int, heure.split("h"))
dt = datetime(year, month, day, heures, minutes)
return dt
class TeachingCal(object):
def __init__(self):
pass
def createIcal(self, filename):
cal = Calendar()
cal.add('version', '2.0')
df = pd.read_csv(filename, skiprows=[0])
for index, row in df.iterrows():
# skip lines with no date
if pd.isna(row["date"]):
continue
# skip le 2nd header si le cours est sur deux semestres
if row["date"] == "date":
continue
event = Event()
# transformer la date
date_debut = transformDate(row["date"], row["début"])
date_fin = transformDate(row["date"], row["fin"])
event.add('dtstart', date_debut)
event.add('dtend', date_fin)
# titre evenement
titre = row["code UE"]+" "+row["type"]
if not pd.isna(row["n"]):
titre += " " + str(int(row["n"]))
event["summary"] = titre
# autres détails en description
description = ""
if not pd.isna(row["salle"]):
description += "Salle : " + row["salle"]
if not pd.isna(row["sujet"]):
description += "\r\nSujet : " + row["sujet"]
if not pd.isna(row["enseignant"]):
description += "\r\nEnseignant : " + row["enseignant"]
event["description"] = description
cal.add_component(event)
return cal.to_ical()
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Generate ical calendars')
parser.add_argument(
'--csvfile',
type=str,
help='TODO')
args = parser.parse_args()
if not args.csvfile:
csvfile = "charge.csv" # default
else:
csvfile = args.csvfile
if os.path.exists(csvfile):
c = TeachingCal()
moncal = c.createIcal(csvfile)
print(moncal.decode('UTF-8'))