loadHTML(file_get_contents("https://365.rtvslo.si")); $client_id = $x->getElementById("header-search-input")->getAttribute("data-client-id"); $opts = [ "http" => [ "method" => "GET", "header" => "User-Agent: " . @$_SERVER["HTTP_USER_AGENT"] . "\r\n" ] ]; $ctxt = stream_context_create($opts); $jaz = $_SERVER["REQUEST_SCHEME"] . "://" . $_SERVER["HTTP_HOST"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["DOCUMENT_URI"]; if (empty($_REQUEST["kanal"])) { $streams = json_decode(file_get_contents("http://api.rtvslo.si/ava/getLiveStreams?client_id=$client_id", false, $ctxt), true)["response"]; header("Content-Type: text/plain"); header("X-Content-Type-Options: nosniff"); echo "#EXTM3U refresh=\"3600\"\n\n\n# Kontaktiraj administratorja (prijava napake, etc):\n# email: anton@4a.si, telefon +386 64 176 345\n\n\n# V m3u datotekah kanalov RTV pošlje zadnjih 24 ur,\n# kar je več kot 60000 kosov videa oziroma pet megabajtov.\n# Če televizije ne gledate za nazaj, ampak le v živo,\n# dodajte GET parameter na koncu URLja &zadnjih=10,\n# kar pošlje le zadnjih 10 kosov televizijskega pretoka.\n# Na primer: $jaz?kanal=tv.slo1&zadnjih=10\n# Parameter lahko dodate tudi na to stran in vpisal se bo v vse kanale spodaj.\n# Primer: $jaz?zadnjih=10\n\n# S parametrom &od=2024-10-22T16:02:00\n# lahko določite začetek pretoka.\n# Če kos, ki vsebuje ta timestamp, obstaja,\n# bodo poslani le kosi od tega kosa dalje (vključno s tem kosom).\n# Uporabno za prenašanje izsekov iz pretoka.\n# Z &do=2024-10-22T16:04:00 določite končni časovni žig\n# -- poslani bodo le kosi pred in vključno s kosom,\n# ki vsebuje ta timestamp.\n\n# SEZNAM KANALOV:\n\n"; foreach($streams as $key => $value) if (strpos($key, "tv.") !== FALSE || strpos($key, "ra.") !== FALSE) { $add = ""; if (!empty($_REQUEST["zadnjih"])) $add = "&zadnjih=" . urlencode($_REQUEST["zadnjih"]); echo '#EXTINF:-1 group-title="RTVSLO",' . str_replace(",", ";", $value["title"]) . "\n$jaz?kanal=$key$add\n"; } die(); } else $kanal = $_REQUEST["kanal"]; $api = json_decode(file_get_contents("http://api.rtvslo.si/ava/getLiveStream/$kanal?client_id=$client_id", false, $ctxt), true)["response"]; $qualities = $api["mediaFiles"][0]["streamer"] . $api["mediaFiles"][0]["file"]; header("Content-Type: application/vnd.apple.mpegurl"); foreach (explode("\n", file_get_contents($qualities, false, $ctxt)) as $line) { if (substr($line, 0, 1) != "#") // last one is highest quality if (trim($line) != "") $chunklist = $line; } $chunklist_prefix = explode("/", explode("?", $qualities)[0]); array_pop($chunklist_prefix); $chunklist_prefix = implode("/", $chunklist_prefix); $chunklist_filename = explode("/", $chunklist)[1]; $chunklist_search = explode("/", $chunklist)[0]; $elementi = []; $komentarji_temp = []; $datetime_temp_unix = NULL; foreach (explode("\n", file_get_contents($chunklist_prefix . "/" . $chunklist_filename . "?" . $chunklist_search, false, $ctxt)) as $line) { if (substr($line, 0, 1) == "#") { $komentarji_temp[] = $line; if (str_starts_with($line, "#EXT-X-PROGRAM-DATE-TIME:")) $datetime_temp_unix = strtotime(explode(":", $line)[1]); } else if (trim($line) != "") { $elementi[] = ["$chunklist_prefix/$line?$chunklist_search", $komentarji_temp, $datetime_temp_unix]; $komentarji_temp = []; $datetime_temp_unix = NULL; # echo $jaz . "?kos=" . strtr(base64_encode($dir . $line), '+/=', '._-') . "\n"; } } # header("Location: https://splet.4a.si/dir/deprecrtvphp/stream_1/stream_1.m3u8"); # die(); if (empty($_REQUEST["zadnjih"])) $zadnjih = 133769420; else $zadnjih = intval($_REQUEST["zadnjih"]); /* if (empty($_REQUEST["zadnjih"])) { // keep legacy behaviour foreach ($elementi as $element) { foreach ($element[1] as $komentar) echo $komentar . "\n"; echo $element[0] . "\n"; } } else { */ foreach ($elementi[0][1] as $komentar) if (!str_starts_with($komentar, "#EXT-X-PROGRAM-DATE-TIME:") && !str_starts_with($komentar, "#EXTINF:")) echo $komentar . "\n"; array_shift($elementi); // pop first -- just comments -- from start $zadnji = array_slice($elementi, -$zadnjih); $output = TRUE; if (!empty($_REQUEST["od"])) $output = FALSE; foreach ($zadnji as $element) { if (!empty($_REQUEST["od"]) && $element[2] <= strtotime($_REQUEST["od"])) $output = TRUE; if (!empty($_REQUEST["do"]) && $element[2] > strtotime($_REQUEST["do"])) break; if (!$output) continue; foreach ($element[1] as $komentar) echo $komentar . "\n"; echo $element[0] . "\n"; } // } ?>