Kategorien
FreewarWiki:Bot/Skripts/rss feed.php: Unterschied zwischen den Versionen
< FreewarWiki:Bot | Skripts
SniGG (Diskussion | Beiträge) (+ Satzzeichenhandling) |
SniGG (Diskussion | Beiträge) (danke an Bwobebi bei der Regex Hilfe ; mehrteilige Wörter werden jetzt korrekt erkannt) |
||
Zeile 4: | Zeile 4: | ||
function feed($page_cache, $last_timestamp = 0) { | function feed($page_cache, $last_timestamp = 0) { | ||
$feed = file_get_contents("http://forum.freewar.de/feed.php?mode=news"); //lade RSS-Feed | $feed = file_get_contents("http://forum.freewar.de/feed.php?mode=news"); //lade RSS-Feed | ||
$feed = trim(preg_replace('/\s+/', ' ', $feed)); //entferne alle neuen Zeilen | $feed = trim(preg_replace('/\s+/', ' ', $feed)); //entferne alle neuen Zeilen | ||
Zeile 21: | Zeile 22: | ||
//setze alle bekannten Artikel aus dem Artikel-Cache $page_cache ein; | //setze alle bekannten Artikel aus dem Artikel-Cache $page_cache ein; | ||
//$page_cache wird mittels AllPagesBot.php generiert; | //$page_cache wird mittels AllPagesBot.php generiert; | ||
//es werden nur | //es werden nur Wörter betrachtet, die mindestens 4 Zeichen lang sind | ||
foreach($page_cache as $cache) { | |||
if(strlen($cache) < 4) | |||
continue; | |||
$desc = preg_replace("#\[\[.+?]](*SKIP)(*FAIL)|$cache#", "[[$cache]]", $desc); | |||
} | |||
//trenne Wörter von Satzzeichen | //trenne Wörter von Satzzeichen | ||
$explosion = | $explosion = str_replace(",", " , ", str_replace(".", " . ", str_replace("!", " ! ", str_replace("?", " ? ", $desc)))); | ||
//füge Satzzeichen wieder hinzu und Wörter zusammen | |||
$desc = str_replace(" , ", ", ", str_replace(" . ", ". ", str_replace(" ! ", "! ", str_replace(" ? ", "? ", $desc)))); | |||
$desc = str_replace(" , ", ", ", str_replace(" . ", ". ", str_replace(" ! ", "! ", str_replace(" ? ", "? | |||
$title = preg_replace("#(\[.*?\])#", "", $data[3][$i]); //entferne [W1*]-Markierung | $title = preg_replace("#(\[.*?\])#", "", $data[3][$i]); //entferne [W1*]-Markierung |
Aktuelle Version vom 7. Februar 2016, 20:33 Uhr
<?php $page_cache = include_once('PageTitles.php'); //enthält Seitentitel, die mit AllPagesBot.php generiert werden; function feed($page_cache, $last_timestamp = 0) { $feed = file_get_contents("http://forum.freewar.de/feed.php?mode=news"); //lade RSS-Feed $feed = trim(preg_replace('/\s+/', ' ', $feed)); //entferne alle neuen Zeilen preg_match_all("#<updated>(.*?)<\/updated>.*?<link href=\"(.*?)\".*?<title type=\"html\"><!\[CDATA\[(.*?)\]\]><\/title>.*?<!\[CDATA\[(.*?)(<p>|<br \/>)#", $feed, $data); //kompliziertes Bwoebi-Futter $text = ""; $count = count($data[0]); $news = 0; for($i = 0; $i < $count; $i++) { $news_timestamp = strtotime($data[1][$i]); if($news_timestamp < $last_timestamp) break; $desc = preg_split("(.\s?|\.\s?)", $data[4][$i])[0]."."; //kürze Beschreibungstexte auf 1 Satz; Forum-SW verkackt den Punkt; $desc = str_replace("</a>", "", preg_replace("/<a.*?>/", "", preg_replace("<img.*\/>", "", $desc))); //setze alle bekannten Artikel aus dem Artikel-Cache $page_cache ein; //$page_cache wird mittels AllPagesBot.php generiert; //es werden nur Wörter betrachtet, die mindestens 4 Zeichen lang sind foreach($page_cache as $cache) { if(strlen($cache) < 4) continue; $desc = preg_replace("#\[\[.+?]](*SKIP)(*FAIL)|$cache#", "[[$cache]]", $desc); } //trenne Wörter von Satzzeichen $explosion = str_replace(",", " , ", str_replace(".", " . ", str_replace("!", " ! ", str_replace("?", " ? ", $desc)))); //füge Satzzeichen wieder hinzu und Wörter zusammen $desc = str_replace(" , ", ", ", str_replace(" . ", ". ", str_replace(" ! ", "! ", str_replace(" ? ", "? ", $desc)))); $title = preg_replace("#(\[.*?\])#", "", $data[3][$i]); //entferne [W1*]-Markierung $text .= "|".date("d.m.Y",$news_timestamp)."||[".$data[2][$i]." ".$title."]||".$desc."\n|-\n"; $news++; } $text = trim($text); return array($news,$text); //als Klasse wäre das sicher schöner :') }