RSS Extender

Abgelegt unter (Opensource, RSS Extender) von am 11.01. 2010 um 23:41 Uhr
Getaggt mit , , ,

Viele Seiten bieten ja die Möglichkeit von RSS Feeds an. Wer so wie ich viele Feeds abonniert hat, benutzt wahrscheinlich einen Feedreader – bei mir ist es Lifearea. Somit brauche ich nur ein Programm, bin über alle Änderungen meiner Favoriten stets auf dem neuesten Stand und muss nicht jede Webseite einzeln aufrufen.

Allerdings haben viele Seiten nur wenig Text vom eigentlichen Artikel in ihren RSS Feeds enthalten. Meißtens nur ein kurzer Teaser und bei Heise ist zum Beispiel gar nichts drin. Da kann man anhand des Titels nur raten, was wohl im Artikel steht. Durchaus verständlich – man soll ja die Webseite besuchen und Werbung sehen – für mich allerdings unpraktisch. So muss ich nämlich jeden interessanten Link in meinem Browser auf machen, nur um dann festzustellen, das die Seite nur einen reißerischen Titel verwendet. Manche Feedreader können auch gleich die Webseite im Feed aufmachen. Allerdings läuft da meist eine eigene oder abgespeckte Renderengine, die keine Werbung blocken und manchmal sogar nicht mal Flash kann.

Daher hab ich mir ein kleines Skript geschrieben, was die Feed-Adresse aufruft, alle Artikel im Feed aufruft, den Content aus diesen Artikeln in den Feed zurück schreibt und mir den Feed wieder zurück gibt. Klingt kompliziert – ist aber ganz einfach. In meinem neuen Heise Feed stehen somit die Inhalte der Artikel. Selbstverständlich werden alle Links zu Bildern von relativen zu absoluten Pfaden umgeschrieben. Bei Golem funktioniert mit ein paar kleinen Regexes sogar Flash und auch das Zusammenfügen von mehreren Seiten eines Artikels.

neuer Golem Feed mit Bildern und Flash neuer Heise Feed mit echtem Inhalt und Bildern

Ich denke das es Vielen auch so geht – daher gibt es das Ganze jetzt als OpenSource Download. Da ich nicht weiß wie das rechtstechnisch aussieht, diesen Service direkt im Internet anzubieten, muss sich das jeder selbst installieren.

Im config Ordner liegt für jeden Feed eine Datei mit den entsprechenden Einstellungen. Für Heise, Golem, Gulli, Pro-Linux, THG, Nerdcore, UbuntuGeek und ein paar andere, sind diese Dateien als Beispiele schon vorhanden. Für Golem werde ich das mal exemplarisch durch gehen. Neue Feeds lassen sich dann leicht hinzufügen, in dem einfach neue Dateien im Config Ordner erstellt werden – das bedarf aber etwas PHP und Regex Kenntnis.

Aufgerufen wird der Feed über http://deineseite.de/rss_extender/?feed=name-der-datei-config-ordner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$config['url'] = "http://rss.golem.de/rss.php?feed=RSS2.0";
$config['base_url'] = "http://www.golem.de";
$config['content'] = array("#<!--content-->(.*)<!--/content-->#Uis", 1);
$config['search'] = array(
  "#<script type=\"text\/javascript\">.*<!--.*var jws1 = new.*SWFObject\(\"(.*)\",\".*\",\"(.*)\",\"(.*)\",\"7\",\".*\"\);.*jws1.addVariable\(\"id\", \"(.*)\"\);.*<\/script>#Uis",
  "#<script( language=\"javascript\"|) type=\"text\/javascript\".*>.*<\/script>#Uis",
  "#
<li class=\".*\">(.*)<\/li>#Uis",
  "#
<ul class=\".*\">(.*)<\/ul>#Uis",
  "#
<div class=\"gg_embeddedIndex gg_solid\">.*<\/div>#Uis",
  "#
<div class=\"gg_toOldGallery\">.*<\/div>#Uis",
  "#
<div class=\"gg_embeddedSub.*\">.*<\/div>#Uis");
config['replace'] = array(
  "<embed type=\"application/x-shockwave-flash\" src=\"$1\" bgcolor=\"#000000\" quality=\"high\" allowfullscreen=\"true\" scale=\"noScale\" allowscriptaccess=\"always\" flashvars=\"id=$4&amp;qual=medium&amp;autoPl=false&amp;buffer=6\" width=\"$2\" height=\"$3\">",
  "",
  "$1",
  "$1",
  "",
  "",
  "");
config['split'] = array("#<A HREF=\"([^\"]*)\">weiter...<\/A>#Uis", 1);
config['use_utf8'] = true;

Der Name der Datei ist frei wählbar. Das ist dann der Name, der auch in der URL steht – für den Golem Feed (config/golem.php) wäre die neue Feed Adresse also http://deineseite.de/rss_extender/?feed=golem. Wenn man nur http://deineseite.de/rss_extender/ ohne den feed Parameter aufruft, werden alle vorhandenen Feeds aufgelistet.

Kommentare:

  • 1. Die eigentliche Adresse des Feeds.
  • 2. Die normale Adresse der Seite.
  • 3. Ein Array mit dem Regex für den Content und der Stelle im Regex bei der der Content ist – für mehrere Klammerungen.
  • 4. – 11. Ein Array mit beliebigen Regexen nach denen gesucht wird.
  • 12. – 19. Hier werden die Ersatzregeln für die Regexe eben angegeben – das Ganze ist hilfreich für Werbung im Content oder wie hier um Javascript Crap durch Flashcode zu ersetzen.
  • 20. Wenn der Artikel aus mehreren Seiten besteht, kann hier ein Array angegeben werden, durch das die restliche Seiten geladen werden. Das funktioniert genauso wie bei Zeile 4.
  • 21. Manche Umlaute im Content werden im Feedreader nicht richtig dargestellt – falls die Codierung der Webseite nicht stimmt, kann man das Ganze hier nochmal in UFT8 kodieren lassen – bei THG z.B. geht das auch so – da macht das zusätzliche kodieren eher noch was kaputt.

Sieht kompliziert aus – ist aber ganz einfach :) – wer Fragen dazu hat, immer her damit!

Downloadseite

[update] 13. Januar 2010

In der Zip-Datei sind folgende Feeds schon enthalten:

  • www.golem.de
  • www.heise.de
  • www.heise.de/telepolis
  • www.gulli.com
  • www.nerdcore.de
  • www.nfos.de
  • www.pro-linux.de
  • www.smashingmagazine.com
  • www.ubuntugeek.com
  • www.tomshardware.com/de
  • www.sueddeutsche.de/topthemen

Dazu gibt es folgende Feeds von externen Autoren:

Kommentare

Es gibt (50) Kommentare für "RSS Extender"

  1. Sehr coole Sache – werde ich bei Gelegenheit mal ausprobieren, bin nur gerade nicht zu Hause und hab daher keinen Zugang zu meinem Server.

    Danke für das Skript!

  2. [...] ich doch heute früh per Twitter über ein durchaus interessantes Projekt gestolpert: dem RSS Extender von [...]

  3. Wow, das Ding ist einfach nur toll. Danke!

  4. Vielen Dank für dieses tolle Script. Wenn die Anbieter es schon nicht für nötig halten, ihren vollen Feed anzubieten, so ist seit heute doch möglich. Klasse!

  5. Coole Sache, muss ich mal testen!

  6. sehr geile nummer. wird später direkt eingebunden

  7. Hi Lars,
    sehr geile Sache das!
    Wie wäre es, wenn Du das Skript auf github legst?
    So könnten wir evtl. mit daran entwickeln ;)

    VG Markus

  8. Tolle Sache! Wäre es vielleicht möglich, suedeutsche.de noch in die Beispiele mit aufzunehmen? Ich denke, das ist eine Quelle die viele Leute als Feed lesen und die leider auch nur Short-Feed anbietet :(

  9. Ich denke das fällt noch unter UrhG § 53 … ;-)

  10. Ein PHP-Skript für genau diesen Zweck hab ich 2005 mal geschrieben. Auch u.a. für Heise Online, und Heise war der Auslöser, da es nervte, immer nur diese 1-Zeilen-Anreißer zu haben. Ich vermute, war bei Dir ähnlich :)

    Leider hab ich den Code nicht mehr (Datentotalverlust). Und ich wollte das Ding auch konfigurierbar machen. So weit war ich nicht gekommen.

    2 Schlaue, 1 Gedanke, sozusagen :)

  11. Yeah! Mal wieder was, warauf ich WIRKLICH gewartet habe :-) Das wird später gleich mal ausprobiert!

    Danke für die Arbeit!

  12. Perfekt, vielen Dank! :)

    Hat sich schon jemand die Mühe gemacht, die Konfiguration für TELEPOLIS zu erstellen?

  13. Hab auch neulich sowas geschrieben, du bist mir mit deiner Veröffentlichung noch zuvorgekommen. Bitte nimm folgenden Bugfix noch mit auf: PHP-Script bitte mit “<?php" beginnen nur <? reicht nicht auf allen servern.

  14. Hallo,
    bei mir gibt das skript nach einigen sekunden folgende fehlermeldung:
    Warning: MagpieRSS: Failed to fetch http://www.heise.de/newsticker/heise-atom.xml (HTTP Error: connection failed (11) in /var/www/vhosts/domain.tld/httpdocs/rssextender/magpierss-0.72/rss_fetch.inc on line 238

    ich vermute magpie rss. Im temp-verzeichnis bestehen schreibrechte und http://www.heise.de wurde dort auch erstellt.
    Wo könnte der fehler liegen?

  15. ich habs: bei meinem hoster werden socket-verbindungen nicht zugelassen, stichwort Fsockopen. Die benötigt nagpie rss aber…

  16. hauptsache http://www.nfos.de/ ^^ Du schlimmer finger :)

  17. DANKE Lars!! DANKEDANKEDANKE.
    Ich kann nur hoffen, dass heise nicht gleich wieder ihre Abwehr in Stellung bringt. Das achso offene Magazin stellt sich da ja teilweise richtig militant proprietär dar…

  18. Ich hab das Skript mal geupdatet und den Artikel etwas geändert. In den Beispielen sind jetzt auch Telepolis und die Süddeutsche Zeitung enthalten. Die Änderungen machen das Hinzufügen neuer Feeds hoffentlich einfacher – außerdem ist mir durch den neuen Telepolis Feed ein Fehler aufgefallen, das ist jetzt auch behoben.

    Ich wüsste nicht was von Rechtswegen gegen das Skript spricht, schließlich stehen da nur ein paar HTML Tags in den Beispielen. Was Ihr auf euren Servern damit macht – dafür kann ich ja nichts ;)

  19. @Lars: Erneut vielen Dank!

    Ich wüsste nicht was von Rechtswegen gegen das Skript spricht, schließlich stehen da nur ein paar HTML Tags in den Beispielen. Was Ihr auf euren Servern damit macht – dafür kann ich ja nichts ;)

    Genau – lass Dich davon nicht beirren. Ansonsten ist «RSS Extender» ja FOSS und somit die Verbreitung sowieso kaum noch aufzuhalten … :)

  20. Apropos TELEPOLIS – im Feedreader funktioniert der Feed problemlos, Mozilla Firefox hingegen zeigt den Feed nicht sichtbar an, während im RSS-Quelltext alle Daten enthalten sind. Hast Du eine Idee, woran das liegen könnte?

  21. Ich hab den telepolis Ordner bei mir im tmp mal gelöscht und im Firefox per F5 neu geladen – da wird alles angezeigt. Beim nfos Feed war vorhin ein < in einem Tag enthalten – dadurch hat sich der FF verschluckt – bei Telepolis kann ich aber keine solche Anomalie finden. Hm…

  22. Vielen Dank für das Update mit der Süddeutschen, klappt gut :)

    Ich habe mal auf http://pastebin.org/75395 den Code für die Tagesschau ge-paste-d, falls jemand Interesse daran hat. Scheint im ersten Versuch jedenfalls zu funktionieren.

    Vielleicht kann man ja so ne kleine (Link-/Datei-)Sammlung machen und im obigen Artikel ergänzen?

  23. Ich hab mal Bernds Vorschlag aufgegriffen und den Artikel nach unten hin erweitert. Falls jemand noch Feeds hat, die er gerne teilen möchte, werde ich diese auch als externe Feeds hinzufügen :)

  24. Danke fürs aufnehmen :)

    Für onlinekosten.de hab ich mal auch noch versucht, etwas zu bauen. Verwendung auf eigene Gefahr ;)

    http://pastebin.org/75515

  25. Danke für das script, Lars!
    Speziell wenn ich feeds vom Handy lese, wirds so wesentlich komfortabler.
    Mit hat die Auflistung der Feeds nicht gefallen, deswegen habe ich sie etwas aufgehübscht.

    Bei Intresse:
    http://pastebin.org/75591
    (In die Index.php ab Zeile 37 einfügen)

  26. Hab mich mal schnell um den Feed von planet3dnow.de gekümmert:
    http://pastebin.org/75623

    lässt sich bestimmt noch verbessert..

    Gruss
    Chrugail

  27. Könntest Du bitte mit Versionsnummern arbeiten?

  28. Hi Lars,

    super Script & sehr sinnvoll, kam genau zur rechten Zeit!
    A propos Zeit … ;-) Irgendwie bekomme ich nicht hin den
    Newsfeed der Zeit zusammengesetzt zu bekommen. Hast Du eine Idee?

    Danke S.

  29. Hat jemand eine Idee, wieso folgende Konfiguration nicht funktioniert?

    http://snipt.org/qnno

  30. Ich hab für das Skript mal eine extra Seite und ein Projekt bei Sourcforge erstellt:

    http://www.larsformella.de/lang/de/portfolio/programme-software/rss-extender/
    http://sourceforge.net/projects/rss-extender/

    Neue Feeds und Änderungen check ich dort ein. Ich denke das ist für alle einfacher :)

  31. Hi,

    Sehr cooles Projekt!
    Ich liebe den Heise-Verlag für seine c’t, aber ich hasse ihn für den kastrierten Sinnlos-RSS. Das hat damit jetzt ein Ende :) .
    Leider sind die Links auf andere Artikel kaputt, sie sind wohl im Original relativ und zeigen jetzt auf meinen Server, was natürlich in Zimmer 404 endet. Könntest du das vielleicht noch fixen?

    Danke und weiter so!
    Bert

  32. Martin: Die Config geht nicht, weil nach “post” noch eine id kommt, die hast du nicht berücksichtigt. So findet das RegExp nichts.

    Versuch es mal mit

    (.*)

  33. hmm mist, die comment-Funktion mag mich nicht ;)

    Martin: Probier mal http://pastebin.org/75999

  34. [...] Dieser Eintrag wurde auf Twitter von cbgreenwood, blickpunkt energie, chrugail, About RSS, 0×40.ch und anderen erwähnt. 0×40.ch sagte: neue kurz-URL: http://0×40.ch/rssextender [...]

  35. @Bernd: Merci für Deinen Tipp. So erhalte ich Inhalte, aber leider jeweils doppelt – einmal nur den Titel mit plus Post-ID, danach den Titel mit dem eigentlichen Inhalt.

    Screenshot: http://img694.yfrog.com/img694/6441/bildschirmfoto20100117u.png

    Weitere Ideen?

  36. Zwei Wünsche:

    1. airbuspilot.ch (wie Martin)
    2. hossli.com

    Sorry. Ich komme einfach nicht klar mit der Konfiguration.

  37. Bzgl. Airbuspilot schaut euch mal http://pastebin.org/78083 an, klappt bei mir soweit.

  38. Hab die configs nochmal überarbeitet…

    airbuspilot.ch http://pastebin.org/78120
    hossli.com http://pastebin.org/78119

  39. @Bernd: Vielen Dank, airbuspilot.ch funktioniert nun ziemlich gut – lediglich das «id=”…”>» am Textbeginn stört noch.

    hossli.com kannte ich bislang nicht. Bei mir werden im RSS-Feed die Sonderzeichen nicht korrekt umgesetzt. Ist das bei Dir anders?

  40. Sind im svn: http://rss-extender.svn.sourceforge.net/viewvc/rss-extender/config/

    Wenn jemand das selbst einchecken möchte, reicht ein SourceForge Account :)

  41. @Martin: Im Quellcode meines Test-Feeds ist kein id=”…” vorhanden. Vielleicht musst du den Temp-Ordner nochmal löschen? Umlaute werden mit meinen beiden letzten Versionen auch korrekt dargestellt. Vielleicht in deinem Feed-Reader ein falscher Zeichensatz?

    @Lars: Nur, falls man da direkt online bearbeiten kann ;) Extra einen svn-Client will ich mir eigentlich nicht einrichten.

  42. @Bernd: Jetzt funktioniert es – ich musste tatsächlich auch noch den tmp-Ordner löschen, dessen Existenz mir bislang gar nicht bewusst war (neben dem cache-Ordner). Vielen Dank für Deine Unterstützung!

  43. [...] von RSS-Feeds, so z. B. bei neunzehn72.de. Oliver hat auf aptgetupdate.de sogar über das Projekt RSS-Extender von Lars Formella berichtet, welches gekürzte Feeds wieder [...]

  44. In den letzten Tagen erhielt ich Beiträge aus dem Heise Online-Feed jeweils zwei Mal – zuerst mit dem regulären Datum, danach jeweils mit dem 1. Januar 1970. Besteht das Problem noch bei anderen?

    Ich verwende die mitgelieferte Konfigurationsdatei für Heise Online.

  45. Hi!

    Vielen Dank für das super Script! Ist jemand fähig, eine Config für spiegel.de zu generieren?

    Grüße Holger

  46. Der Heise Online-Feed funktioniert wieder … dafür bekunde ich aktuell gerade Mühe mit http://theautomaticearth.blogspot.com/ – meine Konfiguration erwischt gerade nur zwei der 25 per RSS verfügbaren Blogeinträge. Ideen?

    http://snipt.org/vlgp

  47. warum nicht:)

  48. Ich hätte da auch noch einen Wunsch :-)

    http://www.spiegel.de/panorama/index.rss

    Gruss MO

  49. Ich weiß nicht, inwieweit das Projekt noch aktiv ist, aber nachdem ich zu All-Inkl gewechselt war, lief das Script nicht mehr. Ich bekam immer eine Fehlermeldung zum HTTPrequest. Diese Funktion ist scheinbar in irgendeiner PHP-Version fest definiert und darf nicht anderweitig als Name benutzt werden.

    Ich habe daher einfach in der httprequest.php und in der index.php überall vor den Funktionsnamen ein rss_ gesetzt, jetzt läuft es wieder.

Kommentar schreiben