gedcom2html: Konvertierung von gedcom nach HTML


(Tip für die ganz Ungeduldigen: am Ende dieses Artikels das Python-Programm downloaden und ausprobieren!)
Ein Brief aus dem letzten Jahrhundert
Am 26.02.1945 schrieb die 33-jährige Krankenschwester Lotte V. aus Dresden an ihre Mutter:


Liebe Mutter!
Heute zieht nun die Zuckerstation in ein Hilfskrankenhaus ins Randgebiet der Stadt. Ich bleibe hier. Wir wollen, wenn die Russen nicht kommen, hier wieder verglasen. Die Häuser sind zum Teil noch nicht so schlimm kaputt. Wenn gleich weider aufgebaut wird, geht es noch. Wie wird es euch gehen? Ihr habt sicher viel an mich gedacht. Seit den Angriffen (4 innerhalb 24 Stunden) waren die Biester noch nicht wieder hier. Alarm ist öfter. – Heute Nacht war Sturm, und in unserem Keller, wo wir schlafen, klang es grausig. So ein Gepolter. Die Ruinen fallen noch vollends zusammen. Schw. El. hat sich die Kniescheibe ausgeschnappt und hinkt. Es ist aber nicht so schlimm. Man wundert sich überhaupt, daß die Leute nicht mehr krank werden. Seit zwei Tagen haben wir nämlich erst wieder ein Wärmeöfchen. Sonst ganz ohne Heizung. Dafür aber hab ich es zu einem Trainingsanzug gebracht. Da bin ich wenigstens von unten her warm.

Verloren hab ich eigentlich nur ein Nachthemd und ein paar alte Schuhe, ein paar Fotos, den Wäschebeutel mit bißchen Wäsche. Und ein paar Bücher, medizinische! Ja,- und am meisten ärgern mich die warmen Hausschuhe! Daß ich die nicht schnell noch schnappen konnte! Das ärgert mich zu sehr. Aber wo mein Zimmer ist, da ist ein großes Loch. Volltreffer! Es ist gut, daß ich die Wollhose bei Alarm immer angezogen habe. –

Gestern hat uns einer sogar Maiglöckchen geschenkt. Und Schw.El. und ich haben uns Tee gekocht, auf einer gelben Leinendecke mit Meißner Porzellan und Maiglöckchen inmitten Trümmern! Eine närrische Situation.

Unser Stationsarzt, ein Österreicher, ist getürmt in der Angriffsnacht. Kein Mensch weiß, wohin, ein Schweinehund! Und etliche Schwestern auch. Wenn man sie findet, werden sie erschossen, das ist jetzt sehr streng. Auch die Plünderer werden erschlagen.

So, – nun lebt schön wohl!

Herzliche Grüße, Eure Lotte.

Diesen beeindruckenden Brief fand ich in den Aufzeichnungen meines Onkels Hans V. wieder, der mit großem Aufwand einen Stammbaum seiner Familie erstellt hatte. Mit den wenigen Hilfsmitteln, die ihm damals als Bewohner der DDR zur Verfügung standen, hat er eine Unmenge an Daten über die Verwandten zusammengetragen. Hans V. hat in Kirchenbücher, Briefe und Postkarten von Lebenden und Verstorbenen seiner Familie geschaut und daraus das Wesentliche in Datenblättern für die Nachwelt zusammengefaßt. Nicht nur schriftliche Aufzeichnungen, sondern auch Gespräche mit den Lebenden und deren Erinnerungen ergänzten seine Informationen über die Vorfahren.

gramps: das Stammbaumprogramm der Mormonen

Zu seinen Lebzeiten gab es leider noch nicht die Möglichkeiten, die uns heute die Datenverarbeitung bietet. Datenbanken, Internet und Programmiersprachen sind für heutige Genealogen zu unverzichtbaren Hilfsmitteln geworden. Eine Unmenge an kommerziellen, aber auch frei verfügbaren Programmen stehen dem Ahnenforscher zur Verfügung. Erwähnen möchte ich hier nur das Programm gramps, das im Internet kostenlos runtergeladen werden kann und dem Benutzer eine Unmenge an Möglichkeiten bietet. Hervorzuheben ist bei gramps:

  • es wurde mit Python geschrieben
  • seine GUI ist höchst bedienerfreundlich
  • es bietet alle nur denkbaren Schnittstellen in die Außenwelt, von gedcom über geneweb bis zu schlichten CSV-Dateien
  • gramps erstellt zahlreiche Reports und erstellt auf Wunsch auch eine komplette HTML-Website,
  • gramps berücksichtigt den Datenschutz und die Privatsphäre auf verschiedenen Levels,
  • gramps ist einfach zu installieren und in den meisten Linux-Distributionen heutzutage schon enthalten,
  • gramps wird weiterentwickelt und es gibt User-Foren für Fragen der Anwender.

Mit der Zeit wachsen natürlich die Ansprüche an ein solches System. So bietet gramps zwar eine HTML-Schnittstelle, stellt einen Ahnenbaum aber nur bis zur Tiefe 5 als HTML-Datei dar. Hat man mehr als 5 Generationen, so ist man auf Eigenprogrammierung angewiesen, vor allem auch deshalb, weil die auf dem Markt verfügbaren Programme nicht im Sourcecode erhältlich sind und darüberhinaus meistens nicht das vom Anwender gewünschte Outfit haben.


Ich habe mir daher die Mühe gemacht, ein kleines PYTHON-Programm zu schreiben, das in der Lage ist, einen Ahnenbaum mit beliebig vielen Generationen als HTML-Datei darzustellen. Ich habe das Programm gedcom2html genannt, weil es seinen Input aus einer GEDCOM-Datei bezieht.

Wer bereits über irgendein Programm verfügt, das einen Stammbaum erstellen kann, wird den Begriff GEDCOM sicher schon gehört haben. GEDCOM ist eine Art Protokoll, eine Vorschrift für den Aufbau einer Datei, die einen Stammbaum enthält. Der Vorteil einer solchen Datei liegt auf der Hand: zum einen befinden sich die Daten des Stammbaums dann nicht in einer proprietären Datenbank (mysql, Oracle oder Informix), von wo sie erst mittels irgendwelcher export-Programme extrahiert werden müssen, zum anderen ist die GEDCOM-Datei eine flache ASCII-Datei, d.h. man kann sie mit jedem handelsüblichen Editor lesen (sogar mit Word!). Wer seine Daten in GEDCOM-Format vorliegen hat, kann sie auf diese Weise in jedes andere Stammbaum-Programm importieren.

Das Programm gedcom2html wertet also die Daten einer GEDCOM Datei aus. Das Ergebnis ist eine HTML-Datei, die mit jedem Browser angezeigt werden kann (Explorer, Firefox, Opera, Chrome). Und weil man auf der Browseroberfläche beliebig große Bilder mit den Scrollbars hin- und herschieben kann, ist hier dem Betrachten von beliebig vielen Generationen in einem solchen Ahnenbaum keine Grenze gesetzt (ein etwas größerer Bildschirm ist allerdings Voraussetzung für eine sinnvolle Nutzung des Programms).

So sieht GEDCOM aus

Eine typische GEDCOM-Datei sieht am Beginn etwa so aus:

0 HEAD
1 SOUR GRAMPS
2 VERS 3.1.2-1
2 NAME GRAMPS
1 DATE 14 JAN 2011
2 TIME 16:25:11
1 SUBM @SUBM@
1 FILE /home/cw/STAMMBAUM/gramps/stammbaum.ged
1 COPR Copyright (c) 2011 .
1 GEDC
2 VERS 5.5
2 FORM LINEAGE-LINKED
1 CHAR UTF-8
1 LANG German
0 @SUBM@ SUBM
1 NAME Not Provided
1 ADDR Not Provided
2 CONT Not Provided
0 @I0000@ INDI
1 NAME Christian /Sommerfett/
2 GIVN Christian
2 SURN Sommerfett
1 SEX M
1 BIRT
2 TYPE 20:20 in der Stählerschen Privatklinik
2 DATE 11 JUL 1947
2 PLAC Siegen
1 NCHI 3
1 IDNO 1
1 FAMC @F0004@
1 FAMS @F0003@
1 OBJE
2 FORM jpeg
2 TITL cw_an_der_tafel_1968_Mai_08
2 FILE /data/data1/views/SCANs/CW/cw_an_der_tafel_1968_Mai_08.jpg
1 OBJE
2 FORM URL
2 TITL no title
2 FILE www.vonhaeftens-blog.de
1 NOTE @N0000@
1 CHAN
2 DATE 1 JAN 1970
3 TIME 01:00:00
0 @I0001@ INDI
1 NAME Matthias /Sommerfett/
2 GIVN Matthias
2 SURN Sommerfett
1 SEX M
1 BIRT
2 DATE 5 JUN 1953
2 PLAC Siegen
1 FAMC @F0004@
...................................

Man muß nicht unbedingt Programmierer sein, um den Sinn dieser Anweisungen zu verstehen. Aber wie immer bei solchen scheinbar einfachen Aufgaben liegt der Teufel im Detail. Fehlende Angaben (nicht immer weiß man, wo oder wann jemand gestorben ist), unterschiedliche Datumsformate und insbesondere die Darstellung des binären Ahnenbaums mittels der table-Anweisung von HTML machen dem Programmierer bei dieser Aufgabe das Leben schwer. Um es gleich vorwegzunehmen: die Arbeit wird um einiges leichter, wenn die Daten in Form einer SQL-Datenbank vorliegen. Ich rate also jedem, der ein ähnliches Programm schreiben will, die Stammbaumdaten zunächst in eine relationale Datenbank einzulesen, um sie dann mittels SELECT-Befehl an das zu schreibende HTML-Konvertierungsprogramm zu übergeben. Das ist allemal leichter als sich mit verrückten regulären Ausdrücken herumzuquälen.

Download des gedcom2html.py Programms

Den Sourcecode des Programms können Sie hier herunterladen:

Download gedcom2html.py
Sie können das Programm jederzeit weiterentwickeln, verändern und für eigene Zwecke einsetzen. Beachten Sie aber, daß es der GNU GPL unterliegt. Die Aufrufsyntax von gedcom2html ist:

python gedcom2html.py -i gedcom_datei -a anzahl_generationen

Bitte denken Sie bei der Anwendung dieses Programms daran, daß sich die Anzahl der darzustellenden Personen von Generation zu Generation verdoppelt: die 5.Generation Ihrer Vorfahren besteht noch aus 25 = 32 Personen, bei der 10.Generation sind es aber schon 1024, ab da wird die Sache schon recht unübersichtlich und Ihr Browser wird sich irgendwann an diesem gewaltigen Bissen verschlucken und abstürzen. Also: bis zur 7. Generation ist die Sache noch darstellbar, danach sollte man den Ursprung des Baumes einfach um eine Generation nach hinten verschieben.

Dieser Beitrag wurde unter Programmierung abgelegt und mit , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

3 Antworten zu gedcom2html: Konvertierung von gedcom nach HTML

  1. vonhaeften schreibt:

    Ich habe den import von myfunctions.py entfernt und die Funktionen in den Sourcecode von gecom2html eingefügt, die ursprünglich in der Datei myfunctions.py lagen. Jetzt müßte es also auch ohne myfunctions klappen! Der Zusatz „.odt“ am Dateinamensende bedeutet nur, daß WordPress eine Textdatei mit der Endung „.py“ nicht zum Hochladen akzeptiert. Nach dem Download ist die Datei aber wirklich eine reine ASCII-Datei, man sollte sie nur noch in gecom2htl.py umbenennen, um sie als Python-Code zu kennzeichnen.

  2. Daniel schreibt:

    Hallo, ich weiß dieser Beitrag ist schon etwas älter.
    Ich habe es auch versucht zu verwenden, bin nur mäßig weiter gekommen.
    Um das Programm zu starten muss zuerst einmal das ODT mit Libre Office oder Open Office geöffnet werden. Alternativ funktioniert auch Word mit den korrekten Import filtern.
    Danach muss man den Inhalt in eine Textdatei kopieren (z.b. mit notepad) und sie unter gedcom2html.py speichern. jetzt kann man das ganze wie oben beschrieben starten.
    Allerdings kommt bei mir dann der Fehler, dass er myfunctions nicht findet. diese werden vom python skript benötigt aber nicht geliefert. Es wäre schön, wenn die noch ins Skript integriert werden könnten.

    Viele Grüße
    Daniel

  3. Jörg Barisch schreibt:

    Hallo,
    das Python Programm ist als „ODT“ und nicht als „PY“ gespeichert. Ich kann das Programm/Skript mit Python nicht ausführen!
    Über eine kurze Info wäre ich sehr dankbar!
    Gruß
    Jörg

Hinterlasse einen Kommentar