Feed-Items aus dem Google Reader Cache löschen (oder zumindest überschreiben) 10.04.2009
Der Google Reader ist ein sehr beliebter, und meiner Meinung nach sehr guter Feed-Reader.
Ein sehr cooles Feature ist der Cache, der es den Lesern ermöglicht, bis zum Zeitpunkt des ersten Abonnieren eines Feeds beim Google Reader zurück zu scrollen.
Ein Problem macht dieser Cache jedoch: Es ist für Feed-Publisher nicht ohne Weiteres möglich einmal gecachte Einträge wieder zu löschen. Was einmal rein geht, bleibt also für immer drin.
Das ist schon ärgerlich, wenn man ggf. irgendwie doppelten Inhalt, Testeinträge, Spam, unbezahlte ungekennzeichnete Werbung, versehentlich zu früh veröffentlichte Einträge, Postings mit wüsten Beschimpfungen, Postings im stark alkoholisierten Zustand annähernd ohne Grundregeln der Grammatik oder Sinn, Einträge der neuen Ex-Freundin mit »Arschloch. Die Bank PIN lautet: 5543« – oder sonst wie unerwünschte Inhalte – hat, die nun auf Ewigkeit von jedermann abrufbar bleiben.
Ich hatte mir vor ein paar Tagen selbst ein kleines Problem gemacht, indem ich die Subdomain eines Blogs entfernen wollte. Mittels permanent Redirect und die entsprechenden Einstellung in der Software zu ändern, dachte ich, wäre alles in Butter. Leider war dem nicht so.
Durch die Änderung der guid der Feed-Items von www1.domain.com auf domain.com sahen alle Einträge für den Google Reader nach neuem Content aus, und ZACK! hatte ich 10 doppelte Einträge, die ich quasi nie wieder rausbekomme. Sieht ganz schön doof aus.
Nun, ein kleiner Workaround ist mir zumindest eingefallen:
Wenn ein Feed-Item seinen Inhalt ändert, wird dieser im Cache zumindest aktualisiert. Man kann also z.B. bei doppelten oder sonstwie unerwünschten Einträgen den Titel auf »gelöschter/doppelter Eintrag« und den Inhalt auf »-« setzen.
Hierzu müssen die Einträge einfach nochmal mit der gleichen guid im Feed erscheinen.
Die meiste Software, die ich kenne, die Feeds erzeugt, zeigt jedoch nur die letzten X Items, einzelne ältere wieder reinzuladen ist so nicht einfach möglich (es macht ja für normale Feed-Reader auch garkeinen Sinn).
Man kann das jedoch gut lösen, ohne die Software anzutasten. Dazu legt man von Hand eine Datei delete_items.xml mit einer Feed-Struktur an. Als Vorlage bietet sich der eigentliche Feed an, den man dann mit find-replace bearbeiten kann kann, bis es passt.
Man legt nun die zu löschenden Items mit zugehöriger guid (ganz wichtig!) an, wobei man den title und die description auf gewünschtes ändert.
Sieht dann etwa so aus:
...
<item>
<title>gelöschter doppelter Eintrag</title>
<link>http://domain.tld/permalink.htm</link>
<description> -
</description>
<comments>http://domain.tld/permalink.htm#comments</comments>
<pubDate>Wed, 08 Apr 2009 18:51:03 +0200</pubDate>
<dc:creator>Dominic</dc:creator>
<guid isPermaLink="false">681 at http://domain.tld</guid>
</item>
...
Nun muss man diesen frisierten Feed noch dem Google Reader vorwerfen.
Recht einfach und relativ weit nutzbar geht das, indem man die eigentliche URL des Feeds per mod_rewrite für kurze Zeit und nur für den Google Reader (der sich mit passendem User-Agent meldet) auf die gerade angelegte Datei delete_items.xml umleitet.
Behilflich dürfte dafür dieser Code sein, den man in eine .htaccess tun kann:
RewriteCond %{HTTP_USER_AGENT} ^Feedfetcher-Google.*
RewriteRule ^rss.xml delete_items.xml [NC,L]
Dieser sorgt dafür, dass nur der Google-Feedfetcher unter der Feed-URL unsere statische Datei serviert bekommt. Andere Feed-Reader werden in der Zwischenzeit also nicht beeinträchtigt (es sei denn, sie lügen uns mit dem User-Agent an).
Nun muss der Google-Feedfetcher nurnoch vorbei schauen. Beschleunigen kann man das, indem man den Feed selbst im Google Reader abonniert (hat man vermutlich, sonst würde man um die Problematik ja nicht wissen ;) ), und auf »aktualisieren« klickt.
Nachdem die Einträge überschrieben wurden, kann und sollte man den obigen Code wieder aus der .htacces entfernen oder auskommentieren (wer weiß, könnte man ja wieder gebrauchen), damit das normale Feed-parsen nicht aus dem Takt kommt.
Guten Appetit!
Kommentare
harhar das klingt mal umständlich für nen blöden cache eintrag
Kommentar hinzufügen