Skip to content
This repository has been archived by the owner on Jan 7, 2019. It is now read-only.

Scripte

Marian Steinbach edited this page Sep 19, 2013 · 16 revisions

Hier werden diverse Komandozeilen-Tools im Umfang von Offenes Köln beschrieben.

Alle Scripte sollten im Ordner scripts liegen. Sie werden normalerweise vom Hauptverzeichnis aus ausgeführt. Ausnahmen werden gesondert erwähnt.

generate_fulltext.py

Dient der Extraktion von Texten aus PDFs.

Ohne dieses Script würde die Suche nur über Metadaten (Titel, Kurzbeschreibungen) laufen.

Dieses Script sollte periodisch oder nach jedem Scrapen ausgeführt werden. Es greift auf die Datenbank zu und findet dort Einträge in der Collection attachments, die noch keine Volltext-Einträge haben oder deren Volltext-Einträge veraltet sind, weil sich die Datei geändert hat. Für diese Einträge werden dann die Volltexte extrahiert und in der Datenbank abgelegt.

Das Script greift auf das Programm pdftotext zu, das Bestandteil von XPDF ist.

Aufruf

python scripts/generate_fulltext.py

Es werden keine Kommandozeilen-Parameter benötigt.

generate_thumbs.py

Erzeugt Vorschaubilder zu Datei-Anlagen

Dieses Script sollte periodisch oder nach jedem Scrapen ausgeführt werden. Es durchsucht in der Datenbank die Collection attachments nach Einträgen, die bisher noch keine Vorschaubilder haben oder wo die Vorschaubilder veraltet sein könnten.

Die Vorschaubilder werden im konfigurierten Pfad im Dateisystem abgelegt. Hierbei werden Unterverzeichnisse angelegt, um in allen Dateisystemen einen performanten Dateizugriff zu gewährleisten.

Die Thumbnail-Erzeugung macht Gebrauch von Ghostscript.

Aufruf

python scripts/generate_thumbs.py

Bei einzelnen PDF-Dateien kann die Erzeugung von Thumbnails sehr lange dauern. Standardmäßig bricht der Vorgang nach 10 Sekunden (am jeweiligen Attachment) ab. Damit sollte es möglich sein, für die meisten vorkommenden Anhänge die Thumbnails zu erzeugen. Um manuell die Wartezeit zu erhöhen, kann der Parameter --timeout an der Kommandozeile eingesetzt werden.

So wird beispielsweise die Wartezeit auf 100 Sekunden herauf gesetzt:

python scripts/generate_thumbs.py --timeout 100

generate_georeferences.py

Erzeugt Geo-Referenzen zu Vorlagen

Das Script durchsucht alle Vorlagen (Collection submissions) nach Einträgen ohne Geo-Referenzen. Dort, wo keine vorhanden sind, durchsucht es den Volltext der zugehörigen Anlagen (attachments). Gefundene Geo-Referenzen werden zur submission hinzugefügt.

Geo-Referenzen sind im aktuellen Stadium sehr primitiv. Es wird einfach eine Liste der im Volltext gefundenen Straßennamen (in der kanonischen Schreibweise) geführt. Dies erlaubt jedoch, die entsrechenden Vorlagen über eine Suche nach dem kanonischen Straßennamen aufzufinden.

Das Script wird nach generate_fulltext.py ausgeführt, da es die hinterlegten Volltexte verarbeitet.

Aufruf

python scripts/generate_georeferences.py

Es werden keine Kommandozeilen-Parameter benötigt.

elasticsearch_import.py

Füllt den Index der Suchmaschine

Die Volltextsuche von Offenes Köln läuft über ElasticSearch (ES). Das Script elasticsearch_import.py erstellt bei jedem Durchlauf einen neuen ES-Index und import die für die Suche relevanten Inhalte aus MongoDB in diesen Index. Der bestehende Index bleibt während diesem Vorgang weiter nutzbar. Sobald der Import abgeschlossen ist, wird der alte Index entfernt und der neue Index für die Suche genutzt.

Das Script sollte immer dann ausgeführt werden, wenn durch Scrapen neue Inhalte hinzu gekommen sind. Zuvor sollten allerdings generate_fulltext.py und generate_georeferences.py gelaufen sein, da diese zusätzliche Inhalte für die Suche generieren.

Aufruf

python scripts/elasticsearch_import.py

Es werden keine Kommandozeilen-Parameter benötigt.

generate_submissions_rss_feed.py

Erzeugt RSS-Feed der Vorlagen

Dieses Script generiert einen RSS-Feed mit den neusten Vorlagen (submissions). Es sollte daher periodisch oder nach dem Scrapen ausgeführt werden. Das Ergebnis wird als statische XML-Datei im /static/ Verzeichnis abgelegt, wo sie von Webnutzern abgerufen werden kann.

Die jeweils vorhandene XML Datei wird nur dann überschrieben, wenn neue Inhalte vorhanden sind. So wird der unnötige Abruf der Feed-Datei durch Clients unterbunden.

Aufruf

python scripts/generate_submissions_rss_feed.py

Es werden keine Kommandozeilen-Parameter benötigt.

generate_xml_sitemaps.py

Erzeugt XML-Sitemaps für Vorlagen (submissions) und Anhänge (attachments)

Für die bessere Indexierung der Inhalte durch Suchmaschinen werden XML-Sitemaps mit allen URLs von Anhängen und Vorlagen generiert.

Dieses Script sollte nach einem Scraper-Durchlauf ausgeführt werden.

Aufruf

python scripts/generate_xml_sitemaps.py

Es werden keine Kommandozeilen-Parameter benötigt.

generate_data_dump.py

Erzeugt statische Daten-Dumps

Hiermit werden die Daten-Dumps generiert, die im Web unter /daten/ angeboten werden. Das Script erzeugt Dumps für alle öffentlichen MongoDB Collections, packt diese in einem .tar.bz2 Paket und schiebt dieses an die richtige Stelle.

Das Script kann so oft ausgeführt werden, wie es notwendig erscheint. Die Dumps werden mit Datum im Dateinamen versehen. Es wird davon ausgegangen, dass maximal einmal täglich ein Dump erzeugt werden soll.

Aufruf

python scripts/generate_data_dump.py

Es werden keine Kommandozeilen-Parameter benötigt.

export_attachments.py

Exportiert die Datei-Anhänge für einen bestimmten Datumsbereich

Mit diesem Script können bei Bedarf alle Attachments, die in einem bestimmten Datumsbereich gescrapet wurden, aus der Datenbank in ein .tar.bz2 Archiv exportiert werden. So können beispielsweise neue Attachments zur Sichtung effizient vom Server herunter geladen werden.

Aufruf

So können alle Attachments, die in Januar/Februar 2013 geändert wurden, exportiert werden:

python scripts/export_attachments.py 201301-201302

Alle Attachments, die ab dem 14. März 2013 geändert wurden, exportieren:

python scripts/export_attachments.py 20130314-

Alle Attachments, die im Februar 2013 geändert wurden, exportieren:

python scripts/export_attachments.py 201302

Mit dem Parameter -v kann die Ausgabe von Informationen aktiviert werden.

remove_thumbs.py

Löscht alle Vorschaubilder aus der Datenbank

Ein Helferlein zum Entfernen aller Thumbnail-Einträge aus der Datenbank. Die eigentlichen Thumbnail-Dateien im Dateisystem werden nicht gelöscht - das geht einfach mit rm -r webapp/static/thumbs/*.

Aufruf

python scripts/remove_thumbs.py

db_stats.py

Gibt Statistiken über die Datenbank-Inhalte aus

Aufruf

python scripts/db_stats.py

depublish_attachment.py

Depublizieren eines Anhangs

Hiermit werden Anhang-Dateien aus der Datenbank gelöscht, entsprechende Volltexte und Thumbnails aus der Datenbank entfernt und Informationen über die Depublikation in der Datenbank hinterlegt.

Das Script erwartet drei Parameter.

  • -id: Die ID des Attachments
  • -c: Den Code für den Grund, warum das Attachment entfernt wird
  • -m: Eine ausführliche Erläuterung. Dieser Text wird Endnutzern angezeigt und sollte möglichst informativ und verständlich sein.

Mögliche Codes:

  • COPYRIGHT: Steht für einen Fall, in dem ein Rechteinhaber die Entfernung veranlasst hat
  • COPYRIGHT_RISK: Dies ist für Fälle, in denen wir vorsorglich entfernen, um nicht belangt werden zu können
  • NONPUBLIC_DOCUMENT: Für Dokumente, die irrtümlich als öffentlich gekennzeichnet wurden
  • PRIVACY: Wenn das Dokument das Recht eines Individuums auf informationelle Selbstbestimmung verletzt, also unerwünscht private Daten einer Person freigibt.

Aufruf

python scripts/depublish_attachment.py -id 515f2d4bc9791e3320c0ef14 -c COPYRIGHT_RISK -m "Lange Geschichte..."