Greasemonkey Useraddon: Notenviewer für die HIS-QIS der HTW Dresden
Wer an der HTW Dresden ein paar Semester studiert, kenn es vielleicht: Die Notenübersicht des HIS QIS wird nach einiger Zeit extrem unübersichtlich, und neue Noten zu finden wird zunehmend schwerer.
Was als Idee von mir in einer extrem simplen Variante mal gestartet wurde, hat mein Kommilitone Thomas Rothe inzwischen zu einer halben IDE ausgeweitet =):
Eine übersichtlichere Anordnung der Noten, aufgetrennt nach Semester, farblich unterlegt für das HIS-QIS Notenabrufsystem unserer Hochschule.
Das Skript und die Installationsanweisungen findet ihr auf seiner Hochschulseite.
Wie man sich selbst einen RSS-Feed aus dem HISQIS bastelt, hab ich ja schonmal erklärt
- Gepostet am 01.November 2009
- 0 Kommentare
- Tagged Greasemonkey, HTW, Dresden
-
Möglicherweise ähnliche Posts
- Preisgünstige Fahrradwerkstatt in Dresden - Lebenshilfe e.V.
vor 5 Monaten
- QAM - Haltestellenmonitor für ÖPNV in Dresden
vor 9 Monaten- Beim nächsten mal im Einwohnermeldeamt...
vor 9 Monaten- Notenübersichts-Bot in PHP
vor etwa einem JahrNotenübersichts-Bot in PHP
Vor zwei Wochen kam mir beim Überprüfen der aktuellen Notenergebnisse die Idee in den Sinn, das Ganze zu automatisieren und als Feed zur Verfügung zu stellen, um es in meinen Feedreader mit einzubinden und so immer auf dem aktuellen Stand sein zu können ;).
Der Einfachheit halber hab ich PHP/Curl genommen, da ich kurz mal in Ruby reingeschaut hatte, mir die HTTP-Bibliothek aber nicht zweckdienlich erschien.
Teil 1: Den Quelltext der Webseite holen
Dazu mal mit Firefox und LiveHTTP-Headers-Addon schauen, was man beim Login zu alles schickt. In unserem Fall muss man danach noch einen Klick auf “Notenübersicht” machen.
Das ganze dann in cURL gießen und eine cookies.txt schreibbar bereitstellen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
$username="Meine Matrikelnummer" $passwort="Mein Passwort ;)" $ch = curl_init(); //Variablen setzen $url="https://wwwqis.htw-dresden.de/qisserver/rds?state=user&type=1&category=auth.login&startpage=portal.vm"; //$url="https://wwwqis.htw-dresden.de/qisserver/rds?state=user&type=1&category=auth.login&startpage=portal.vm"; $arrSubmit="username=$username&submit=%C2%A0Ok%C2%A0&password=$password"; $cookies="cookie.txt"; //Session Optionen setzen curl_setopt($ch, CURLOPT_URL,$url); curl_setopt ($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $arrSubmit); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Ausführen der Aktionen curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $result=curl_exec($ch); curl_close($ch);
In unserem Beispiel des HIS-QIS gibt es noch eine Art zweiter Session-ID, die ausgelesen werden, und mit übergeben werden muss:
1 2
preg_match("/asi=([^\"]*)\"/",$result,$treffer); $asi=$treffer[1];Dann der Zweite durchlauf mit der asi:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
$url="https://wwwqis.htw-dresden.de/qisserver/rds?state=htmlbesch&moduleParameter=Student&menuid=notenspiegel&asi=$asi"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt ($ch, CURLOPT_POST, 0); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); $result=curl_exec($ch); //echo curl_error($ch); //Session beenden curl_close($ch);
Damit ist der Text in der Variablen $result
Extraktion der wichtigen Zeilen mit XPathMittels Firebug schauen, wo die Prüfungsergebnisse drinstehen und die XPaths kopieren bzw. analysieren. Damit erhalten wir eine NodeList die wir ausgeben/speichern können:
1 2 3 4 5 6 7 8 9 10 11
$Doc = new DOMDocument(); $Doc->loadHTML($result); $Doc->preserveWhiteSpace = false; $Doc->normalizeDocument(); $XPath = new DOMXPath($Doc); $NodeList = $XPath->query("//tr[@bgcolor='#EFEFEF']"); foreach ($NodeList as $node) { echo $node->nodeValue; ... }Schon fast fertig, was fehlt noch?
- Die Datumswerte auslesen, nach Sekunden umwandeln um danach die Noten danach zu sortieren.
- Einfacher Caching Algorithmus à la “Wenn unsere cache-datei älter als 30 minuten ist, dann erstelle sie neu [durchlaufe den Algorithmus] und schreibe das Ergebnis in die Cache-Datei; andernfalls gib nur die cache-Datei aus”
- Ausgabe als RSS-Feed, einfach mal die Spezifikation googlen ;)
- Gepostet am 14.August 2009
- 0 Kommentare
- Tagged PHP, Bot, HTW
-
Möglicherweise ähnliche Posts
- Drupal Modulentwicklung - I - Einführung und Hello World
vor 4 Tagen
- Minibot für Erstellung eines iCals und RSS-Feeds von einer Web1.0 Site
vor 6 Monaten- Bessere PHP Shell, ähnlich wie Rubys irb
vor 7 Monaten- PHP - Die beste Wahl für's Web?
vor 9 Monaten- Greasemonkey Useraddon: Notenviewer für die HIS-QIS der HTW Dresden
vor 10 MonatenTemplate by Six Shooter Media
© 2009 Stefan Wienert - Minibot für Erstellung eines iCals und RSS-Feeds von einer Web1.0 Site
- Drupal Modulentwicklung - I - Einführung und Hello World
- QAM - Haltestellenmonitor für ÖPNV in Dresden
- Preisgünstige Fahrradwerkstatt in Dresden - Lebenshilfe e.V.