Nachdem ich ja leider den alten Blog-Servern mitsamt Backups verloren hatte habe ich mir mal Gedanken drüber gemacht, ob ich nicht doch noch irgendwie an die meisten alten Blog-Einträge ran komme. Stellt sich raus, dass die RSS-Feeds, die die Blog-Software produziert, alle auf web.archive.org verfügbar waren und dass besagte Blog-Software auch in der Lage ist, die wieder zu importieren. Das macht zwar viele Links kaputt, Formatierungen teilweise auch und natürlich fehlen fast alle alten Bilder, aber besser als nichts. Allerdings gab es da ein kleines Problem: Die RSS-Snapshots sind von verschiedenen Daten, und natürlich überschneiden die sich etwas. Sprich, hätte ich die einfach alle so importiert, dann hätte ich mich danach ein paar Stunden lang durch doppelte Einträge klicken dürfen, und das war mir zu doof. Zum Glück war ich mir ziemlich sicher, dass alle alten Blog-Einträge eindeutige Titel hatten. Also eine recht triviale Lösung: Ich parse alle alten Feeds, berechne aus dem Titel eines Eintrags einen Hash, kopiere den Eintrag unter dem Hash-Namen in ein Verzeichnis (wenn dann der selbe Eintrag ein zweites Mal kommt wird das bestehende File überschrieben) und wenn ich für alle Feeds durch bin, baue ich die Einträge in ein einzelnes RSS-File ein.

Als ich jetzt schon awk, grep etc. auspacken wollte, ist mir zum Glück eingefallen, dass es ja eine nette kleine Software mit Namen XMLStarlet gibt. Und mit der geht das relativ trivial:

1
2
3
4
5
6
#/bin/bash
entrydir=/tmp/rss-entries
xmlstarlet sel -t -m "//item/title" -v . -n  $1 | while read title; do
  entryhash=$(echo $title | md5sum | awk '{print $1}')
  xmlstarlet sel -t -m "//item[title='$title']" -c . $1 > $entrydir/$entryhash
done

Die Leute, die mein Blog hauptsächlich via RSS-Feed lesen, haben jetzt übrigens ein Problem: Die alten Einträge tauchen jetzt in der Feed-Übersicht ganz vorne auf. Tut mir leid. Ehrlich!