Donnerstag, 25. September 2008

Inhaltsverzeichnis in Blogger in chronologischer Reihenfolge

Nachdem ich nun die Reisebeschreibung meiner Neuseeland-Reise hier in meinem Blog abgeschlossen hatte stand ich vor der Frage: wie kann ich eine Liste aller Einträge zu einem bestimmten Label ( Neuseeland in meinem Fall ) erzeugen, und zwar in chronologischer Abfolge und nicht, wie standardmaessig in Blogs üblich, in chronologisch absteigender Reihenfolge ?

Zuerst dachte ich daran, einen RSS-Feed für mein gewähltes Label zu benutzen. Es zeigte sich, daß dies nicht so einfach möglich ist, es sei dann, man kennt sich mit den Blogger API’s aus, so wie phydeaux3: “Feeds for Labels in Beta Blogger”. Damit war es mir möglich diesen Feed zu generieren, dabei ergeben sich aber zwei Probleme: erstens ist dieser Feed natürlich nicht chronologisch sortiert und läßt sich auch nicht umsortieren, zweitens, viel schlimmer, beinhaltet er nicht alle meine Posts unter dem Label Neuseeland, sondern nur die letzten 25.

Somit mußte ich mir anders behelfen und kam wohl um etwas Programmierarbeit nicht rum. Zunächst mußte ich einen Weg finden, meinen Blog komplett abzuspeichern. Ich wählte schließlich diesen im Google Code Developer’s Guide beschriebenen Weg, um ein Backup meines Blogs in eine XML-Datei zu erzeugen ( siehe letzten Abschnitt in diesem Artikel: “Export Format” ). Diese XML-Datei wollte ich nun mit einem Perl-Programm auslesen unter Verwendung des Perl-Moduls XML::Parser. Dabei ergaben sich wieder zwei Probleme: die erstellte Datei war so schlecht formatiert, daß der gesamte Inhalt, auf den es mir ankam, in der letzten Zeile ( in einer Zeile ) verpackt ist, außerdem lagen wohl Formatierungs-Fehler vor, denn das o.g. Perl-Modul terminierte mit dem Fehler:

no element found at line 1, column 6, byte 6:
<link>
=====^
at c:/perl/lib/XML/Parser.pm line 187

Mit Hilfe des Programms Microsoft XML Notepad war ich dann aber in der Lage diese Datei fehlerfrei einzulesen und in einer verbesserten Version wieder als XML-Datei abzuspeichern. Sodann machte ich mich daran ein ganz herkömmliches Perl-Programm mit regulären Ausdrücken zu schreiben, das diese Datei einliest, die gewünschten Titel und URLs herausfiltert und in zwei Arrays abspeichert, diese dann umsortiert ( mit der Reverse-Funktion ) und den HTML-Code für ein Inhaltsverzeichnis in chronologischer Reihenfolge generiert, wie hier zu sehen. Dieses Perl-Programm ist hier verfügbar.

Keine Kommentare: