Spielereien mit MagpieRSS

Seitdem Blogs die Runde machen, ist auch die Verteilung von Informationen per RSS in aller Munde. Tim Yang gibt in seinem Artikel 15 things you can do with RSS eine Menge Anstöße, zu was RSS alles gut ist. Über einige Recherchen traf ich endlich auf MagpieRSS, einem PHP-basierten RSS-Parser, der wirklich ein paar herausragende Funktionen bietet. Zeit, sich das Ding mal anzusehen.Ein TausendsassaHat man eine PHP-Engine zur Hand, um MagpieRSS überhaupt einzusetzen, stellt sich der kleine Parser als Tausendsassa heraus. Die Klasse unterstützt derweil RSS 0.9 und 1.0, 0.9x und 2.0, als auch Atom 0.3, kann also zu ziemlich jedem Zweck eingesetzt werden. Ausserdem ist sie sehr Traffic-freundlich, denn sie benutzt die Conditional GET-Methode des HTTP-Protokolls, um RSS-Feeds zu cachen, so dass nicht bei jedem Request der gesamte Feed gelesen wird. Del.icio.us, Flickr und alle RSS-anbietenden Services dieser Welt werden es dem Anfragenden danken ;) MagpieRSS unterliegt übrigens der GPL-Lizenz.Die Installation…gestaltet sich denkbar einfach. Nach dem Download besitzt man ein gut 35 KB grosses Archiv auf der Festplatte, in dem die meisten Dateien jedoch gar nicht zum eigentlichen Parser gehören. Die mitgelieferte Dokumentation in README, INSTALL und CHANGES-Dateien kann man durchaus als beispielhaft bezeichnen. Mit dabei ist ausserdem ein Beispiel-Verzeichnis und ein auf MagpieRSS angepasstes Smarty-Derivat, um den Einsatz des Parsers zu veranschaulichen.Für den gepflegten Hacker sind allerdings nur die Dateien rss_cache.inc, rss_fetch.inc, rss_parse.inc und rss_utils.inc interessant, ausserdem das Verzeichnis /extlib, in dem Snoopy (ein kleiner HTTP-Client) enthalten ist. Snoopy bedeutet, dass MagpieRSS auch auf das zuletzt ins Gerede gekommene allow_url_fopen verzichten kann.Um das Caching zu aktivieren gibt es mehrere Wege. Hat man entsprechende Rechte im Dateisystem des Webservers, reicht die Erstellung eines Verzeichnisses /cache, mit Schreibrechten für den Webserver. Zur Not kann man das Caching im /tmp-Verzeichnis zulassen, dafür reicht die folgende Konfigurationszeile:// set magpie cache-dir to /tmpdefine('MAGPIE_CACHE_DIR', '/tmp/magpie_cache');Für das tatsächliche Auslesen von Feeds wird der Parser (rss_fetch.ini) denkbar einfach in ein PHP-Skript eingebunden:// load parserrequire_once('magpierss/rss_fetch.inc');In Produktivsystemen empfiehlt es sich, dem require_once ein @-Zeichen voranzustellen, so dass Fehlermeldungen des Skriptes unterdrückt werden. Andererseits ist in solchen Systemen möglichst die Direktive display_errors in der php.ini oder per .htaccess ausgeschaltet. Benutzt man eine .htaccess-Datei kann man gleich das Auslesen der *.inc-Dateien untersagen:# restrict viewing of *.inc-files<Files *.inc>deny from all</Files>Ist der Parser eingebunden, ist das Lesen eines Feeds ein Kinderspiel:// set url$url = "http://piepmatzel.de/piepmatzel.xml";// fetch feed$rss = fetch_rss($url);Im Objekt $rss steht dann der Feed als assoziatives Array zur Verfügung. Der Artikel “RSS with PHP and Magpie” schlägt vor, das Objekt noch per array_slice vorzubereiten:// fetch last 5 items$items = array_slice($rss->items, 0, 5);Danach kann der Array per foreach durchlaufen und ausgegeben werden:// list array entriesecho "<ul>n";foreach ($items as $item) {echo "<li>" . $item['title'] . "</li>n";}echo "</ul>";Anwendungen per MagpieRSSDie dargestellten Beispiele sind nur der rudimentärste Ansatz für die Verwendung von MagpieRSS, denkbar (und auch schon umgesetzt) sind alle möglichen Aggregatoren für RSS-Feeds. Beispiele finden sich unter findforward.com, feedonfeeds.com und auch im WordPress-Plugin WordPress RSS Aggregator.Baut man ein Polling, das die Daten eines abgerufenen Feeds zusätzlich in einer Datenbank speichert, hat man nicht nur einen hervorragenden Backup-Mechanismus und ein Web-Archiv erzeugt, in dem auch über Monate und Jahre hinweg Inhalte erhalten bleiben, sondern befindet sich fast auf dem Weg zu Services wie bloglines.com oder dem RSS-Verzeichnis. Alles, was sich dem noch gegenüberstellt, ist die Bandbreite des eigenen Hostings ;)Als Betreuer ziemlich vieler Systeme in einer Firma, ist es sogar möglich, sehr schnell ein Infoverzeichnis für Statusmeldungen von Applikationen und Schnittstellen zusammenzubauen. Wir betreuen einige interne Applikationen und Schnittstellen, die ihre Informationen in getrennte logfiles und Datenbank-Tabellen schreiben.Schreibt man stattdessen Systeminformationen und Benutzeraktionen in ein RSS und installiert man ein zentrales Polling dieser Informationen, erhält man ein Kontrollzentrum, ohne ständig zwischen Servern, deren Logfiles (*nix, Windows etc.), Ticketsystemen und applikationseigenen Statusinformationen hin- und her wechseln zu müssen.Voraussetzung ist natürlich, dass sich die Server gegenseitig adressieren können. In einer komplexen Architektur mit Internet-Servern, Intranet- (LAN/WAN) und DMZ-Systemen kann das bisweilen schonmal ein bisschen Bastelei und vor allem Vorsicht erfordern. Kein Sysadmin sieht seine Statistiken gerne exploited im Internet ;)FazitMagpieRSS ist eine Werkzeugkiste, die mit ihrer (derzeitigen) Version 0.71.1 einen beeindruckenden Funktionsumfang bietet. Wer gerne an seinem Blog bastelt oder sich mit Content Syndication befasst, dem fallen bestimmt bereits mehrere Anwendungsgebiete ein. Mit MagpieRSS kommen Implementierungen in greifbare Nähe, ohne dass man zu tief in XML-Parsing, Encoding usw. einsteigen muss. Ihr solltet euch Zeit nehmen, die offizielle Webseite durchzusurfen und die Vielzahl an Links zu Umsetzungen und Tutorien zu betrachten. Ich hoffe, in Kürze auch das eine oder andere Anwendungsbeispiel anzubieten. Eine kleine Beispielseite findet ihr hier.

Dieser Beitrag wurde unter Unsortiert veröffentlicht. Setze ein Lesezeichen auf den Permalink.

4 Antworten auf Spielereien mit MagpieRSS

  1. Pingback: Hasematzel.de » Archiv » Spielereien mit MagpieRSS (Teil II)

  2. Pingback: Hasematzel.de » Archiv » Kleine Spielereien auf Hasematzel.de

  3. Tim Yang sagt:

    Thanks for linking to my post on RSS! But I’m afraid you will have to update the link. The old post got deleted. But there is a wikified version that people have been contributing to. It’s at http://timyang.com/wiki/doku.php?id=lists:thingsyoucandowithrss

  4. fadikjan sagt:

    Thinking about a church wedding? Congratulations, we wish you well as you beginyour journey into married life. In this section you will find a number of …

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>