aboutsummaryrefslogtreecommitdiff
path: root/crawl/get.py
diff options
context:
space:
mode:
authorFriedrich Beckmann <friedrich.beckmann@tha.de>2026-03-19 16:23:55 +0100
committerFriedrich Beckmann <friedrich.beckmann@tha.de>2026-03-19 16:23:55 +0100
commitba2d143a8f0328d61294e84d46c4ed55ff10421e (patch)
treedf7d68dcba756d86351ec0287897b8a14dee79b9 /crawl/get.py
parent12a87277041c82edcec46b4f05e35abac632d271 (diff)
update crawler to retrieve data from webuntis
Diffstat (limited to 'crawl/get.py')
-rw-r--r--crawl/get.py75
1 files changed, 75 insertions, 0 deletions
diff --git a/crawl/get.py b/crawl/get.py
new file mode 100644
index 0000000..2f72ef1
--- /dev/null
+++ b/crawl/get.py
@@ -0,0 +1,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);
+