Zurück   IP-Symcon Community Forum > IP-Symcon 2.x > Anleitungen / Nützliche PHP Skripte

Antwort
 
LinkBack Themen-Optionen Thema durchsuchen
  #1 (permalink)  
Alt 02.01.09, 13:46
Senior Member
 
Registriert seit: Jun 2008
Beiträge: 183
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);
}
}
}
}
}
?>
Angehängte Dateien
Dateityp: rar newsreader.rar (102.2 KB, 149x aufgerufen)

Geändert von korny (04.01.09 um 15:49 Uhr) Grund: PHP-Tags eingefügt
Mit Zitat antworten
  #2 (permalink)  
Alt 02.01.09, 13:48
Senior Member
 
Registriert seit: Jun 2008
Beiträge: 183
Standard

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 14:03 Uhr) Grund: PHP-Tags eingefügt
Mit Zitat antworten
  #3 (permalink)  
Alt 02.01.09, 14:10
Benutzerbild von HJH
HJH HJH ist offline
Senior Member
 
Registriert seit: Dec 2005
Beiträge: 913
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
Mit Zitat antworten
  #4 (permalink)  
Alt 04.01.09, 02:34
Senior Member
 
Registriert seit: Jun 2008
Beiträge: 183
Standard

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 ^^
Mit Zitat antworten
  #5 (permalink)  
Alt 04.01.09, 15:46
Senior Member
 
Registriert seit: Jun 2008
Beiträge: 183
Standard

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....
Angehängte Dateien
Dateityp: rar php_curl.rar (99.8 KB, 104x aufgerufen)

Geändert von korny (04.01.09 um 18:48 Uhr) Grund: CODE Tags eingefuegt zur besseren Lesbarkeit
Mit Zitat antworten
  #6 (permalink)  
Alt 06.01.09, 20:40
Member
 
Registriert seit: Dec 2006
Ort: Neutraubling
Beiträge: 32
Standard

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-
Mit Zitat antworten
  #7 (permalink)  
Alt 03.11.09, 09:57
Senior Member
 
Registriert seit: Jun 2008
Beiträge: 254
Standard

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
Mit Zitat antworten
  #8 (permalink)  
Alt 15.12.09, 13:44
Senior Member
 
Registriert seit: Apr 2008
Ort: Swiss/Czech
Beiträge: 300
Standard Blöde Frage

Aber ist möglich das die DLL einen installierten Mozilla Browser voraussetzt?
Mit Zitat antworten
  #9 (permalink)  
Alt 15.12.09, 13:54
Benutzerbild von RWN
RWN RWN ist offline
Super Moderator
 
Registriert seit: Jan 2007
Ort: Nidda(Hessen)
Beiträge: 6,238
Standard

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.

Mit Zitat antworten
  #10 (permalink)  
Alt 15.12.09, 15:13
Senior Member
 
Registriert seit: Apr 2008
Ort: Swiss/Czech
Beiträge: 300
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..)
Mit Zitat antworten
Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
IPS via RSS ! guyabano Allgemeine Diskussion 2 30.01.07 05:54
RSS Feeds Darstellung möglich dinin Dashboard 1 15.01.07 21:26


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:55 Uhr.


Powered by vBulletin® Version 3.8.4 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0