Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- // Heise Feed Version 0.3
- header("Content-type: text/xml; charset=UTF-8");
- define('CACHEFOLDER','feed');
- define('FEEDINTERVAL',600);
- define('MAXARTIKELS',100);
- function getID($url) {
- $id = substr($url, -11, 6);
- return $id;
- }
- function getArtikel($url, $id, $date) {
- if($_GET["do"] != "reload" and file_exists(CACHEFOLDER."/".$date."-".$id.".txt")) {
- $artikelFertig = file_get_contents(CACHEFOLDER."/".$date."-".$id.".txt");
- } else {
- $doc = new DOMDocument();
- $artikel = mb_convert_encoding(file_get_contents($url), 'HTML-ENTITIES', "UTF-8");
- $doc->loadHTML($artikel);
- $divs = $doc->getElementsByTagName('div');
- $artikelFertig = 'Konnte Artikelinhalt nicht finden.';
- $newDoc = new DOMDocument();
- foreach ( $divs as $div ) {
- #$artikelFertig = $artikelFertig.$div->nodeValue.'\n\n';
- if( $div->hasAttribute('class') && $div->getAttribute('class') == 'meldung_wrapper' ) {
- $newDoc->appendChild($newDoc->importNode($div,true));
- }
- }
- $artikelFertig = $newDoc->saveHTML();
- $artikelFertig = strip_tags($artikelFertig, '<a><pre><b><br><em><ul><li><hr><p><img><strong><table><td><tr>');
- $artikelFertig = str_replace("\"/","\"http://www.heise.de/",$artikelFertig);
- $artikelFertig = htmlspecialchars($artikelFertig);
- if(!file_put_contents(CACHEFOLDER."/".$date."-".$id.".txt",$artikelFertig)) die();
- }
- $files = scandir(CACHEFOLDER);
- while(count($files) > MAXARTIKELS) {
- unlink(CACHEFOLDER."/".$files[2]);
- $files = scandir(CACHEFOLDER);
- }
- return $artikelFertig;
- }
- if($_GET["do"]=="reload" or $_GET["do"]=="sync" or $_GET["do"]=="test" or !file_exists(CACHEFOLDER."/"."feed.txt") or time() - filemtime(CACHEFOLDER."/"."feed.txt") > FEEDINTERVAL) {
- $xml = DOMDocument::load("http://www.heise.de/newsticker/heise-atom.xml");
- $entrys = $xml->getElementsByTagName('entry');
- $xml->getElementsByTagName('link')->item(1)->attributes->item(1)->nodeValue="http://www.example.com/feed.php";
- for ($i=0; $i < $entrys->length; $i++) {
- $entry = $entrys->item($i);
- $url = str_replace('/from/atom10', '', $entry->getElementsByTagName('id')->item(0)->nodeValue);
- $id = getID($url);
- $date = $entry->getElementsByTagName('updated')->item(0)->nodeValue;
- $summary = $xml->createElement('summary');
- $entry->appendChild($summary);
- $entry->getElementsByTagName('summary')->item(0)->setAttribute('type','html');
- #Setze das Datum zurück, falls der Artikel nicht upgedated wurde.
- #Heise verändert das Datum bei der hälfte der Artikel, ohne dass sich der Inhalt ändert.
- if(!preg_match("/\[update\]/i",$entry->getElementsByTagName('title')->item(0)->nodeValue)) {
- $files = scandir(CACHEFOLDER);
- foreach($files as $file) {
- if(preg_match("/.+-".$id.".txt/", $file)) {
- $date = substr($file,0,25);
- $entry->getElementsByTagName('updated')->item(0)->nodeValue = $date;
- }
- }
- }
- $artikelInhalt = getArtikel($url, $id, $date);
- $entrys->item($i)->getElementsByTagName('summary')->item(0)->nodeValue = $artikelInhalt;
- }
- $feed = $xml->saveXML();
- file_put_contents(CACHEFOLDER."/"."feed.txt",$feed);
- echo $feed;
- } else {
- echo file_get_contents(CACHEFOLDER."/"."feed.txt");
- }
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement