summaryrefslogtreecommitdiffstats
path: root/skripti/t2izpadi.php
blob: 9ab3394b1cc6667e5c5ad866f776e5408e2f1429 (plain) (blame)
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
#!/usr/bin/php
<?php
$hrstart = hrtime(TRUE);
if (!empty($_REQUEST["src"])) {
	header("Content-Type: text/plain");
	die(file_get_contents($_SERVER["SCRIPT_FILENAME"]));
}
$d = file_get_contents("https://www.t-2.net/delovanje-sistema");
$x = new DOMDocument();
$x->loadHTML($d);
$izpadi = [];
foreach ($x->getElementsByTagName("div") as $div) {
	if ($div->getAttribute("class") == "system-msg-single") {
		$naslov = $div->getElementsByTagName("h2")[0]->nodeValue;
		$kraj = NULL;
		$besedilo = "";
		foreach ($div->getElementsByTagName("p") as $p) {
			if ($p->getAttribute("class") == "system-msg-kraj") {
				$kraj = $p->nodeValue;
			} else {
				if ($besedilo && trim($p->nodeValue))
					$besedilo .= PHP_EOL;
				$besedilo .= trim($p->nodeValue);
			}
		}
		if (explode(": ", $kraj)[0] == "Kraj")
			$kraj = explode(": ", $kraj)[1];
		$kraji = explode(", ", $kraj);
		$napovedan = NULL;
		if (str_contains(strtolower($naslov), "napovedan"))
			$napovedan = TRUE;
		if (str_contains(strtolower($naslov), "nenapovedan"))
			$napovedan = FALSE;
		$od = explode(" do ", explode(" od ", $naslov)[1])[0];
		$do = explode(" do ", $naslov)[1];
		$od = DateTimeImmutable::createFromFormat("d. m. Y H:i", $od, new DateTimeZone("Europe/Ljubljana"));
		$do = DateTimeImmutable::createFromFormat("d. m. Y H:i", $do, new DateTimeZone("Europe/Ljubljana"));
		$izpadi[] = ["napovedan" => $napovedan, "naslov" => $naslov, "kraji" => $kraji, "kraj" => $kraj, "besedilo" => $besedilo, "od" => $od->format("c"), "do" => $do->format("c"), "odunix" => intval($od->format("U")), "dounix" => intval($do->format("U")), "hash" => hash("sha256", hash("sha256", $naslov, TRUE) . hash("sha256", $kraj, TRUE) . hash("sha256", $besedilo, TRUE), FALSE)];
	}
}
$db = new PDO("sqlite:t2izpadi.sqlite3", null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
if (!$db) {
	http_response_code(503);
	error_log("Ne morem odpreti podatnovne zbirke!");
	exit(1);
}
$db->query("create table if not exists izpadi (hash TEXT PRIMARY KEY UNIQUE NOT NULL, napovedan INTEGER, naslov TEXT NOT NULL, od TEXT NOT NULL, do TEXT NOT NULL, kraj TEXT, besedilo TEXT NOT NULL, first default CURRENT_TIMESTAMP, last default CURRENT_TIMESTAMP)");
$db->query("create table if not exists poizvedbe (datum default CURRENT_TIMESTAMP, objavljenih INTEGER NOT NULL, zakasnitev INTEGER NOT NULL)");
$stmt = $db->prepare("insert into izpadi (hash, napovedan, naslov, od, do, kraj, besedilo) values (:hash, :napovedan, :naslov, :od, :do, :kraj, :besedilo) ON CONFLICT(hash) DO UPDATE SET last=CURRENT_TIMESTAMP");
foreach ($izpadi as $izpad) {
	$hash = hex2bin($izpad["hash"]);
	$stmt->bindParam(":hash", $hash);
	$stmt->bindParam(":napovedan", $izpad["napovedan"]);
	$stmt->bindParam(":naslov", $izpad["naslov"]);
	$stmt->bindParam(":od", $izpad["od"]);
	$stmt->bindParam(":do", $izpad["do"]);
	$stmt->bindParam(":kraj", $izpad["kraj"]);
	$stmt->bindParam(":besedilo", $izpad["besedilo"]);
	$stmt->execute();
}
$db->query("insert into poizvedbe (datum, objavljenih, zakasnitev) VALUES (CURRENT_TIMESTAMP, " . sizeof($izpadi) . ", " . hrtime(TRUE)-$hrstart . ")");