Du bist hier:Start»Javascript»Greasemonkey»Bewertungen

Online-Bewertungen in andere Webseiten einbauen

15.05.2015

Thumbs Up

[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

ohne Greasemonkey
heise.de ohne Greasemonkey
mit Greasemonkey
heise.de mit Greasemonkey

heise.user.js installieren

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

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

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:

2650145 2 0
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:

# add the following line at the top of securimage.php and
# 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.

Kommentar schreiben

Ihre Daten werden verschlüsselt übertragen. Der Kommentar wird gelesen und eventuell veröffentlicht.
Wenn der Inhalt des Kommentars oder Teile des Kommentars nicht veröffentlicht werden, dann werden die gespeicherten Daten nach maximal 4 Wochen gelöscht. Um zukünftigen Missbrauch der Kommentarfunktion zu verhindern, werden die zum Kommentar gehörenden IP Adressen maximal 4 Wochen gespeichert.