Vor einiger Zeit ist ja ein Torrent aufgetaucht, der ein Archiv der inzwischen auf Drängen der Zeitungs-Lobby zum großen Teil gelöschten Tagesschau-Website enthält. Dieses Archiv liegt zwar scheinbar leicht benutzbar in Form einer XML-Datei für jede einzelne Meldung vor, ist aber dennoch kaum brauchbar. Sicher, es handelt sich um wohlgeformtes XML, dieses erweckt allerdings den Eindruck, dass es als Export aus einer Software entstanden ist, die »mal eben« um die Möglichkeit zum XML-Export erweitert wurde, weil dieses Thema gerade so gehyped wurde, ohne dass besondere konzeptuelle Überlegungen bei dieser Funktionalität angestellt wurden, wie ein solcher Export in nützlicher und leicht verarbeitbarer Weise aufbereitet werden könnte. Oder kurz gesagt: Was einem aus diesen XML-Dateien entgegenschaut, das mag vielleicht für eine Handvoll spezieller Anwendungen – mit Sicherheit für das CMS, aus dem heraus sie entstanden sind – nützlich sein, nicht jedoch für eine »normale« Datenverarbeitung.
Ich bin in den letzten Tagen mehrfach aus recht unterschiedlicher Richtung angesprochen worden, ob ich diesen XML-Export nicht in ein »zugänglicheres« Format bringen könnte, das gezielte Suchen nach Themen und generell die Arbeit mit diesem recht riesigen (als tar.bz2-Archiv immerhin 133 MiB, ausgepackt gut 2 GiB) Textkörper ermöglicht. In diesen Gesprächen hätten sich die meisten Menschen eine einfache Datenbank mit den reinen Meldungstexten gewünscht, die frei von Ballast und Verwaltungsinformationen ist und sich gut für den Aufbau eines Webfrontends im lokalen Netzwerk eignet.
Deshalb habe ich ein Python-Skript geschrieben, das die Texte der Meldungen in eine MySQL-Datenbank importiert. Dieses Skript steht hier zum freien Download und ist von mir unter den Bedingungen der Piratenlizenz veröffentlicht, damit es den größtmöglichen Nutzen entfalte.
Download: Tagesschau-Importer.
Kurzanleitung
Ich setze bei den Interessierten voraus, dass sie wissen, wie eine Datenbank auf einem MySQL-Server angelegt wird und wie darin Nutzerrechte vergeben werden, oder dass sie doch zumindest wissen, wie sich solche Grundlagen nachlesen lassen. Ebenso setze ich voraus, dass sie wissen oder nachzulesen verstehen, wie man sich einen MySQL-Server, einen Python-Interpreter und das benötigte Python-Modul MySQLdb
für sein Betriebssystem installiert. Sowohl Python als auch das RDBMS MySQL stehen für jedes moderne Betriebssystem zur Verfügung, so dass das Skript beinahe überall nutzbar sein sollte. Ich habe es allerdings nur mit MySQL 5.0.x und Python 2.6.2 getestet, bei älteren Versionen kann es durchaus Probleme geben.
Nachdem die Datenbank angelegt wurde, ist der Rest recht einfach. Im oberen Teil des Skriptes stehen fünf Variablen, die an die lokalen Gegebenheiten angepasst werden müssen, in meiner Testumgebung sieht das so aus:
DBNAME="tagesschau" DBUSER="tagesschau" DBPASS="tagesschau" DBHOST="localhost" XMLDIR="./xml"
Die Variablen DBNAME
, DBUSER
, DBPASS
und DBHOST
sind die Zugangsdaten für die Verbindung zu verwendeten Datenbank, die Variable XMLDIR
gibt an, in welchem Verzeichnis die entpackten XML-Dateien liegen; es kann natürlich auch ein absoluter Pfad verwendet werden.
Nachdem diese Variablen mit dem jeweiligen Lieblingseditor an die lokalen Bedingungen angepasst wurden, kann das Skript gestartet werden – wie ein Skript gestartet wird, ist von Betriebssystem zu Betriebssystem unterschiedlich, ich mache das einfach an der Kommandozeile. Nach dem Start ist der Rechner mehrere Stunden lang damit beschäftigt, XML zu parsen und Meldungen in die Datenbank zu befördern.
Die gegenwärtige Version des Skriptes schlägt für einen kleinen Anteil der Meldungen aus verschiedenen Gründen fehl, und sie nimmt nur Meldungen mit Text (also keine reinen Video- oder Bildbeiträge aus dem CMS der Tagesschau) in die Datenbank auf, da die multimedialen Inhalte durch die umfangreichen Löschungen auf der ARD-Site verloren sind.
Die drei Datenbanktabellen werden automatisch angelegt, und wenn vorher Tabellen des gleichen Namens in der Datenbank existierten, denn werden diese Tabellen gelöscht. Bitte vorher darüber nachdenken und am besten eine eigene Datenbank für die alten Tagesschau-Meldungen benutzen!
Datenbank
Die Datenbank besteht aus drei Tabellen.
Tabelle: meldung
Die Meldungen.
meld_id
INT(10) UNSIGNED NOT NULL
Primärschlüsselmeld_pubdatum
DATETIME NOT NULL
Publikationszeitpunktmeld_kurztitel
VARCHAR(255)
Ein kurzer Text, der bei Tagesschau-Meldungen gewöhnlich in kleinerem Schriftgrad über dem Titel stehtmeld_internal_id
VARCHAR(16)
Eine interne ID aus den XML-Dateien, die ich für Debugging-Zwecke aufgenommen habe.meld_kurztext
TEXT
Ein meist kurzer Absatz, der den Meldungstext anreißt, manchmal leermeld_text
TEXT
Der Text der Meldung. Die einzelnen Absätze habe ich mit jeweils einer Leerzeile getrennt.meld_titel
VARCHAR(255)
Der Titel der Meldung, entspricht etwa dem, was man unter einer Schlagzeile versteht.
Auf den Feldern meld_kurztext
und meld_text
ist ein FULLTEXT-Index gelegt, um Volltextrecherchen zu ermöglichen. Auch weitere Indizes sind für die meisten Anwendungen hoffentlich sinnvoll angelegt.
Tabelle: kategorie
Bei den Tagesschau-Meldungen wurde ein System der Verschlagwortung benutzt, das ähnlich den »Tags« in typischen Blogsystemen ist. Diese Schlagwörter können auch für Recherchen nützlich sein, deshalb wurden sie in die Datenbank aufgenommen.
kat_id
INT(10) UNSIGNED NOT NULL
Primärschlüsselkat_name
VARCHAR(64) NOT NULL
Der Name der Kategorie, grundsätzlich in Kleinbuchstaben umgewandelt.kat_count
INT(10)
Die Anzahl Meldungen für diese Kategorie, dies kann nützlich sein, um die häufigsten Kategorien in einer Software oder einer Webanwendung anzuzeigen.
Tabelle: v_kat_meld
Verbindertabelle, welche die N-zu-N-Beziehung zwischen Meldungen und Kategorien abbildet.
v_kat
INT(10) UNSIGNED NOT NULL
Foreign Key für die Beziehung zukategorie.kat_id
v_meld
INT(10) UNSIGNED NOT NULL
Foreign Key für die Beziehung zumeldung.meld_id
Abschließender Hinweis (und Warnung)
Das Urheberrecht für die Meldungen der Tagesschau liegt bei der Tagesschau-Redaktion. Es ist ein Verstoß gegen das Urheberrecht, wenn man diese Meldungen – so bequem dies mit einer MySQL-Datenbank auch gehen mag – in das öffentlich zugängliche Internet stellt, und es wird völlig sicher einen sehr unerfreulichen Schriftverkehr mit der Rechtsabteilung der ARD und den juristischen Beauftragten jener Verleger- und Baumbestempler-Lobby haben, die so viel Mühe darauf verwendet haben, diese von Gebührenzahlern finanzierten Inhalte von ihren Freunden und Speichelleckern aus der classe politique aus dem deutschen Internet entfernen zu lassen. Neben dem unerfreulichen Schriftverkehr wird es zu zivilrechtlichen Forderungen kommen, die finanziell schmerzhaft werden können. Deshalb sollten die alten Meldungen der Tagesschau niemals im Internet veröffentlicht werden, auch wenn ein paar hundert Zeilen PHP für diesen Zweck ein leichter Hack sind, wenn diese Meldungen erst einmal in einer MySQL-Datenbank vorliegen.
Ich habe zu diesem Vorgang natürlich auch eine marginalisierte und möglicherweise irrelevante Meinung, die natürlich nichts an der Illegalität einer Zweitveröffentlichung der alten Tagesschau-Inhalte ändert.
Der Versuch der Verleger- und Zeitungs-Lobby, die Löschung solcher Inhalte aus dem Internet zu erzwingen, die von der Allgemeinheit über die Rundfunkgebühren bezahlt wurden, nur damit die Verleger- und Zeitungs-Lobby im Internet mit ihren Archiven so etwas wie ein »Alleinstellungsmerkmal« hat, drückt eine Verachtung gegenüber den Menschen in Deutschland aus, welche die Menschen in Deutschland der Verleger- und Zeitungs-Lobby zurückgeben sollten. Übrigens bemerkt die Verleger- und Zeitungs-Lobby die Verachtung am schnellsten, wenn diese finanziell spürbar wird; und so ein Zeitungsabo ist schnell abbestellt und auf die Morgenlektüre von größtenteils aus dem NITF-Ticker der großen Agenturen abgeschriebenen Meldungen kann man leicht und ohne besonderen Schmerz verzichten. Sollte sich die Journaille allerdings jemals darauf besinnen, dass im Zeitalter quasi lichtschneller Medien nicht die Jagd nach dem Selbstzweck der Aktualität ein angemessener Maßstab für die Qualität ist, sondern das Erschließen von Hintergründen und größeren Zusammenhängen (natürlich ist so etwas niemals frei von Meinung, und das soll es auch gar nicht sein – aber die jetzige scheinbare »Sachlichkeit« ists ja auch nicht), denn braucht sie auch kein mit politischer Einflussnahme, Gewalt und Verachtung gegenüber den Menschen in Deutschland durchgesetztes »Alleinstellungsmerkmal« mehr, da sie ihr Alleinstellungsmerkmal aus der geänderten Haltung heraus selbst entwickeln wird. Ob es jemals dazu kommen wird? Es hängt wesentlich davon ab, wie sehr der Journaille die so breit ausgeteilte Verachtung der Menschen in Deutschland zurückgegeben wird, indem auf den Kauf ihrer Produkte verzichtet wird.
Pingback: PHP-Anwendung für die Tagesschau-Datenbank | Elias Schwerdtfeger
Pingback: Entlöscht die Tagesschau! « Wut!
Pingback: Loig « Fraktale Welten
Pingback: Tag des Deutschen Butterbrotes « Wut!