Kimble Skrevet 13. mai 2008 Forfatter Del Skrevet 13. mai 2008 Sånn.. lovte å oppdatere sjekkeren til å fungere med endringene i Studweb den siste tiden. Det var heldigvis ikke rare endringene som skulle til.. Det er lagt til en privat variabel i Studwebklassen som må settes: private $shortName = "HiST"; Dere finner koden for deres kode bakerst i lenken dere bruker på forsiden av studweb.no. F.eks: https://www.studweb.no/as/WebObjects/studentweb2?inst=HiST Lenke til kommentar
Kimble Skrevet 13. mai 2008 Forfatter Del Skrevet 13. mai 2008 Btw.. Lykke til med eksamen alle sammen! :-) Lenke til kommentar
ZoRaC Skrevet 15. mai 2008 Del Skrevet 15. mai 2008 Bah, typisk! Har satt på at jeg skal få mail ved nye innlegg i denne tråden, men det har jeg ikke fått! Så nå har jeg også rettet opp scriptet og skulle hit for å legge det ut... Er du sikker på at den ikke finner ut at du allerede har fått karakter i faget hvis du har fått f.eks godkjent øvinger i samme fag (ser du sjekker bare på fagnavnet, tror jeg?)? Legger nå ut min versjon uansett - den viser også hva du har fått karakter i (øving, eksamen, osv): <?php header('Content-Type: text/html; charset=utf-8'); // Studwebsjekker av kim (krøllalfa) bprog dott no echo "<pre>"; // Sjekker tid pÃ¥ Ã¥ret echo " - Sjekker mÃ¥ned.\n"; if ((date("n") == 5) || (date("n") == 6) || (date("n") == 12) || (date("n") == 1)) { echo " - Det er enten januar, mai, juni eller desember - fortsetter...\n"; // Sjekker tid pÃ¥ døgnet, siden karakterer bare kommer i arbeidstiden echo " - Sjekker tid pÃ¥ døgnet.\n"; if (date("G") >= 7 && date("G") <= 19) { echo " - Det er dagtid - fortsetter... \n"; } else { echo " - Det er ikke dagtid - avbryter...\n"; exit; } } else { echo " - Det er ikke januar, mai, juni eller desember - avbryter...\n"; exit; } $path = "/path/til/Studwebsjekker/"; require($path.'HTMLFetcher.php'); require($path.'sendSMS.php'); try { // Første argumentet er bane til en skrivbar fil der eksamensresultatene lagres.. // $sw = new Studweb("/tmp/studwebsjekker.txt", "persnr", "pin", "mail", "mobil"); $sw->start(); } catch (Exception $e) { echo "\n".'--- Unntak ---' . "\n"; echo $e->getMessage() ."\n\n"; } class Studweb { // -- Start config -- // private $linkAdr = "/as/WebObjects/studentweb2?inst=HiST"; // Sett inn passordet hos ung1881.no her private $ungUsername = "user"; private $ungPassword = "pass"; // Bane til skrivbar mappe for cookies private $cookiePath = "/tmp/"; // -- Slutt config -- // private $path; private $pnr; private $pin; private $mail; private $mobil; private $separator = "<--separator-->"; private $oldData = array(); public function __construct($path, $pnr, $pin, $mail, $mobil) { $this->path = $path; $this->pin = $pin; $this->pnr = $pnr; $this->mail = $mail; $this->mobil = $mobil; $lines = file($this->path); if (isset($lines) && count($lines) > 0) { $this->oldData = $lines; //foreach($lines as $line) { //$parts = split($this->separator, $line); //$this->oldData[] = array("eksamen" => $parts[0], "hva" => $parts[1], "karakter" => $parts[2]); //} } } public function start() { try { echo " - Initierer script.\n"; $fetcher = new HTMLFetcher("https://www.studweb.no"); $fetcher->setCookieFile($this->cookiePath); // Fetch the first page echo " - Går til ".$this->linkAdr.".\n"; $loginpage = $fetcher->fetchPage($this->linkAdr); // $loginpage = $startpage->pushLinkNamed($this->linkName); // Fetch the login page echo " - Initierer loginform.\n"; $conditions = new HTMLConditions("form"); $conditions->needAttribute("action", "/as/WebObjects/studentweb2.woa/wa/login"); $conditions->needAttribute("name", "fnrForm"); // Get and fill out the correct form $loginform = $loginpage->getForm($conditions); $loginform->setFieldValue("fodselsnr", $this->pnr); $loginform->setFieldValue("pinkode", $this->pin); $loginform->removeField("pinmail"); echo " > Sender loginform.\n"; $infopage = $loginform->submit(); // Fetch the "innsyn" page echo " < Laster innsyn siden.\n"; $innsynpage = $infopage->pushLinkNamed(" Innsyn"); // Fetch the wanted page echo " < Laster siden med eksamensresultatene.\n"; $karakterside = $innsynpage->pushLinkNamed(" Resultater"); echo " - Henter ut karakterdata.\n"; $htmlconditions = new HTMLConditions("table"); $htmlconditions->needAttribute("width", "95%"); $htmlconditions->needAttribute("cellspacing", "2"); $htmlconditions->needAttribute("cellpadding", "2"); $htmlconditions->needAttribute("border", "0"); $tableconditions = new HTMLTableConditions(); $tableconditions->setNumberOfCols(10); $table = $karakterside->getTable($htmlconditions, $tableconditions); echo " - Ser etter nye resultater.\n"; $tab = $table->getTableRows(); $filedata = ''; $nyttRes = false; foreach ($tab as $row) { if (count($row) < 8) continue; if (!empty($row["Emnenavn"]["text"])) { $eksamen = $row["Emnenavn"]["text"]; } if (!empty($row["Emnenavn"]["text"])) { $hva = "sluttkarakter"; } else { $hva = strtolower($row["Vurdering"]["text"]); } $karakter = $row["Resultat"]["text"]; $thisFileData = $eksamen . $this->separator . $hva . $this->separator . $karakter . "\n"; $filedata .= $thisFileData; // Sjekker om det er et nytt resultat $ny = true; if (in_array($thisFileData, $this->oldData)) { $ny = false; $break; } if ($ny) { echo " * Nytt eksamensresultat! $karakter på $hva i $eksamen\n"; echo " > Mailer resultatene til ".$this->mail.".\n"; $meldingMail = "Du fikk en $karakter på $hva i faget $eksamen!\n - Studwebsjekkeren!"; $meldingSMS = "Du fikk en $karakter i faget $eksamen!\n - Studwebsjekkeren!"; mail($this->mail, "Karakter i ".$eksamen."!", $meldingMail, "From: Studweb-sjekker <[email protected]>"); $nyttRes = true; echo " > Sender sms til ".$this->mobil."\n"; $sms = new SMSsender($this->ungUsername, $this->ungPassword, $this->cookiePath); $smsres = $sms->sendSMS($this->mobil, $meldingSMS); echo ($smsres) ? " + Melding sendt\n" : " ! Kunne ikke sende SMS: " . var_dump($sms->hentSessionLogg()) . "\n"; } } if ($nyttRes) { echo " > Skriver nye resultat til fil.\n"; $fp = fopen($this->path, "w"); $res = fwrite($fp, $filedata); fclose($fp); echo ($res) ? " - Data skrevet til fil.\n" : " x Kunne ikke skrive data til fil!!\n"; } else { echo " - Ingen nye karakterdata.\n"; } echo " - Logger ut \n"; $infopage->pushLinkNamed(" Logg ut"); echo "Bye!\n</pre>"; } catch (Exception $e) { if (isset($innsynpage)) { echo " - Feil oppstod, logger ut \n"; $infopage->pushLinkNamed(" Logg ut"); } echo "\n".'--- Unntak ---' . "\n"; //echo $e; echo $e->getMessage() ."\n\n"; } } } ?> Lenke til kommentar
Kimble Skrevet 15. mai 2008 Forfatter Del Skrevet 15. mai 2008 (endret) Er du sikker på at den ikke finner ut at du allerede har fått karakter i faget hvis du har fått f.eks godkjent øvinger i samme fag (ser du sjekker bare på fagnavnet, tror jeg?)? Godt mulig det er noe der.. Oppdatering: Ser ut som mer fornuftig formatering av det. En annen bivirkning av måten jeg har lagret det på er at den ikke oppdager at "nye obligatoriske øvinger" har blitt lagt til.. Uten at det egentlig er interessant. Endret 15. mai 2008 av Kimble Lenke til kommentar
ZoRaC Skrevet 6. juni 2008 Del Skrevet 6. juni 2008 Har funnet en bug! Fikk ikke varsel om kjemi-karakteren - måtte nemlig trykke på "alle vurderinger" for å få frem den karakteren.... Lenke til kommentar
SpecialForce Skrevet 27. april 2009 Del Skrevet 27. april 2009 Denne skal i mine inlegg Lenke til kommentar
8086 Skrevet 4. januar 2015 Del Skrevet 4. januar 2015 (endret) Og fem år senere ... om noen fremdeles er interessert i bli varslet automatisk om karakterene sine er det altså fremdeles mulig. Jeg har også laget et skript, vel vitende om Sindre Froyns enkle Python script, men uvitende om alle de andre variantene som jeg fant i kveld (i hvert fall tre forskjellige i 2008/2009!). Tenkte at noe litt mer brukervennlig, testet, og "polert" enn det jeg hadde sett kunne være på sin plass, men Tobias V Langhoff pythonskript er både mer mer robust og har flere nyttefunksjoner. Men ingen av disse (inkl. mitt) - heller ikke php-skriptet i denne tråden - er perfekte eller har alle funksjoner de andre har. Hardkoding av strenger, manglende tester og dokumentasjon, etc Nå er i hvert fall både mitt og Tobias' skript på GitHub, så det skal være enkelt å bidra med forbedringer og rettinger uten lenkeråte! Mangler i mitt skript Logikk for å funke på tvers av institusjonene (som i phpskriptet). Et bedre alternativ enn tekstparsing på nøkkelord for å finne lenkene hadde også vært fint. Brekker for lett når institusjonene endrer tekstene. SMS-forsendelse via Netcom og Telenors (gratis) tjenester Daemonisering (finnes i Tobias skript) Konfigurasjon av kommersielle sms-gatewayer Endret 4. januar 2015 av 8086 2 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå