Das Programm sendet eine Nachricht per Telegram wenn sich etwas am Stundenplan ändert.
Es ist auf jede Schule anwendbar die keine Anmeldedaten benötigt, mit einer kleinen Änderung sollte es allerdings auch bei allen anderen Schulen klappen.
Im Beispielcode wird der Stundenplan der HI-17C des Heinz-Nixdorf-Berufskollegs unter mese.webuntis.com überprüft.
Download: untis.zip 21.02.18 23:16 Uhr
#m | h | dom | mon | dow | command |
---|---|---|---|---|---|
* | 6-15 | * | * | 1-5 | wget -O /dev/null -q https://firatcan.de/untis/ |
0 | * | * | * | * | wget -O /dev/null -q https://firatcan.de/untis/ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | <?php $schoolname = "_bml4ZG9yXXXXXXXXXXNlbg=="; // Schulname - Zu finden in den Cookies $datum = date('Y-m-d', strtotime(' + 1 days')); // Aufbau des Datums für den iCal-Kalender, Plus 1 Tag damit am Sonntag die Nachricht für den neuen Stundenplan am Montag kommt. $url = "https://mese.webuntis.com/WebUntis/Ical.do?elemType=1&elemId=XXX&rpt_sd=". $datum; // Die URL zum Kalender, elemId ersetzen setlocale(LC_TIME, array('de_DE.UTF-8','de_DE@euro','de_DE','german')); // Setzen der Sprache und Zeitzone (optional) // Cookie setzen $opts = array( 'http'=>array( 'method'=>"GET", 'header'=>"Cookie: schoolname=".$schoolname."" ) ); $context = stream_context_create($opts); // Datei mit dem oben gesetzen Cookie öffnen (erforderlich, wird ohne Cookie nicht erlaubt) $file = file_get_contents($url, false, $context); if ($file === false) { echo "Fehler"; die(); } // Datei als aktuell.ics speichern file_put_contents('aktuell.ics', $file); /* ICS_Parser (nur mit kenntnis verändern) @category Example @package Ics-parser @author Martin Thoma < [email protected] > @license http://www.opensource.org/licenses/mit-license.php MIT License @version SVN: < svn_id > @link http://code.google.com/p/ics-parser/ @example $ical = new ical('MyCal.ics'); print_r( $ical->get_event_array() ); */ ob_start(); // Buffering starten require 'class.iCalReader.php'; $ical = new ICal("aktuell.ics"); $events = $ical->events(); asort($events); //Output Schleife pro $event foreach ($events as $event) { // DTSTART und DTEND zu einem normalen Datum machen $dtstart = strtotime($event['DTSTART']); $dtend = strtotime($event['DTEND']); echo "Fach: *".$event['SUMMARY']."*\n"; echo "Start: ". strftime("%A, %d. %B %Y %H:%M Uhr", $dtstart)."\n"; echo "Ende: ". strftime("%A, %d. %B %Y %H:%M Uhr", $dtend)."\n"; echo "Lehrer: ".$event['DESCRIPTION']."\n"; echo "Raum: *".$event['LOCATION']."*\n"; echo "\n\n"; } $aktuell = file_get_contents("aktuell.html"); // Stundenplan vergleichen if ($aktuell == ob_get_contents()) { // Wenn die aktuelle Datei == die alte Datei ist.. echo "Keine Neuerung seit: ".date("l, d.m.Y H:i:s",filemtime("aktuell.html"))." Uhr."; }else { // Bei Neuerung.. $ob_get_contents = ob_get_contents(); file_put_contents('aktuell.html', $ob_get_contents); // Bei Neuerung aktuell.html mit neuen Stundenplan Daten erstellen echo "Neuerung "; /* Telegram Code */ function sendMessage($chatID, $messaggio, $token) { echo "Nachricht gesendet an " . $chatID . "\n"; // Info die auf der Website ausgegeben wird.(optional) $url = "https://api.telegram.org/" . $token . "/sendMessage?parse_mode=markdown&chat_id=" . $chatID; $url = $url . "&text=" . urlencode($messaggio); $ch = curl_init(); $optArray = array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true ); curl_setopt_array($ch, $optArray); $result = curl_exec($ch); curl_close($ch); } $token = "bot123456789:XXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXX"; // Telegram BOT Token $ch1 = curl_init("https://api.telegram.org/$token/setWebhook"); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, 1); curl_exec($ch1); $chatID = "123456789"; sendMessage($chatID,"Vorher:\n$aktuell",$token); // Funktion der Nachricht sendMessage($chatID,"Nachher:\n$ob_get_contents",$token); // Funktion der Nachricht sendMessage($chatID,'Irgendwas hat sich geändert bei Untis.',$token); } ?> |