Da sich 3 Monate vor Schließung des Google Readers doch noch nicht abgezeichnet hatte, dass es sich bei besagter Schließung des Dienstes nur um einen schlechten Scherz handelte und auch die Meldung zum 1. April 2013, dass der Google Reader nun doch nicht geschlossen werden würde, sich im Gegenzug als Aprilscherz herausgestellt hatte (Scherzkekse...spielt mit unseren Gefühlen!), wurde es so langsam an der Zeit, sich nach einer Alternative umzuschauen.

Mit Alternativen sieht es momentan aber noch recht mau aus:

Da wäre Feedly, der einerseits ein webbasierter RSS-Reader ist, andererseits aber die Installation eines Browser-Plugins voraussetzt, um dann die Feeds anzeigen zu können, wenn man feedly.com besucht...das fand' ich etwas seltsam und lies eine Registrierung meinerseits lieber bleiben.

(Update: Manko behoben...bleibe trotzdem bei meinem Favouriten)

Feedly scheint jedenfalls bei den meisten Google-Reader-Opfern der Favourit zu sein.

Aus Digg's Ankündigung, bis zur Schließung des Google Readers eine Alternative im Angebot zu haben, wurde bisher (Stand: Noch 4 Wochen bis zur Schließung des Readers) auch nichts.

The Old Reader klang vom Namen schonmal nicht schlecht, die visuelle und funktionstechnische Nähe zum guten "alten Reader" war für mich persönlich bei diesem Dienst doch nicht gegeben.

Goodnoows...sehr interessant und dies hätte der Dienst meiner Wahl werden können (wenn ich nicht noch eine bessere Alternative gefunden hätte) – lebt aber schon mehr davon, dass man die von Goodnoows zur Verfügung gestellten Feeds liest und war mir auch etwas zu überfrachtet.

Da wäre noch bloglovin'...aber auch hier fehlte mir die komprimierte Zusammenfassung der Überschriften. bloglovin' hat mich schon fast etwas an Google+ erinnert.

CommaFeed sieht auf den ersten Blick super aus – hatte ich allerdings erst entdeckt, als ich schon eine sehr gute Lösung im Einsatz hatte. CommaFeed kann übrigens – falls erwünscht – selbst gehostet werden. Den Quelltext findet man auf GitHub.

Am Ende landete ich bei Tiny Tiny RSS (im Folgenden: TT-RSS).

Zwar nicht jedermanns Sache, da man TT-RSS selbst hosten muss, aber wenn man schon nach Alternativen sucht und an allen gefundenen Alternativen etwas auszusetzen hat, dann ist es doch schön, eine Alternative zu finden, der erstens nur einer den Stecker ziehen kann (man selbst) und an der man auch selbst rumbasteln kann ("nicht maulen, besser machen!").

TT-RSS  ist OpenSource und im Folgenden will ich auf dessen Einrichtung und Nutzung eingehen.

Unter'm Strich habe ich in TT-RSS nun einen Reader, der ähnlich dem alten Google Reader aussieht, allerdings mehr Funktionen hat und in einigen Punkten sogar noch besser ist. So nutze ich auch schon vor Abschaltung des Google Readers selbigen garnicht mehr und bin komplett auf TT-RSS umgestiegen.

Kurz angeschnitten: Installation

Auf die Installation will ich nicht groß eingehen – gehe mal davon aus, dass jeder, der hier reinschaut weiß, was ein Webserver und eine Datenbank ist.

TT-RSS benötigt jedenfalls einen Apache Webserver mit PHP ≥5.3 und eine Postgre- oder MySQL-Datenbank.

Alle Skripte können hier als .tar-Archiv heruntergeladen werden und hier gibt's eine kleine Installations-Anleitung.

 

Plugins

Plugins können über die config.php global für alle Client-User aktiviert oder über das jeweilige Einstellungs-Frontend bei jedem User aktiviert werden. Ist man selbst sowieso nur der einzige User, spielt das keine große Rolle, wobei die Plugins über die config.php auch schneller wieder deaktiviert sind, sollte etwas schief gehen (das eine oder andere Plugin führte bei mir dazu, dass sich das TT-RSS-Webinterface nicht mehr öffnen lies. Musste das Plugin dann erst direkt in der Datenbank, Tabelle ttrss_user_prefs, Schlüsselfeld _ENABLED_PLUGINS  wieder deaktivieren, um TT-RSS öffnen zu können).

Bei den angebotenen Plugins, die nicht im Standard-Paket enthalten sind und separat heruntergeladen werden müssen,  kann ich folgende Empfehlungen aussprechen

Plugins herunterladen, entpacken und in's plugins-Verzeichnis verfrachten.

Danach entweder via config.php oder in den Benutzereinstellungen aktivieren.

 

Was fange ich mit dem Plugin af_feedmod an?

Habt ihr den RSS-Feed von apfel-z.net abonniert, werdet ihr feststellen, dass der Artikel nur 200 Zeichen beinhaltet und dann abgeschnitten ist. Feed Mod nimmt sich den Link, der zum Original-Artikel führt und holt sich von dort den gesamten Text.

Äußerst praktisch, wobei man natürlich bedenken sollte, dass viele Seitenbetreiber davon leben, dass der Leser die Homepage besucht und auf den einen oder anderen Werbebanner klickt!

Feed Mod weiß nicht von alleine, wo sich der für den Leser tatsächlich interessante Text befindet, deshalb findet sich in den TT-RSS-Einstellungen nach Aktivieren des Plugins ein weiterer Reiter "Feed Mod", wo man Feed Mod beibringen kann, für welche Feeds er den Originaltext holen soll und wo er ihn her bekommt.

Hierbei ist eine JSON-Struktur

{ "feed-url1": {"type":"xpath", "xpath": "xpath-bezeichnung"}, "feed-url2": ... }
einzuhalten.

Am Beispiel von Apfel Z und der Seite der Polizeiberichte Baden-Württemberg:

{
"apfel-z.net": {
   "type": "xpath",
   "xpath": "div[@class='post']"},
"presse.polizei-bwl.de": {
   "type": "xpath",
   "xpath": "div[contains(@class, 'ExternalClass')]"}
}

Zuerst muss ein Teil der URL angegeben werden, für die Feed Mod aktiv werden soll.

type : xpath
ist fest

xpath enthält eine xpath-Bezeichnung für das Element, in dem sich der Text auf der Website findet. Um das Element ausfindig zu machen und die passende xpath-Bezeichnung dafür zu erstellen, sind natürlich ein paar grundlegende HTML-Kenntnisse von Vorteil ;-)

Und was soll das Plugin FeedCleanse?

FeedMod holt sich mehr Text, bei manchen Feeds will man aber möglicherweise eher Text los werden.

Zum Beispiel wenn jeder neue Artikel mit "Neuer Artikel:" oder "Klicken Sie hier, um zum Originalartikel zu gelangen" beginnt oder uninteressante Bilder enthält. Dies lässt sich mit FeedCleanse automatisiert entfernen.

Auch hier taucht in den TT-RSS-Einstellung ein neuer Reiter namens "Feed Cleanse" auf, in diesem man im JSON-Format je Feed die Änderungen eintragen kann.

Es können je Feed mehrere Ersetzungen angegeben werden, die Such-Eintragungen sind RegularExpressions.

Anbei ein Beispiel, bei dem ich bei einem Feed den Text "Wenn Sie sich diesen Artikel vorlesen lassen wollen..." bei jedem Artikel entferne. Bei einem anderen Feed ersetze ich alle Vorkommnisse des Wortes "Neu" gegen "Alt" und entferne alle zweistelligen Zahlen (nur, um die Vorteile von RegularExpressions zu zeigen) und bei apfel-z.net entferne ich alle Bilder im Artikel.

{
"domain1.com": {
   "find": ["/Wenn Sie sich diesen Artikel vorlesen lassen wollen benutzen Sie den Accesskey + v/"],
   "replace": [""]
   },
"domain2.com": {
   "find": ["/Neu/g", "/d{2}/g"],
   "replace": ["Alt", ""]
   },
"apfel-z.net": {
   "find": ["/<img.*?>/"],
   "replace": [""]
   }
}

Anpassungen

Ein paar Dinge, die noch störten, kann man zum Glück relativ einfach anpassen.

Zum Beispiel sțrte mich, dass der Reader, wenn man den letzten Feed als gelesen markiert, zum Sonderfeed > Alle Feeds wechselt. Diese Gruppe habe ich immer zugeklappt, da sie mir im Weg ist РTT-RSS klappt mir die Gruppe so aber immer wieder auf.

Die Anpassung lässt sich in der Datei js/feedlist.js machen. Meine Anpassungen beziehen sich auf die Version 1.7.8 von TT-RSS – kann sein, dass in neueren Versionen die Zeilennummern nicht mehr hinhauen, da weiterer Code hinzugekommen ist.

Zeile 448: && nuf > 0 hinzufügen

Zeile 450: weitere zwei Zeilen einfügen (siehe Code unten)

Darauf hin sollte alles so aussehen:

  1. var nuf = getNextUnreadFeed(feed, is_cat);
  2. if (nuf && nuf > 0) {
  3.   viewfeed(nuf, '', is_cat);
  4. } else if (nuf && nuf <= 0)
  5.   viewCurrentFeed();
  6. } else {
  7.   if (feed == getActiveFeedId() && is_cat == activeFeedIsCat()) {
  8.     viewCurrentFeed();

Ggf. muss noch der Inhalt des Ordners /cache gelöscht werden, damit die Änderungen wirksam werden.

Die Bilder images/favicon.png, images/favicon-72px.png und images/logo_wide.png habe ich der Kosmetik wegen auch noch ausgetauscht.

Um das Look&Feel etwas an den GoogleReader anzupassen und (meiner Ansicht nach) übersichtlicher zu machen, habe ich unter Einstellungen > Benutzerdefiniertes Stylesheet folgendes Stylesheet hinterlegt:


div.cdmHeader {
 background-color:#ffffff !important; 
  }
span.titleWrap {
  white-space:nowrap;
  }
a.title span.author {
  display:none;
  }
a.title:hover {
  color:#000000;
  }
div.expandable {
  border-width:0px 0px 1px 0px !important;
  margin:0px !important;
  } 
div.Selected div.cdmHeader {
  background:#efefef !important;
  } 
div.Selected a.title {
  color:#000000 !important;
  } 
.cdmContentInner {
  font-size:16px;
  font-family:'PT sans';
  line-height: 25px;
  }
 

Somit kommt TT-RSS schon fast wieder an das alte GoogleReader-Interface (muss so um 2011 rum gewesen sein) heran, was ich um einiges übersichtlicher und kompakter fand, als das aktuelle Google-Design bei der Schließung des Readers. 

Hier der direkte Vergleich:

Google Reader
Tiny Tiny RSS

Und unterwegs?

Die TT-RSS Android App finde ich (in Sachen UI) nicht so ganz das Gelbe vom Ei.

Zum Glück scheint gReader nach dem herannahenden Tod des GoogleReaders TT-RSS unterstützen zu wollen. Die aktuelle Beta 3.2.4 funktioniert bei mir einwandfrei (kann nicht über Google Play installiert werden, sondern muss direkt hier von der Herstellerseite heruntergeladen werden).

Dazu gäbe es noch ein für mobil optimiertes Webinterface: g2ttrss-mobile. Einfach nur herunterladen, enpacken, an eine passende Stelle im Webspace legen und Konfiguration anpassen.

Bei mir liegt g2ttrss-mobile direkt im reader-Verzeichnis in einem Ordner namens "m".

Somit gelange ich unter

http://www.apfel-z.net/reader/

zur normalen Version und unter 

http://www.apfel-z.net/reader/m/  

zur für mobil optimierten Version.

Kleiner Bug in meiner Version...

Meine Version 1.7.8 (die ich nicht updaten möchte, da ja ansonsten alles funktioniert) scheint ein kleines Problem mit der Anzeige-Einstellung "adaptiv" zu haben (In der Kopfzeile neben All/Nur gelesene/...).

Ich musste feststellen, dass neu angelegte Accounts die Einstellung "adaptiv" als Standard haben, sich aber auf meinem Server niemand nach der Anmeldung einloggen konnte – der Ladebalken blieb immer bei 75% hängen.

Hatte schon die Plugins einzeln deaktiviert, über die mySQL-Datenbank die standardmäßig angelegten Feeds und deren Inhalte gelöscht. Alles ohne Erfolg.

Dann verglich ich die Voreinstellungen der einzelnen Benutzer und konnte einen Unterschied als Übeltäter ausmachen: Bei mir ist der Standard-Ansichtsmodus "Ungelesene", bei neu angelegten Benutzern "Adaptiv".

Dieses Problem kann man durch einen SQL-Befehl – entweder für einen bestimmten oder alle User – beheben:

UPDATE ttrss_user_prefs SET VALUE = 'unread' WHERE owner_uid = x AND pref_name='_DEFAULT_VIEW_MODE';

(Wobei x die User-ID des problematischen Users ist, welche man in der User-Tabelle wiederfindet) Ich weiß nicht, woher dieser Bug bei mir verursacht wurde, denn direkt nach der Installation war er definitiv nicht vorhanden. Habe auch keine Ahnung, ob der Bug in neueren Versionen nicht mehr vorkommt, aber sollte sonst noch wer dieses Problem haben, so habe ich hiermit hoffentlich etwas Recherchearbeit erspart ;-)