diff options
Diffstat (limited to 'crawl/analyze.py')
| -rw-r--r-- | crawl/analyze.py | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/crawl/analyze.py b/crawl/analyze.py new file mode 100644 index 0000000..add1484 --- /dev/null +++ b/crawl/analyze.py @@ -0,0 +1,122 @@ +import time +import json + +with open("subjects.json", 'r') as f: + subjects = json.load(f); + +with open("teachers.json", 'r') as f: + teachers=json.load(f); + +with open("timetables.json", 'r') as f: + timetables=json.load(f); + + +allteachers = teachers["teachers"]; +myteachers = []; +for teacher in allteachers: + fullname = teacher["teacher"]["displayName"]; + try: + [surname, firstname] = fullname.split(); + except ValueError: + surname = ""; + firstname = ""; + faculty = teacher["departments"][0]["shortName"] if teacher["departments"] else ""; + myteachers.append({"fullname": fullname, + "surname": surname, + "firstname": firstname, + "faculty": faculty}); + +with open("myteachers.json", 'w') as f: + json.dump(myteachers, f); + +myfaculties=[]; +allfaculties = teachers["departments"]; +for faculty in allfaculties: + shortname = faculty["shortName"]; + longname = faculty["displayName"]; + myfaculties.append({"shortname": shortname, "longname": longname}); +with open("myfaculties.json", 'w') as f: + json.dump(myfaculties, f); + + +myrealteachers=set(); +mytimetable={}; +myrooms={}; +mycourses=[]; +for course in timetables: + melpomeid = course.get("id", course.get("melpomeid")); + shortname = course["shortname"]; + longname = course["longname"]; + timetable = course["timetable"]; + days=timetable["days"]; + courseteachers=set(); + courserooms=set(); + courseklassen=set(); + courseslots=[]; + for day in days: + grids=day["gridEntries"]; + for grid in grids: + if grid["position1"]: + for klasse in grid["position1"]: + if not klasse.get("current"): + continue; + klassenname=klasse["current"]["displayName"]; + courseklassen.add(klassenname) + if grid["position2"]: + for room in grid["position2"]: + if not room.get("current"): + continue; + roomname=room["current"]["displayName"]; + roomlongname=room["current"]["longName"]; + myrooms[roomname] = roomlongname; + courserooms.add(roomname); + cteachers=grid["position3"]; + if cteachers : + for teacher in cteachers: + if not teacher.get("current"): + continue; + teachername=teacher["current"]["displayName"]; + print(teachername); + myrealteachers.add(teachername); + courseteachers.add(teachername); + duration=grid["duration"]; + courseslots.append({"teachers": list(courseteachers), + "rooms": list(courserooms), + "klassen": list(courseklassen), + "info": grid["lessonInfo"], + "time": duration}); + mycourses.append({"melpomeid": melpomeid, + "shortname": shortname, + "longname": longname, +# "timetable": timetable, + "slots": courseslots}); + +#print(mycourses); + +with open("mycourses.json", 'w') as f: + json.dump(mycourses, f); + +myrealcourses=[]; +for c in mycourses: + if len(c["slots"]) > 0 : + myrealcourses.append(c); + +with open("myrealcourses.json", 'w') as f: + json.dump(myrealcourses, f); + +myrealteachers_upper = {name.upper() for name in myrealteachers}; +myteachersincourses=[]; +for teacher in myteachers: + fullname = teacher["fullname"]; + if fullname.upper() in myrealteachers_upper : + myteachersincourses.append(teacher); + +with open("myrealteachers.json", 'w') as f: + json.dump(myteachersincourses, f); + +print("Total number of courses: " + str(len(mycourses))); +print("Courses in timetable: " + str(len(myrealcourses))); +print("Total number of teachers: " + str(len(myteachers))); +print("Teachers in timetable: " + str(len(myteachersincourses))); + + |
