aboutsummaryrefslogtreecommitdiff
path: root/crawl/get.py
blob: 2f72ef111d7015c98d9a0361dae339cc542906c2 (plain)
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
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests
import time
import json

driver = webdriver.Chrome()
driver.get("https://melpomene.webuntis.com/WebUntis/?school=HS-Augsburg#/basic/timetablePublic")

time.sleep(5)

cookies = driver.get_cookies()

s = requests.Session()
for cookie in cookies:
    s.cookies.set(cookie['name'], cookie['value'])

myheaders = {
    "Accept": "application/json, text/plain, */*",
    "anonymous-school": "HS-Augsburg"}

myrealteachers=set();
myrooms={};
mycourses=[];

melpomeid = 14880;
shortname="FredK";
longname="FredL";

result = s.get("https://melpomene.webuntis.com/WebUntis/api/rest/view/v1/timetable/entries?start=2025-04-07&end=2025-04-12&format=3&resourceType=SUBJECT&resources=" + str(melpomeid) + "&periodTypes=&timetableType=STANDARD",
  headers=myheaders);
timetable = json.loads(result.text);
print(timetable);
days=timetable["days"];
courseteachers=set();
courserooms=set();
courseklassen=set();
courseslots=[];
for day in days:
  grids=day["gridEntries"];
  for grid in grids:
    print(grid);
    teachers=grid["position2"];
    for teacher in teachers: 
      teachername=teacher["current"]["displayName"];
      print(teachername);
      courseteachers.add(teachername);
    try:
      for room in grid["position3"]:
        roomname=room["current"]["displayName"];
        roomlongname=room["current"]["longName"];
        print(roomname);
        myrooms[roomname] = roomlongname;
        courserooms.add(roomname);
    except TypeError:
      print("Cannot handle: ");
      print(grid);
      pass;
    for klasse in grid["position1"]:
      klassenname=klasse["current"]["displayName"];
      print(klassenname);
    courseklassen.add(klassenname)
    duration=grid["duration"];
    print(duration);
    courseslots.append({"teachers": list(courseteachers),
      "rooms": list(courserooms),
      "klassen": list(courseklassen),
      "time": duration});
mycourses.append({"melpomeid": melpomeid,
    "shortname": shortname,
    "longname": longname,
    "slots": courseslots});

print(mycourses);