Eine Python API für das Lehrveranstaltungs- und Prüfungsinformationssystem (LPIS) der WU Wien "LPIS". Die API verwendet python.mechanize
für das emulieren eines Webbrowser, zum Navigieren und Absenden von (Form) Requests
Diese API ist der Kern der Flips Anwendung. Siehe auch: alexanderhofstaetter/flips
Siehe auch die import
Anweisungen in der Definition der Klasse WuLpisApi
.
pip install python-dateutil mechanize beautifulsoup4 argparse lxml
Entweder über die parameter --username
und --password
die Zugangsdaten übermitteln, oder alternativ ein Credentials File mit --credfile
angeben.
Das credfile muss folgendes Format aufweisen.
username=_USER_
password=_PASS_
python api.py --username=_USER_ --password=_PASS_ --action=_ACTION_
Folgende Methoden stehen zur Auswahl. Diese können mit dem Parameter --action
angegeben werden. Alternativ kann auch direkt die Klasse importiert werden und eine neuees Objekt instanziert werden. Die Ergebnisse eines Aufrufs können entweder vom Rückgabewert der Methode, oder aus der Variable data abgefragt werden.
api = WuLpisApi(username, password)
api.infos()
print json.dumps(api.getResults())
print json.dumps(api.data)
Liefert alle vorhanden Daten zu Studienplanpunkten, möglichen und durchgeführten Anmeldungen und Infos zu den untergeordneten Lehrveranstaltungen
{
"data": {
"pp": {
"121328": {
"attempts": "0",
"attempts_max": "5",
"depth": 3,
"id": "121328",
"lv_status": "PI 1567 Langer H. · Wagner D. (Anmeldung 03.09.2018 15:00)",
"lv_url": "DLVO?ASPP=125001_123456;SPP=124328;F=;A=5;SH=123456;R=277879",
"lvs": {
"": {
"capacity": "50",
"date_end": "09.10.2018 23:59",
"free": "0",
"id": "",
"name": "Soziale Kompetenz",
"prof": "Langer H. · Wagner D.",
"registerd_at": "03.09.2018 15:00",
"semester": "WS 2018",
"status": "Anmeldung",
"waitlist": "16"
},
"1568": {
"capacity": "50",
"date_end": "11.09.2018 23:59",
"free": "0",
"id": "1568",
"internal_id": "405890",
"name": "Soziale Kompetenz",
"prof": "Langer H. · Müllauer-Hager B.",
"semester": "WS 2018",
"status": "Anmeldung nicht möglich",
"waitlist": "14"
},
}
}
}
}
}
Führt automatisch eine Anmeldung zu einer PI/LV durch. Hierbei wird genau 1 Sekunde vor Beginn der Request gestartet um optimale Chance auf einen LV Platz zu sichern.
Vor dem Start der Registrierung sollte die lokale Zeit mit dem Zeitserver der WU (timeserver.wu.ac.at
) synchronisiert werden.
Dem Aufruf müssen noch die Parametr -lv
und -pp
für Lehrveranstaltung und Planpunkt hinzugefügt werden. Mit dem Parameter -lv2
kann eine alternative LV Nummer angeben werden. Die Anmeldung für diese wird durchgeführt, falls für die 1. LV keine Plätze mehr frei sind, für die 2. LV aber schon. Sind beide voll wird ein Wartelisteneintrag für die 1. LV durchgeführt.
python api.py -c=creds.txt -a=registration -pp=124216 -lv=1094 -lv2=1097
init time: 2018-09-20 14:58:35.912778
logging in ...
waiting: 79.58 seconds (1.33 minutes)
waiting till: 1537448398.8 (20.09.2018 14:59:58)
triggertime: 1537448398.8
final open time start: 2018-09-20 14:59:58.802870
start request 2018-09-20 14:59:58.802923
parsing done 2018-09-20 15:00:00.364986
registration is not (yet) possibe, waiting ...
reloading page and waiting for form to be submittable
start request 2018-09-20 15:00:00.365017
final open time end: 2018-09-20 15:00:03.709196
registration is possible
end time: 2018-09-20 15:00:03.730826
submitting registration form
Die Anmeldung zur Veranstaltung 1094 wurde durchgeführt.
Frei: 19 / 25
Copyright (c) 2018-2019 Alexander Hofstätter - Released under the MIT license.