Texxas EPG

Moin,
hier gibt es ja viele TV-Junkies, zu denen ich vermutlich auch gehöre, und bisher habe ich immer den Enigma2-EPG benutzt. Vor > 1Jahr bin ich auf IPTV von Waipu umgestiegen. Bisher bin ich noch nicht per IPS an den EPG gekommen also habe ich eine Alternative gesucht und gefunden. Ich habe für Texas ein kleines Script geschrieben das für „Jetzt“ und „20:15“ die wichtigsten Daten als String in IPS zur Verfügung stellt. Statt oder zusätzlich zu „20:15“ kann man auch andere Zeiten vorgeben.

Hier das Script. Einfach ausführen lassen und es wird ein Baum mit Zeiten, Sender und Inhalt erstellt.

<?PHP
$JetztID = @IPS_GetObjectIDByName("Jetzt", $_IPS['SELF']);
if ($JetztID == false){
    $JetztID = IPS_CreateCategory();                    // Kategorie anlegen
    IPS_SetName($JetztID, "Jetzt");                     // Kategorie benennen
    IPS_SetParent($JetztID, $_IPS['SELF']);             // Kategorie einsortieren unter dem Objekt
}
ErzeugeProgramm("https://texxas.de/tv/hauptsenderJetzt.xml", $JetztID);
//ErzeugeProgramm("https://texxas.de/tv/regionalsenderJetzt.xml", $JetztID);
//ErzeugeProgramm("https://texxas.de/tv/nachrichtensenderJetzt.xml", $JetztID);
//ErzeugeProgramm("https://texxas.de/tv/skyJetzt.xml", $JetztID);
//ErzeugeProgramm("https://texxas.de/tv/sportsenderJetzt.xml", $JetztID);
//ErzeugeProgramm("https://texxas.de/tv/spartensenderJetzt.xml", $JetztID);

$ID2015 = @IPS_GetObjectIDByName("20:15", $_IPS['SELF']);
if ($ID2015 == false){
    $ID2015 = IPS_CreateCategory();                    // Kategorie anlegen
    IPS_SetName($ID2015, "20:15");                     // Kategorie benennen
    IPS_SetParent($ID2015, $_IPS['SELF']);             // Kategorie einsortieren unter dem Objekt
}
//ErzeugeProgramm("https://texxas.de/tv/hauptsender.xml", $ID2015);
//ErzeugeProgramm("https://texxas.de/tv/regionalsender.xml", $ID2015);
//ErzeugeProgramm("https://texxas.de/tv/nachrichtensender.xml", $ID2015);
//ErzeugeProgramm("https://texxas.de/tv/sky.xml", $ID2015);
//ErzeugeProgramm("https://texxas.de/tv/sportsender.xml", $ID2015);
//ErzeugeProgramm("https://texxas.de/tv/spartensender.xml", $ID2015);
return;

function ErzeugeProgramm(string $url, int $ParentID){
    $xmlstring = file_get_contents($url);
    $xml = simplexml_load_string($xmlstring, "SimpleXMLElement", LIBXML_NOCDATA);
    $json = json_encode($xml);
    $Programs = json_decode($json,TRUE);

    foreach ($Programs["channel"]["item"] as $Program){
        $title = $Program["title"];
        $pos = strpos($title, ":", 0);
        $channel = substr($title, 0, $pos);
        $channel = CheckName($channel);
        $StationID = @IPS_GetObjectIDByName($channel, $ParentID);
        if ($StationID == false){
            $StationID = IPS_CreateCategory();             
        }
        if ($StationID){
            IPS_SetName($StationID, $channel);  
            IPS_SetParent($StationID, $ParentID);           
        }
        $program = substr($title, $pos + 2);
        $ProgramID = @IPS_GetObjectIDByIdent($channel, $StationID);
        if ($ProgramID == false){
            $ProgramID = IPS_CreateVariable(3);             
            IPS_SetIdent($ProgramID, $channel);
        }
        if ($ProgramID){
            IPS_SetName($ProgramID, $program);  
            IPS_SetParent($ProgramID, $StationID); 
        }
        $description = $Program["description"];
        $pos = strpos($description, '<br>', 0);
        $content = substr($description, $pos - 13, 13) . ' ' .  substr($description, $pos + 4);
        SetValue($ProgramID, $content);
    }
}

function CheckName(string $channel){

    $clean = '';
    for ($index = 0; $index < strlen($channel); $index++){
        if (ctype_alnum($channel[$index])) $clean .= $channel[$index];

    }
    return $clean;
}
?>

Ich habe hier nur die Hauptsender aktiviert. Wenn mehr gewünscht wird einfach die // am Anfang einer Zeile entfernen.

Ralf

3 „Gefällt mir“