Webuntis api

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
toper
User
Beiträge: 74
Registriert: Freitag 13. April 2018, 14:37

Hallo zusammen.
Meine Schule benutzt jetzt seit einiger Zeit WebUntis und ich möchte das gerne mit einem Programm auslesen.
Ich habe in so etwas allerdings nicht viel Erfahrung.
Ich habe das hier gefunden:

Code: Alles auswählen

import webuntis

s = webuntis.Session(
    username='User',
    password='Password',
    server='webuntis.grupet.at:8080',
    school='Schule',
    useragent='UserAgent'
).login()

for klasse in s.klassen():
    print(klasse.name)

Ich gehe mal davon aus, dass der UserAgent der UserAgent von meinem Browser ist.

Allerdings bekomme Ich diese Fehlermeldung
Traceback (most recent call last):
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 160, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\connection.py", line 61, in create_connection
for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\socket.py", line 752, in getaddrinfo
for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 677, in urlopen
chunked=chunked,
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 381, in _make_request
self._validate_conn(conn)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 976, in _validate_conn
conn.connect()
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 308, in connect
conn = self._new_conn()
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 172, in _new_conn
self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x000002B2AA76E348>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 725, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\retry.py", line 439, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='webuntis.grupet.at', port=8080): Max retries exceeded with url: /WebUntis/jsonrpc.do?school=Gewerbliche%20Schule%20G%C3%B6ppingen (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002B2AA76E348>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\Tobias\Desktop\test.py", line 8, in <module>
useragent='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0'
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\webuntis\session.py", line 95, in login
}, use_login_repeat=False)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\webuntis\session.py", line 118, in _request
data = rpc_request(self.config, method, params or {})
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\webuntis\utils\remote.py", line 88, in rpc_request
http_session
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\webuntis\utils\remote.py", line 153, in _send_request
r = http_session.post(url, data=json.dumps(data), headers=headers)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 578, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='webuntis.grupet.at', port=8080): Max retries exceeded with url: /WebUntis/jsonrpc.do?school=Gewerbliche%20Schule%20G%C3%B6ppingen (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002B2AA76E348>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
Vielleicht weiß ja jemand wie das Funktioniert oder hat eine Alternative.
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

die Server-URL stimmt nicht (mehr?). Die steht zwar so in der Doku, aber ist scheinbar nicht mehr existent.

Hast du es schon mal mit den korrekten Zugangsdaten für deine Schule probiert?

Gruß, noisefloor
toper
User
Beiträge: 74
Registriert: Freitag 13. April 2018, 14:37

Die Zugangsdaten habe ich getestet.
Ich hab jetzt mal stattdessen webuntis.com:8080 eingegeben. Jetzt versucht er etwa 20 Sekunden sich zu Verbinden, dann kommt aber diese Fehlermeldung:
Traceback (most recent call last):
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 160, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\connection.py", line 84, in create_connection
raise err
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\connection.py", line 74, in create_connection
sock.connect(sa)
TimeoutError: [WinError 10060] Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 677, in urlopen
chunked=chunked,
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 381, in _make_request
self._validate_conn(conn)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 976, in _validate_conn
conn.connect()
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 308, in connect
conn = self._new_conn()
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connection.py", line 172, in _new_conn
self, "Failed to establish a new connection: %s" % e
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x0000024054822388>: Failed to establish a new connection: [WinError 10060] Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 449, in send
timeout=timeout
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\connectionpool.py", line 725, in urlopen
method, url, error=e, _pool=self, _stacktrace=sys.exc_info()[2]
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\urllib3\util\retry.py", line 439, in increment
raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='webuntis.com', port=8080): Max retries exceeded with url: /WebUntis/jsonrpc.do?school=Gewerbliche%20Schule%20G%C3%B6ppingen (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000024054822388>: Failed to establish a new connection: [WinError 10060] Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "C:\Users\Tobias\Desktop\test.py", line 8, in <module>
useragent='Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0'
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\webuntis\session.py", line 95, in login
}, use_login_repeat=False)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\webuntis\session.py", line 118, in _request
data = rpc_request(self.config, method, params or {})
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\webuntis\utils\remote.py", line 88, in rpc_request
http_session
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\webuntis\utils\remote.py", line 153, in _send_request
r = http_session.post(url, data=json.dumps(data), headers=headers)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 578, in post
return self.request('POST', url, data=data, json=json, **kwargs)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 530, in request
resp = self.send(prep, **send_kwargs)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\sessions.py", line 643, in send
r = adapter.send(request, **kwargs)
File "C:\Users\Tobias\AppData\Local\Programs\Python\Python37\lib\site-packages\requests\adapters.py", line 516, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='webuntis.com', port=8080): Max retries exceeded with url: /WebUntis/jsonrpc.do?school=Gewerbliche%20Schule%20G%C3%B6ppingen (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x0000024054822388>: Failed to establish a new connection: [WinError 10060] Ein Verbindungsversuch ist fehlgeschlagen, da die Gegenstelle nach einer bestimmten Zeitspanne nicht richtig reagiert hat, oder die hergestellte Verbindung war fehlerhaft, da der verbundene Host nicht reagiert hat'))
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Die Zugangsdaten habe ich getestet.
Heißt was genau? Also welche Zugangsdaten hast du getestet? Die von deiner Schule?

Gruß, noisefloor
toper
User
Beiträge: 74
Registriert: Freitag 13. April 2018, 14:37

Ja, ich habe meine Anmeldedaten von meiner Schule eingegeben. Die funktionieren
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

gut. Dann ist doch alles in Butter, oder?

Gruß, noisefloor
toper
User
Beiträge: 74
Registriert: Freitag 13. April 2018, 14:37

Nein, es kommt ja immer noch die Fehlermeldung, dass der Host nicht reagiert.
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

??? - du hast doch einen Post vorher gesagt, dass die Zugangsdaten von deiner Schule funktionieren?! Was denn nun?

Gruß, noisefloor
toper
User
Beiträge: 74
Registriert: Freitag 13. April 2018, 14:37

Wenn ich mich selber anmelde funktionieren sie. Aber das Programm kann sich nicht anmelden
Honn
User
Beiträge: 2
Registriert: Montag 2. November 2020, 17:31

Ich hatte das gleich Problem. Ich habe für Server "klio.webuntis.com" eingesetzt und das hat es für mich gelöst. Der Rest sollte klar sein
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

ich denke, man muss halt den Server nehmen, den die Schule nutzt, bei der man sich einloggen will bzw. man den Account hat. Bei mir für K2 wäre das `https://thalia.webuntis.com´. Die URL sieht man ja, wenn man sich "konventionell" über die Seite einloggen will.

Gruß, noisefloor
Honn
User
Beiträge: 2
Registriert: Montag 2. November 2020, 17:31

Hallo, jetzt hätte ich selbst mal eine Frage:

Ich habe mir zwei Funktionen in ein script geschrieben, die verschiedene Formen meines Stundenplans ausgeben. In einem anderen script gebe ich die Funktionen aus. Jedoch funktioniert dies natürlich nur, wenn ich die ".logout()" - Funktion am Ende entferne. Wie problematisch ist das, bzw. welche Probleme entstehen dadurch?
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Honn: Die Frage macht nicht so wirklich Sinn. Man führt in einem Skript keine Funktion in einem anderen Skript aus. Wenn man ein Modul importiert und daraus Funktionen verwendet, dann ist das *ein* Skript/Programm. Und warum sollte etwas nicht funktionieren wenn man am Ende einen `logout()`-Aufruf hat? Sofern der tatsächlich am Ende passiert, also nachdem man alles gemacht hat wofür man angemeldet ist.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
noisefloor
User
Beiträge: 4194
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

kannst du das Skript vielleicht mal posten? Und natürlich daran denken, _nicht_ deine tatsächlichen Login-Daten hier zu posten, sondern die aus dem Skript vorher zu entfernen.

Gruß, noisefloor
Antworten