Ticker, ein Feed-Parser für Yellow CMS

Geschrieben von Steffen Schultz keine Kommentare
Kategorisiert in : Software Schlüsselwörter : OpenSource, PHP, RSS, Yellow

Trial-And-Error-Productions proudly presents: Ticker, ein RSS-Parser für Yellow CMS.

Mein nächstes Yellow-Plugin, das diesmal sogar etwas umfangreicher ausfällt als meine anderen, die sich überwiegend auf das Umwandeln von HTML-Snippets in einen Yellow-Shortcode konzentrieren. Bei meinem neuen Plugin geht es allerdings auch um PHP-Code. Zwar ist es verhältnismäßig einfach, eigenen Code in die einzelnen, als "Snippets" bezeichneten Design-Bausteine von Yellow CMS zu integrieren, doch wirklich komfortabel ist das trotzdem nicht gerade. Im Falle meiner Projekt-Homepage auf www.robbenradio.de ging es um einen kleinen RSS-Parser, der sämtliche Feeds aller Unterprojekte als gebündelten News-Bereich ausgeben sollte. Also habe ich mich in den vergangenen Tagen mal drangesetzt, und den Code in ein halbwegs ordentliches Yellow-Plugin verwandelt.

Der Parser lief zunächst mittels der in PHP integrierten SimpleXML-Funktionen. Da es lediglich um meine eigenen Projekte ging, benötigte ich die ganzen Zusatzfunktionen wie etwa Caching nicht. Natürlich sollten auch andere Nutzer etwas damit anfangen können, daher habe ich den Parser noch etwas erweitern müssen. Prompt stellte sich nämlich heraus, dass SimpleXML nicht wirklich gut mit z. B. Atom-Feeds umgehen kann. Bevor ich mir aber beim Implementieren der entsprechenden Namespaces den Hals verrenke und auch nicht das Rad neu erfinden wollte, habe ich kurzerhand auf den SimplePie-Parser zurückgegriffen. Dessen API ist leicht verständlich, es werden alle gängigen Feed-Formate samt diverser Caching-Möglichkeiten unterstützt, und der Parser lässt sich bei Bedarf auch in eine einzige PHP-Datei kompilieren. Derzeit liegt SimplePie dem Plugin nicht bei, kann aber schnell nachinstalliert und durch Setzen einer Option ganz einfach aktiviert werden.

Das Plugin bietet einige globale und individuelle Konfigurationsoptionen. So kann die Anzeige des Datums und der Artikel-Zusammenfassung (Description) ein- und ausgeschaltet werden, außerdem lässt sich jedem [ticker]-Shortcode eine CSS-Klasse für individuelles Styling zuweisen. Weitere kleine Verbesserungen werden sicher noch folgen, vor allem um SimplePie besser konfigurieren zu können.

Miniflux: Schlanker RSS-Reader auf PHP-Basis

Geschrieben von Steffen Schultz keine Kommentare
Kategorisiert in : Software Schlüsselwörter : A11Y, OpenSource, PHP, RSS

Der Zufall wollte es, dass ich mal wieder meinen RSS-Reader wechsle. Mit FreshRSS war ich zwar bislang recht zufrieden, doch hier und da haben mich mit der Zeit einige Dinge etwas gestört. Hauptpunkt dürfte wohl die Zugänglichkeit via Bildschirmleser gewesen sein, die an einigen Stellen nur sehr rudimentär möglich war, da die meisten der mit Grafiken versehenen Bedienelemente kaum oder gar nicht mit sinnvollen Alternativtexten beschriftet waren. Des Weiteren hatte der Reader mit diversen RSS-Feeds Probleme, und rief sie trotz Gültigkeit und Erreichbarkeit nur noch sporadisch fehlerfrei ab.

Der Nachfolger in meinen Self-Hosted-Apps nennt sich Miniflux. Das ist mal eine Webanwendung, die so ganz nach meinem persönlichen Geschmack ist. Einfach zu installieren, schlank und schnell, ohne überflüssige Features, und dennoch mit einigen Funktionen ausgestattet, die man bei anderen Readern vermissen dürfte. Dazu noch für Nutzer von Bildschirmlesern sehr gut zugänglich, was will man mehr?

Herausragend ist die Möglichkeit, Artikel-Texte direkt im Reader zu lesen, auch wenn der Feed keinen Volltext anbietet. Hierzu bringt die dem Reader zugrunde liegende und vom selben Autor entwickelte PicoFeed-Bibliothek einen Content-Grabber mit, der anhand bestimmter Regelsätze die Artikelseiten filtert, und lediglich den Text des Artikels ausgibt. Hierzu muss jedoch für jede Seite eine eigene Regel erstellt werden. Heise und Spiegel Online sowie Golem sind neben einigen weiteren deutschsprachigen Seiten bereits vorhanden, mit etwas HTML- und PHP-Kenntnis lassen sich aber neue Regeldateien relativ einfach erstellen.

Auch in Sachen Geschwindigkeit macht Miniflux einiges besser. Während es bei FreshRSS schon mal Minuten dauern konnte, bis alle Feeds abgerufen waren (ja, das geht natürlich auch automatisiert, habe ich jedoch aus bestimmten Gründen nicht eingerichtet), erledigt Miniflux dies in nicht mal einer halben Minute. Grund dafür ist, dass mehrere Feeds gleichzeitig abgerufen werden, und nicht einer nach dem anderen. Tritt irgendwo ein Fehler auf, wird dies sofort beim entsprechenden Feed angezeigt, und man kann über den Debugmodus weitere Nachforschungen im Protokoll anstellen. Leider ist die PicoFeed-Bibliothek etwas pingelig bei nicht validen Feeds, sodass ich einige wenige Feeds damit nicht mehr lesen kann.

Die Bildschirmleser-Zugänglichkeit der Anwendung ist auf Desktop- und Mobilgeräten durchweg positiv. Alle Bedienelemente sind sinnvoll beschriftet, und mittels Überschriftennavigation lassen sich die einzelnen Artikel bequem durchblättern. Die abgerufenen Artikel werden in einer Art Stream angezeigt, sodass man nicht erst umständlich jeden Feed einzeln anklicken muss. Wer dennoch nur einzelne Abos oder Kategorien sehen möchte, findet auch diese Möglichkeit sehr schnell. Am Ende der Seite erlaubt ein Link, sämtliche Artikel als gelesen zu markieren.

Miniflux ist eine PHP-Anwendung und verwendet eine Sqlite-Datenbank als Backend, dementsprechend einfach ist daher auch die Installation. Des Weiteren kann ein Cronjob zum automatisierten Abrufen der Feeds im System oder, falls nicht verfügbar, über einen Webcron-Dienst angelegt werden. Auch für den Fernzugriff ist alles vorhanden. Neben einer eigenen API gibt es eine Fever-Unterstützung, was die Steuerung über geeignete Mobil- und Desktop-Apps erlaubt. Für Android ist eine App nahmens MiniFlux Embedded verfügbar, wobei es sich aber lediglich um einen One-Purpose-Browser handelt, also um eine App, welche die Miniflux-Seite darstellt, sonst aber keine Zusatzfunktionen wie etwa Benachrichtigungen mitbringt. Eine Plugin-Unterstützung gibt es bei Miniflux nicht, dafür lässt sich der Reader mit Themes den eigenen Farbwünschen anpassen.

Kurzum: Miniflux ist vielleicht kein Reader, um hunderte von Feeds sinvoll mit allen Rafinessen zu verwalten, doch für den einfachen Bedarf ist diese Anwendung sehr zu empfehlen.

RSS-Bridge: Holen wir uns das Netz zurück!

Geschrieben von Steffen Schultz keine Kommentare
Kategorisiert in : Software Schlüsselwörter : OpenSource, PHP, RSS

Da stöbert man nichtsahnend auf Github herum und möchte eigentlich etwas ganz anderes finden, bekommt dann aber plötzlich eine absolut geniale Idee auf den Schirm.
Wen hat es nicht auch schon geärgert, dass viele soziale Netzwerke zwar APIs zum Abgreifen von Daten anbieten, die altgedienten RSS-Feeds jedoch tief im System verstecken, ganz abschalten oder gar nicht erst zur Verfügung stellen? Schon immer habe ich mir z. B. gewünscht, Soundcloud-Profile in meinem Feedreader abonnieren zu können, statt mich erst umständlich per E-Mail über neue Tracks benachrichtigen zu lassen. Auch Twitter-Zeitleisten lassen sich mittlerweile nur noch eher umständlich außerhalb von Twitter und ohne ein eigenes Konto nutzen. Aus Sicht der Plattformen ist dies natürlich verständlich, denn Werbung lässt sich immer noch am besten im eigenen System an den User bringen. Selbst die APIs werden aus nur allzu offensichtlichen Gründen teilweise immer weiter eingeschränkt. Zeit also, um sich das Web wieder ein wenig zurückzuerobern.

Das Projekt RSS-Bridge versucht genau hier anzusetzen und stellt eine RSS-Brücke für soziale Netze und andere Seiten zur Verfügung, die keine RSS-Feeds anbieten. Das Prinzip hierbei ist eigentlich simpel, wenn auch recht arbeitsintensiv, da es für fast jede Webseite individuell angepasst werden muss. Die RSS-Bridge liest eine Webseite ein, entfernt alle unnötigen Elemente wie Javascript, umgebendes HTML und Ähnliches und wandelt den fertig aufbereiteten Inhalt in einen sauberen RSS/Atom-Feed um. Die Daten können aber auch als HTML oder JSON ausgegeben werden. RSS-Bridge ist ein noch sehr junges Projekt, doch bereits jetzt enthält es eine beachtliche Anzahl von Brücken, darunter Flickr, Instagram, Google-Suchergebnisse, Hashtag-Suche und Benutzerzeitleisten von Twitter, Identi.ca/Pump.io, neueste Highlight-Artikel in der Wikipedia (Englisch, Französisch und Esperanto), Bandcamp, Soundcloud und Youtube. Neue Brücken werden ständig entwickelt, wobei der Fokus aufgrund der beteiligten Community momentan noch auf französischsprachigen Webseiten liegen dürfte.

Die Nutzung des auf PHP basierenden Scripts ist denkbar einfach: Hochladen, aufrufen und den gewünschten Dienst mit Daten füttern. Möchte man z. B. die Zeitleiste eines Twitter-Nutzers sehen, muss einfach nur im entsprechenden Abschnitt der Twitter-Benutzername eingetragen werden. Mit Klick auf Atom, HTML oder JSON erhält man dann die mundgerechte Ausgabe der Daten.
Alle Dienste werden in der Textdatei Whitelist.txt verwaltet. Werden Dienste nicht benötigt oder möchte man neue Brücken hinzufügen, müssen in dieser Datei einfach nur die entsprechenden Zeilen hinzugefügt oder gelöscht werden. Die Namen der Brücken entsprechen dabei den Dateinamen aus dem Unterordner Bridges ohne die Endung .php.

Autor des Projekts ist übrigens Sébastien Sauvage, der mit seinem minimalistischen Link-Teiler Shaarli und dem bereits hier vorgestellten ZeroBin dem ein oder anderen vielleicht nicht ganz unbekannt ist.

FreshRSS: Ein weiterer Aggregator für die eigene Datenwolke

Geschrieben von Steffen Schultz keine Kommentare
Kategorisiert in : Software Schlüsselwörter : OpenSource, PHP, RSS

Eigentlich bin ich kein Freund von Browser-Anwendungen und nutze für die meisten Aufgaben im Internet nach Möglichkeit immer noch echte Desktop-Clients. Irgendwann war ich es aber leid, zwischen meinen Rechnern die RSS-Feeds nicht komfortabel synchronisieren zu können. Also musste ein neuer Feed-Aggregator her, der zentral auf einem Webserver die Arbeit erledigt. Da ich aber nicht gleich das erstbeste und mittlerweile quasi Standard-Script Tiny Tiny RSS nehmen wollte, das mir zudem auch nicht wirklich zusagt, habe ich mal ein wenig tiefer gewühlt und stieß prompt auf eine sehr vielversprechende Lösung:
FreshRSS, a free, self-hostable aggregator

Eine wie ich finde gelungene Alternative zu Tiny Tiny RSS und co. Es handelt sich hierbei zwar weitgehend um ein Ein-Mann-Projekt, das vor allem im Bereich Dokumentation und Lokalisierung (derzeit sind nur die Sprachen Englisch und Französisch verfügbar) noch so einige Baustellen aufweist, doch der Programmcode ist bereits jetzt sehr gut nutzbar und wird ständig aktualisiert.
FreshRSS ist in PHP programmiert und nutzt zur Speicherung der Artikel entweder MySQL oder Sqlite als Datenbank. Es ist mehrbenutzerfähig und bietet neben einem klassischen Login auch die Anmeldung über Mozilla Persona an. Das Interface ist weitgehend selbsterklärend und erlaubt die sehr bequeme Verwaltung von Feeds und Einstellungen. Fast alles ist von überall in der Oberfläche erreichbar, verschachtelte Untermenüs gibt es nicht. FreshRSS hat für jeden Lesegeschmack genügend Optionen und Anpassungsmöglichkeiten, ohne dabei unübersichtlich zu wirken.
Die Aktualisierung der Feeds erfolgt entweder manuell bzw. halbautomatisch über die Oberfläche oder kann auch automatisch mittels Cronjob angestoßen werden. Hier sollte man aber beachten, dass der Aufruf des Update-Scripts standardmäßig nur über die Kommandozeile möglich ist. Wer hingegen das Update-Script nur über eine URL aufrufen kann, muss Lesezugriff auf den Unterordner "app" erlauben und die darin befindliche Datei .htaccess löschen bzw. eine entsprechende Anpassung vornehmen, damit nur das Update-Script von außen erreichbar ist.

Natürlich darf auch diesmal ein Wort zur Zugänglichkeit mit Screen-Readern nicht fehlen. FreshRSS ist weitgehend für unseren Benutzerkreis zu gebrauchen, hat aber auch auf diesem Gebiet noch einige Baustellen. So gibt es offenbar viele Grafiken, deren Alternativtexte nur mit unleserlichen Unicode-Symbolen versehen sind. Auch die enthaltene Tastaturnavigation, welche noch mehr die Bedienung der Oberfläche im Stil einer Desktop-Anwendung erlaubt, ist für uns nicht sinnvoll nutzbar. Hier schaffen aber ohnehin die meisten Bildschirmleser mit eigenen Navigationshilfen einen anderen Weg.

Artikel-Feed (RSS) dieser Tag