Online-Bewertungen in andere Webseiten einbauen
15.05.2015

[Update März 2018]: Mittlerweile habe ich das CAPTCHA erneuert und das Greasemonkey-Skript aktualisiert.
Die Nachrichten-Website heise.de veröffentlicht Online-Artikel aus dem Bereich der Informations- und Telekommunikationstechnik. Da Heise-Online eine große Anzahl Meldungen pro Tag veröffentlicht, kann eine Bewertung der Relevanz einer Meldung hilfreich sein um interessante Meldungen herauszufiltern. Wie können Bewertungen "von außen" auf eine Nachrichten-Website eingefügt werden ? Mit der Erweiterung Greasemonkey für den Firefox-Webbrowser und dem Userscript heise.user.js lassen sich Bewertungen zu den Artikeln anzeigen und abgeben.
Vergleich mit und ohne Greasemonkey


Ein grüner Balken unter einem Artikel deutet auf einen interessanten Bericht hin, ein roter auf einen inhaltsarmen Bericht und ein Artikel mit einem gelben Balken wurde noch nicht bewertet. Bei den Bewertungen soll die Relevanz der Artikel im Vordergrund stehen. Eine eigene Bewertung kann auf der entsprechenden Artikelseite unterhalb der Meldung abgegeben werden.

Meldung bewerten
Die Bewertungsabfrage wird durch das Greasemonkey-Skript unterhalb der Meldung und über dem Link zu den Kommentaren eingefügt. Um potentiellen Spam etwas einzuschränken, habe ich ein CAPTCHA von Securimage eingebaut. Nach der Auswahl, ob die Meldung relevant ist, und nach Eingabe des CAPTCHAs wird die Bewertung gezählt. Die Bewertung wird an meinen Server übertragen und in einer Datei zusammen mit den bisherigen Bewertungen gespeichert. Diese Datei wird später für die Darstellung der farbigen Balken unterhalb der Meldungen geladen.
Download
Das Userscript kann auf der folgenden Seite heruntergeladen und als Quellcode betrachtet werden.
Ausblick
Das Konzept mit Greasemonkey und den externen Bewertungen könnte auch auf andere Nachrichten-Websites wie zum Beispiel spiegel.de angewendet werden. Denkbar sind außerdem Websites, die nichts mit Nachrichten zu tun haben und eine Bewertung benötigen könnten. Das Bewertungskonzept ist im Augenblick ein Experiment mit offenem Ausgang. Ich werde erst einmal abwarten, ob das Konzept angenommen wird und ob mein Website-Hoster für die Bewertungsabfragen gewappnet ist.
Technische Details
Das folgende Sequenzdiagramm gibt einen Überblick, wie das Greasemonkey-Skript funktioniert:

Sequenzdiagramm für Bewertungen mit Greasemonkey
Die URLs der Meldungen bei heise.de enden mit einer eindeutigen Meldungs-Nummer. Diese Nummer wird vom Greasemonkey-Skript benutzt um die Bewertung von einem Bewertungsserver zu laden. Damit nicht jede Bewertung einzeln vom Bewertungsserver geladen werden muss, wird eine bestimmte Anzahl an Bewertungen in einem Bündel geladen. Das soll die Belastung des Bewertungsservers reduzieren. Eine Bewertungsdatei sieht zum Beispiel folgendermaßen aus:
2650152 1 14
2650156 0 1
Für jede Meldung wird in die Bewertungsdatei eine Zeile eingetragen. In der Zeile steht zunächst die eindeutige Meldungs-Nummer gefolgt von den positiven und negativen Bewertungen. Das Greasemonkey-Skript erzeugt aus den Werten einen farbigen Balken und fügt ihn unterhalb der Meldung in die Webseite ein.
Wird eine Bewertung abgegeben, dann wird zunächst das CAPTCHA überprüft. Ist das CAPTCHA gültig, dann wird die Bewertung in der entsprechenden Bewertungsdatei gespeichert. Um die Bewertungsdatei konsistent zu halten, benutzt ein PHP-Skript auf dem Server den Befehl "flock" um gleichzeitige Dateizugriffe zu synchronisieren.
Das CAPTCHA ist eine quelloffene Implementierung in der Programmiersprache PHP von Securimage. Damit Securimage auch ohne Cookies funktioniert, habe ich die Session ID (SID) in der URL der Bewertungsseite übergeben und folgende Zeile in die PHP-Skripte eingetragen:
# securimage_show.php to disable cookies
ini_set("session.use_only_cookies", "0");
Viel Spaß beim Ausprobieren des Skripts ! Falls noch etwas unklar sein sollte, dann kannst du die Kommentar-Funktion benutzen.
Patches sind willkommen.