Atom 1.0 RSS als Popup WebFront ausgeben

Hallo Rainer,

abermals Dank für Deine Antwort!:slight_smile:
Ich hatte mir die „Original-Skripte“ von Obicom auf meine Bedürfnisse angepasst und dort diverse kleiner Änderungen durchgeführt.

Ich hatte dann bei Dir geschaut und versucht es dann dahingehend zu erweitern, dass auch die Bildchen mit erscheinen (so ein bißchen bunt steht dem IPS-Webfront hier und dort mal ganz gut;)).

Mein (fehlendes) Wissen - im Zusammenhang mit dem möglicherweise falschen Ansatz von mir - hat dann wohl zu dem Mißerfolg geführt…:wink:

Wie auch immer: Ich werde Dein „Skript-Rohling“ mal ausprobieren (und ihn dann ggf. meinen Wünschen anpassen)…

Joachim

Hallo,

habe gerade das Script von Rainer ausprobiert und es gefällt mir super.

Was ich aber noch gerne machen würde:

Nur bestimmte Sender anzeigen.
Habt Ihr dazu eine Idee?

Jörg

Hallo Jörg,

so z.B.

$simpleXMLElement = simplexml_load_file("http://www.tvmovie.de/rss/tv2015.xml"); // URL des RSS Feeds

$senderAnzahl = 15; // Anzahl der anzuzeigenden Sender

$anzeigen = array("ARD", "ZDF", "RTL"); // anzuzeigende Sender

// Datenausgabe
for($i=0; $i<$senderAnzahl; $i++)
{
    $item = $simpleXMLElement->channel->item;
    $item = xmlToArray($item[$i]);
    $sender = explode("-", $item['title']);
    $sender = trim(substr($sender[0], 5));
    if(in_array($sender, $anzeigen))
    {
         $titel = "<b style=color:#C00000;>".$item['title']."</b>"; // Textfarbe anpassen
         $beschreibung = "<small>".$item['description']."</small>";
         $text = $titel."<br />".$beschreibung."<br />";
         $text = utf8_decode($text);
         echo "<table width='980px'>";
     
         if(array_key_exists('enclosure', $item))
         {
             $image = $item['enclosure']['@attributes']['url'];
            echo "<tr>";
            echo "<td width='auto'height='80px'><div><img src=$image alt='not Found'></div></td>";
            echo "<td width='980px'><div style='text-align:left; margin-left:10px;'>$text</div></td>";
            echo "</tr>
";
        }
        else
        {
            echo "<tr>";
            echo "<td width='980px'><div style='text-align:left; margin-left:95px;'>$text</div></td>";
            echo "</tr>
";
        }
        echo "</table>
";
    }
}


function xmlToArray($data)
{
    if(is_object($data))
    {
        $data = get_object_vars($data);
    }
      return (is_array($data)) ? array_map(__FUNCTION__,$data) : $data;
}

in $anzeigen kannst Du deine anzuzeigenden Sender eintragen.

Hallo Ralf,

könntest Du das in dein Script einbauen?
Ich versuche mich gerade selbst an deinem Script komme aber nicht weiter.

Jörg

Habs geschafft, hier das Script von Ralf mit der Erweiterung von Rainer

<?
// ID auf eine String Variable setzen
$id = 32682 /*[TVProg\TVProg]*/;

$simpleXMLElement = simplexml_load_file('http://www.tvmovie.de/rss/tv2015.xml'); // URL des RSS Feeds
//$simpleXMLElement = simplexml_load_file('http://www.tvmovie.de/rss/tvjetzt.xml'); // URL des RSS Feeds
$senderAnzahl = 6; // Anzahl der anzuzeigenden Sender
$rss_feed = "";
$anzeigen = array("ARD", "ZDF", "RTL"); // anzuzeigende Sender

// Datenausgabe
for($i=0; $i<$senderAnzahl; $i++)
{
   $item = $simpleXMLElement->channel->item;
   $item = xmlToArray($item[$i]);
   $titel = $item['title'];
   $beschreibung = $item['description'];
   $text = "<strong>".strip_tags($titel)."</strong><br/>".strip_tags($beschreibung)."<br />";
   $text = formatText($text);
   $searchArray = $item;
   $sender = explode("-", $item['title']);
   $sender = trim(substr($sender[0], 5));
   
   if(in_array($sender, $anzeigen))
	{
   
   	if(array_key_exists('enclosure', $searchArray))
   	{
      	$image = $item['enclosure']['@attributes']['url'];
      	$rss_feed .= '<tr style="vertical-align:top;">';
      	$rss_feed .= '<td width="auto" height="90px"><div align="left"><img src="'.$image.'" alt="not Found"></div></td>';
      	$rss_feed .= '<td width="auto"><div align="left">'.$text.'</div></td>';
      	$rss_feed .= '</tr>';
   	}
   	else
   	{
      	$rss_feed .= '<tr>';
      	$rss_feed .= '<td width="auto" height="90px"><div align="left"> </div></td>';
      	$rss_feed .= '<td width="auto"><div align="left">'.$text.'</div></td>';
      	$rss_feed .= '</tr>';
	   }
	}

$browser='
<html>
<head>
<style type="text/css" media="screen">
body  {  background-color:#F9F1C9;
            font-family: Arial;
         margin:0;
         padding:10px 5px 0px 5px;
         }

div {    margin:0;
         padding:0px 0px 0px 0px;
         }
</style>
</head>
<body scroll="no"><table width="auto" style="font-size: 14px">'
.$rss_feed.
'</table>
</body>
</html>';

SetValueString($id, $browser);

	}

function xmlToArray($data)
{
    if (is_object($data))
    {
        $data = get_object_vars($data);
    }
      return (is_array($data)) ? array_map(__FUNCTION__,$data) : $data;
}

// Textformatierung
function formatText($text)
{
    $text = html_entity_decode($text);
    $text = str_replace("ö", "ö", $text);
    $text = str_replace("Ãœ", "Ü", $text);
    $text = str_replace("ü", "ü", $text);
    $text = str_replace("ä", "ä", $text);
    $text = str_replace("ß", "ß", $text);
    $text = str_replace("&ndash;", "-", $text);
    $text = str_replace('&#039;', "`", $text);
    $text = str_replace("&", "&", $text);
    $text = str_replace("Ö", "Ö", $text);
    $text = str_replace("„", "\"", $text);
    $text = str_replace("“", "\"", $text);
    $text = str_replace("–", "-", $text);
    $text = str_replace("„", "\"", $text);
    $text = str_replace("“", "\"", $text);
    $text = str_replace("„", "\"", $text);
    $text = str_replace("–", "-", $text);
    $text = str_replace("–", "-", $text);
    $text = str_replace("é", "é", $text);
    $text = str_replace("Ä", "Ä", $text);
    return $text;
}
?&gt;

Klappt soweit ganz gut, leider werden nur 58 Sender angeboten, speziell ORF fehlt mir.

TvHeute

musst halt ein bischen anpassen. :smiley:

Danke,

hab eine Stunde gesucht und nichts gefunden.
Kann ich beide TvHeute und tvmovie im selben Script auslesen;
Mein Ansatz wäre einfach die URL in die nächste Zeile kopieren.

Jörg

Kann ich beide TvHeute und tvmovie im selben Script auslesen;

Kannst Du, allerdings musst Du anderst auslesen. Einfach drunter kopieren is nicht, da das Construct anderst ist.

Dann werde ich mich in den nächsten Tagen daran versuchen (das erste mal);
vielleicht kommt ja was raus.
Ich werde auch die netten Herren bei tvmovie per mail bitten ORF in den Feed mitaufzunehmen.

Jörg

Habe auch versucht zwei Abfragen (tv2015.xml und tv2200.xml) direkt nacheinander in einem Script zu machen. Dazu habe ich einfach die abgeänderte Version drunter kopiert. Der erste Teil (tv2015.xml) läuft durch; danach eine Fehlermeldung. Habe jetzt einfach ein zweites Script angelegt.

mit 2015 und 2200 geht problemlos in einem Script.

$tv20 = simplexml_load_file("http://www.tvmovie.de/rss/tv2015.xml"); // URL des RSS Feeds
$tv22 = simplexml_load_file("http://www.tvmovie.de/rss/tv2200.xml"); // URL des RSS Feeds
$senderAnzahl = 30; // Anzahl der anzuzeigenden Sender

$anzeigen = array("ZDF", "ARD", "RTL", "S RTL", "VOX", "HR", "SAT.1", "PRO 7", "KABEL"); // anzuzeigende Sender

// Datenausgabe
for($i=0; $i<$senderAnzahl; $i++)
{
    $item20 = $tv20->channel->item;
    //print_r($item);
    $item20 = xmlToArray($item20[$i]);
    //print_r($item20);
    $sender20 = explode("-", $item20['title']);
    $sender20 = trim(substr($sender20[0], 5));
    if(in_array($sender20, $anzeigen))
    {
         $titel20 = "<b style=color:#C00000;>".$item20['title']."</b>"; // Textfarbe anpassen
         $beschreibung20 = "<small>".$item20['description']."</small>";
         $text20 = $titel20."<br />".$beschreibung20."<br />";
         $text20 = utf8_decode($text20);
         echo "<table width='980px'>";
         if(array_key_exists('enclosure', $item20))
         {
            
                 $image20 = $item20['enclosure']['@attributes']['url'];
                echo "<tr>";
                echo "<td width='auto'height='80px'><img src=".$image20." alt='not Found'></td>";
                echo "<td width='980px'><div style='text-align:left; margin-left:10px;'>".$text20."</div></td>";
                echo "</tr>
";
        }
            else
            {
                echo "<tr>";
                echo "<td width='980px'><div style='text-align:left; margin-left:95px;'>".$text20."</div></td>";
                echo "</tr>
";
            }

        echo "</table>
";
    }
}

for($i=0; $i<$senderAnzahl; $i++)
{
    $item20 = $tv22->channel->item;
    //print_r($item);
    $item20 = xmlToArray($item20[$i]);
    //print_r($item);
    $sender20 = explode("-", $item20['title']);
    $sender20 = trim(substr($sender20[0], 5));
    if(in_array($sender20, $anzeigen))
    {
         $titel20 = "<b style=color:#C00000;>".$item20['title']."</b>"; // Textfarbe anpassen
         $beschreibung20 = "<small>".$item20['description']."</small>";
         $text20 = $titel20."<br />".$beschreibung20."<br />";
         $text20 = utf8_decode($text20);
         echo "<table width='980px'>";
         if(array_key_exists('enclosure', $item20))
         {

                 $image20 = $item20['enclosure']['@attributes']['url'];
                echo "<tr>";
                echo "<td width='auto'height='80px'><img src=".$image20." alt='not Found'></td>";
                echo "<td width='980px'><div style='text-align:left; margin-left:10px;'>".$text20."</div></td>";
                echo "</tr>
";
        }
            else
            {
                echo "<tr>";
                echo "<td width='980px'><div style='text-align:left; margin-left:95px;'>".$text20."</div></td>";
                echo "</tr>
";
            }

        echo "</table>
";
    }
}
function xmlToArray($data)
{
    if(is_object($data))
    {
        $data = get_object_vars($data);
    }
    return (is_array($data)) ? array_map(__FUNCTION__,$data) : $data;
}

Hallo Rainer, werde das heute Abend mal ausprobieren. Wahrscheinlich ging es bei mir nicht, da ich das komplette Script dann nochmal drunter kopiert habe.

Vielen Dank für die schnelle Hilfe

Hallo Rainer,

ich habe Dein Script jetzt mal mit dem Feed von TV Spielfilm getestet, geht auch soweit, nur die Beschreibung (‚description‘) kommt nicht mit, steht immer nur Array.

Kannst Du mir einen Tipp geben was ich anpassen muss damit die Beschreibung auch kommt?

Hallo Horst,

da kommt nix mit als Beschreibung. Deswegen siehst Du das leere Array.

Hall Rainer,

aber teilweise ist doch was drin TV Spielfilm.de - Heute um 20:15 Uhr im TV, schau mal bei Aktenzeichen XY.

Ich dachte eher das es daran liegt:

<description><![CDATA[Düsseldorf: Mord im Parkhaus - Wer hat ein Motiv?; Hanau: K.o.-Tropfen im ICE - Geschäftsmann ausgeraubt; Großburgwedel: Schülerin verschwindet spurlos - Führt die Spur ins Internet?]]></description>, also dieses CDATA.

Hallo Horst,

es kommt aber nix mit, da kann viel stehen.

[1] => SimpleXMLElement Object
                        (
                            [pubdate] => Wed, 21 Sep 2011 18:42:30 GMT
                            [guid] => Broadcast 107020873743
                            [title] => 20:15 | ZDF | Aktenzeichen XY... ungelöst
                            [link] => http://www.tvspielfilm.de/tv-programm/sendung/aktenzeichen-xy-ungeloest,107020873743.html
                            [description] => SimpleXMLElement Object
                                (
                                )

                            [image] => 1000430804,mdbradfFRaZlKlOj+DysWupja5ukGulK4tyIsYv6W9DkmmUofvcYndoFgxdrjso4DuwRaIk7Qss1EetZ8UkRgg==.jpg
                            [enclosure] => SimpleXMLElement Object
                                (
                                    [@attributes] => Array
                                        (
                                             => http://a2.tvspielfilm.de/itv/2011-09-21/1000430804_149.jpg
                                            [length] => 61754
                                            [type] => image/jpg
                                        )

                                )

                        )

Schade dann kann mal wohl nur hoffen das TVMovie bald wieder den Feed aktiviert.

Ähm, TV Movie läuft doch, weiss gar nicht was Du hast. :smiley:

Hääh,

das ging doch nicht :o Aber 22:00 und 20:15 geht immer noch nicht :rolleyes: