+ Antworten
Seite 1 von 4 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 33
  1. #1
    Registriert seit
    Jun 2008
    Beiträge
    200

    Standard RSS Feeds Newsscript

    Moin....

    Habe hier mal ein RSS Feeds Newsreader gebastelt, ohne den Textparser zu nutzen, hoffe er funzt bei euch auch...

    Variabeln werden selbststaendig angelegt,
    Nur wenige eingriffe seitens des anwenders notwendig, es müssen lediglich eine Gruppe angelegt werden, in die das script kommt, die ID des funktionsscriptes muss eingetragen werden, die URL des RSS Feeds, die GruppenID muss nicht eingetragen werden, kann aber eingetragen werden, Die anzahl der News kann eingestellt werden, standart sind 5.

    Falls problemchen auftauchen, bitte einmal melden!!!


    UPDATE:
    die php_curl.php muss eingebunden sein, damit die curl funktion auf luppet...
    auf dem packet einfach in das IPs Hauptverzeichniss kopieren/verschieben und in der pnp.ini unter [PHP] folgendes eintragen:
    extension = "php_curl.dll"



    Newsscript
    PHP-Code:
    <?
    /* RSS FEED Newsticker [email]korny@korny.org[/email]
    Script in einen Kategorie kopieren (z.B. News / Bild News)
    Script gegebenenfalls umbenennen
    Funktionsscript erstellen (ist mit im Packet) und ID im script eintragen!!!
    Newsscript ausführen und schauen, ob die Variablen angelegt werden und gefüllt sind!!!
    Das wars schon
    */
    $funktionsscript=0// Bitte Funktionsscript ID eingeben
    $group=0// Übergeordnete GruppenIP vom Newsscript! Kann eingetragen werden, muss aber nicht
    $url='<benutzereingabe>'// RSS FEED link eintragen
    $newsanzahl=0// gewünschte Newsanzahl eingeben, keine aenderung = 5 News werden erstellt


    return(0); // Diese Zeile löschen oder ausdokumentieren


    // Ab hier keine Änderungen mehr nötig //
    // Überprüfung der eingaben //
    if($funktionsscript==0) {
    echo 
    "ID des Funktionsscripts angeben";
    return(
    0);
    }

    if(!
    $group || $group==0) {
    $id=$IPS_SELF;
    $group=IPS_GetObject($id);
    $group=$group[ParentID];
    if(
    $group == 0) {
    echo 
    "Script kann nicht im Hauptverzeichnis ausgeführt werden";
    return(
    0);
    }
    }
    if(!
    $url || $url == '<benutzereingabe>') {
    echo 
    "Keine RSS Feeds angegeben";
    return(
    0);
    }
    $name=IPS_GetName($group);
    if(
    $newsanzahl==0) {
    $newsanzahl=5;
    }

    // Hauptscript
    require("c:/IP-Symcon/scripts/$funktionsscript.ips.php");
    if(@!
    IPS_GetObjectIDByName("$name$newsanzahl"$group)) {
    for(
    $i=0;$i<$newsanzahl;$i++) {
    if(@!
    IPS_GetObjectIDByName("$name$i"$group  )) {
    $integer[$i]=IPS_CreateVariable(3);
    $ergebnis=IPS_SetParent($integer[$i], $group );
    $ergebnis=IPS_SetName($integer[$i], "$name$i");
    }
    if(@!
    IPS_GetObjectIDByName("$name$i details"$group  )) {
    $integer[$i]=IPS_CreateVariable(3);
    $ergebnis=IPS_SetParent($integer[$i], $group );
    $ergebnis=IPS_SetName($integer[$i], "$name$i details");
    }
    if(@!
    IPS_GetObjectIDByName("$name$i link"$group  )) {
    $integer[$i]=IPS_CreateVariable(3);
    $ergebnis=IPS_SetParent($integer[$i], $group );
    $ergebnis=IPS_SetName($integer[$i], "$name$i link");
    }
    if(@!
    IPS_GetObjectIDByName("$name$i zeit"$group  )) {
    $integer[$i]=IPS_CreateVariable(3);
    $ergebnis=IPS_SetParent($integer[$i], $group );
    $ergebnis=IPS_SetName($integer[$i], "$name$i zeit");
    }
    }
    }


    $rss_channel = array();
    $currently_writing "";
    $main "";
    $item_counter 0;

    function 
    startElement($parser$name$attrs) {
           global 
    $rss_channel$currently_writing$main;
           switch(
    $name) {
               case 
    "RSS":
               case 
    "RDF:RDF":
               case 
    "ITEMS":
                   
    $currently_writing "";
                   break;
               case 
    "CHANNEL":
                   
    $main "CHANNEL";
                   break;
               case 
    "IMAGE":
                   
    $main "IMAGE";
                   
    $rss_channel["IMAGE"] = array();
                   break;
               case 
    "ITEM":
                   
    $main "ITEMS";
                   break;
               default:
                   
    $currently_writing $name;
                   break;
           }
    }

    function 
    endElement($parser$name) {
           global 
    $rss_channel$currently_writing$item_counter;
           
    $currently_writing "";
           if (
    $name == "ITEM") {
               
    $item_counter++;
           }
    }

    function 
    characterData($parser$data) {
        global 
    $rss_channel$currently_writing$main$item_counter;
        if (
    $currently_writing != "") {
            switch(
    $main) {
                case 
    "ITEMS":
                    if (isset(
    $rss_channel[$main][$item_counter][$currently_writing])) {
                        
    $rss_channel[$main][$item_counter][$currently_writing] .= $data;
                    } else {
                        
    //print ("rss_channel[$main][$item_counter][$currently_writing] = $data<br>");
                        
    $rss_channel[$main][$item_counter][$currently_writing] = $data;
                    }
                    break;
            }
        }
    }

    $xml_parser xml_parser_create();
    xml_set_element_handler($xml_parser"startElement""endElement");

    xml_set_character_data_handler($xml_parser"characterData");
    /*
    if (!($fp = fopen($file, "r"))) {
        die("could not open XML input");
    }

    /*
    while ($data = fread($fp, 4096)) {
        if (!xml_parse($xml_parser, $data, feof($fp))) {
            die(sprintf("XML error: %s at line %d",
                        xml_error_string(xml_get_error_code($xml_parser)),
                        xml_get_current_line_number($xml_parser)));
        }
    }
    */
    $data=curl_string($url);
    xml_parse($xml_parser,$data);
    xml_parser_free($xml_parser);

    // putting in array
    $news=array();
    if (isset(
    $rss_channel["ITEMS"]))
    {
        if (
    count($rss_channel["ITEMS"]) > 0)
            for(
    $i 0;$i count($rss_channel["ITEMS"]);$i++) $news[]=$rss_channel["ITEMS"][$i];
    }
    $c=0;
    foreach(
    $news as $key=>$val)
    {
        if(
    $c<$nr_news)
        {
    #        echo "<p align=left>";
    #        echo '<a href="'.$val['LINK'].'">'.$val['TITLE'].'</a> - '.$val['PUBDATE'].'<br>'.''.$val['DESCRIPTION'].'</font></p>';
        
    }
        
    $c++;
    }


    function 
    curl_string ($url,$user_agent='Mozilla 4.0'){

           
    $ch curl_init();

           
    curl_setopt ($chCURLOPT_URL$url);
           
    curl_setopt ($chCURLOPT_USERAGENT$user_agent);
           
    curl_setopt ($chCURLOPT_HEADER0);
           
    curl_setopt ($chCURLOPT_RETURNTRANSFER1);
           
    curl_setopt ($chCURLOPT_FOLLOWLOCATION1);
           
    curl_setopt ($chCURLOPT_TIMEOUT120);
           
    $result curl_exec ($ch);
           
    curl_close($ch);
           return 
    $result;

    }
    $news="";
    for(
    $i=0;$i<count($rss_channel[ITEMS]);$i++) {
    $j="0";
    $news[$i][$j]=$rss_channel[ITEMS][$i][TITLE]."
    "
    ;
    $j++;
    $news[$i][$j]=$rss_channel[ITEMS][$i][LINK]."
    "
    ;
    $j++;
    $news[$i][$j]=$rss_channel[ITEMS][$i][DESCRIPTION]."
    "
    ;
    $j++;
    $news[$i][$j]=$rss_channel[ITEMS][$i][PUBDATE]."
    "
    ;
    $j++;
    $news[$i][$j]=$rss_channel[ITEMS][$i][GUID]."
    "
    ;
    }

    for(
    $i=0;$i<count($news);$i++) {
    if(
    $i <= 16) {
    for(
    $j=0;$j<count($news[$i]);$j++) {
    $newsline=$news[$i][$j];
    $newsline=text_formatierung($newsline);

    if(
    $j==0) {
    // Title //
    if(@IPS_GetObjectIDByName("$name$i"$group )) {
    $integer=IPS_GetObjectIDByName("$name$i"$group );
    SetValueString($integer,$newsline);
    }
    }
    if(
    $j==1) {
    // url //
    if(@IPS_GetObjectIDByName("$name$i link"$group )) {
    $integer=IPS_GetObjectIDByName("$name$i link"$group );
    SetValueString($integer,$newsline);
    }
    }
    if(
    $j==2) {
    // details //
    if(@IPS_GetObjectIDByName("$name$i details"$group )) {
    $integer=IPS_GetObjectIDByName("$name$i details"$group );
    SetValueString($integer,$newsline);
    }
    }
    if(
    $j==3) {
    // zeit //
    if(@IPS_GetObjectIDByName("$name$i zeit"$group )) {
    $integer=IPS_GetObjectIDByName("$name$i zeit"$group );
    SetValueString($integer,$newsline);
    }
    }
    }
    }
    }
    ?>
    Geändert von korny (04.01.09 um 16:49 Uhr) Grund: PHP-Tags eingefügt

  2. #2
    Registriert seit
    Jun 2008
    Beiträge
    200

    Funktionsscript
    PHP-Code:
    <?
    function text_formatierung($newsline){

    // Hier können noch anpassungen gemacht werden

    #$newsline=html_entity_decode($newsline);
    #$newsline=str_replace("         ", " ", $newsline);
    #$newsline=str_replace("ö", "ö", $newsline);
    #$newsline=str_replace("Ãœ", "Ü", $newsline);
    #$newsline=str_replace("ü", "ü", $newsline);
    #$newsline=str_replace("ä", "ä", $newsline);
    #$newsline=str_replace("ß", "ß", $newsline);
    #$newsline=str_replace("&amp;ndash;", "-", $newsline);
    #$newsline=str_replace('&amp;#039;', "`", $newsline);
    #$newsline=str_replace("&amp;", "&", $newsline);
    #$newsline=strip_tags($newsline);


    $newsline=strip_tags($newsline);
    $newsline=html_entity_decode($newsline);
    $newsline=str_replace("         "" "$newsline);
    $newsline=str_replace("ö""ö"$newsline);
    $newsline=str_replace("Ãœ""Ü"$newsline);
    $newsline=str_replace("ü""ü"$newsline);
    $newsline=str_replace("ä""ä"$newsline);
    $newsline=str_replace("ß""ß"$newsline);
    $newsline=str_replace("&amp;ndash;""-"$newsline);
    $newsline=str_replace('&amp;#039;'"`"$newsline);
    $newsline=str_replace("&amp;""&"$newsline);
    $newsline=str_replace("Ö""Ö"$newsline);
    $newsline=str_replace("„""\""$newsline);
    $newsline=str_replace("“""\""$newsline);
    $newsline=str_replace("&ndash;""-"$newsline);
    $newsline=str_replace("„""\""$newsline);
    $newsline=str_replace("“""\""$newsline);

    $newsline=str_replace("„""\""$newsline);
    $newsline=str_replace("–""-"$newsline);
    $newsline=preg_replace("/\r|\n/s"""$newsline);
    return 
    $newsline;
    }

    ?>
    Beispielfeeds:

    Borussia Dortmund online
    Bild.de
    Geändert von HJH (02.01.09 um 15:03 Uhr) Grund: PHP-Tags eingefügt

  3. #3
    Registriert seit
    Dec 2005
    Beiträge
    917

    Exclamation PHP-Code bitte korrekt kennzeichnen

    Hallo korny,

    bitte benutze in Zukunft für PHP Code nicht "QUOTE"-Tags sondern "PHP"-Tags.

    Er lässt sich dann wesentlich besser lesen.


    Gruß
    HJH

  4. #4
    Registriert seit
    Jun 2008
    Beiträge
    200

    Jupp, werd ich machen...

    Ach ja, ein kleines replay waere ganz nett, obs luppet, ob verbesserungsvorschläge vorhanden sind usw.
    Könnte mich ja motivieren, noch weitere scripte rauszurücken, bzw. zu schreiben... ^^



    Meine 86 downloads..... und keine einzige frage, das nenn ich schonmal gut ^^

  5. #5
    Registriert seit
    Jun 2008
    Beiträge
    200

    Da ham wa es ja auch schon.... Hatte ich vergessen, die php_curl.dll muss noch in der php.ini mit eingebunden werden...

    Packet neu runterladen oder hier die angehängte php_curl.dll runterladen und ins IPs Hauptverzeichnis legen...
    in der php.ini unter [php] foldendes einfügen:

    Code:
    [PHP]
    extension = "php_curl.dll"
    IPS neu starten und neuer versuch....

    mfg
    tkorny

    Hier auchnoch meine umsetzung im dashboard....
    Geändert von korny (04.01.09 um 19:48 Uhr) Grund: CODE Tags eingefuegt zur besseren Lesbarkeit

  6. #6
    Registriert seit
    Dec 2006
    Ort
    Neutraubling
    Beiträge
    32

    Funktioniert enwandfrei -vielen Dank für die Unterstützung.
    bye

    HaSc
    -------------------
    Der Kluge lernt aus allem und von jedem, der Normale aus seinen Erfahrungen und der Dumme weiß alles besser. -Sokrates-

  7. #7
    Registriert seit
    Jun 2008
    Beiträge
    776

    Moin korny,

    hab Dein Script jetzt auch mal bei mir eingebaut (IPS 2.1) - ich verwende es als Newsticker auf dem Touchscreen in meiner Küche.

    Ich gebe jeweils den Kurztext in einer Liste aus.
    Nun möchte ich aber dass mit einem Klick auf den Kurztext eine Box aufgeht, in der der komplette Nachrichtentext dargestellt wird. So wie auf Deinem Screenshot.
    Kannst Du mir einen Hinweis geben wie ich das realisiere?

    Merci!
    Grüße, Hocky

  8. #8
    Registriert seit
    Apr 2008
    Ort
    Swiss/Czech
    Beiträge
    1,183

    Standard Blöde Frage

    Aber ist möglich das die DLL einen installierten Mozilla Browser voraussetzt?

  9. #9
    Registriert seit
    Jan 2007
    Ort
    Nidda(Hessen)
    Beiträge
    7,331

    php_curl.dll muss in den ext(ab V2.1) Ordner und in der entsprechenden Version vorliegen.
    Gruß Rainer


    Unmögliches wird sofort erledigt, Wunder dauern etwas länger.


  10. #10
    Registriert seit
    Apr 2008
    Ort
    Swiss/Czech
    Beiträge
    1,183

    Thumbs up ;-)

    Blöd, da hät ich auch drauf kommen müssen! Perfekt, klappt einwandfrei auch ganz ohne Mozilla hehe (--> Lösung war DLL muss in den EXT Ordner..)

Ähnliche Themen

  1. IPS via RSS !
    Von guyabano im Forum Allgemeine Diskussion
    Antworten: 2
    Letzter Beitrag: 30.01.07, 06:54
  2. RSS Feeds Darstellung möglich
    Von dinin im Forum Dashboard
    Antworten: 1
    Letzter Beitrag: 15.01.07, 22:26