Skip to content

Meine Stadt auf Politik bei Uns

Ernesto Ruge edited this page Feb 21, 2015 · 3 revisions

Politik bei Uns ist eine offene Plattform, bei grundsätzlich jede Stadt online gehen kann. Das einzige, was dafür benötigt wird, ist ein funktionierender Scraper mitsamt der Konfiguration.

Der Scraper

In dem OpenRIS-Scraper Projekt hier auf Github befindet sich ein Scraper, welcher SessionNet (ASP und PHP) sowie in einer frühen Alpha auch AllRis unterstützt. Um eine Stadt mit diesen beiden Ratsinformationssystemen online zu bringen, brauchen wir also diesen Scraper, um die Konfiguration zu erstellen.

Eine Installationsanleitung mitsamt eines Installer Scriptes für Scraper und Webinterface findet sich ebenfalls auf Github. Wenn die Stadt ein anderes RIS einsetzt, muss das passende Scraper-Modul dazu erst entwickelt werden. Dort freuen wir uns auf Code!

Die Scraperkonfiguration

Die Konfiguration befindet sich in der MongoDB und kann über http://ubunturechner:23000/admin/bodies in einem Webinterface verändert werden.

Basiskonfiguration

Diese Werte müssen in jedem Fall angepasst werden.

  • "county" - der Landkreis, bei einer kreisfreien Stadt die Stadt selbst.
  • "base_url" - die Original URL, also z.B. bei Bochum "https://session.bochum.de/bi/"
  • "type" - der Typus. Im Moment funktionieren "sessionnet-asp" und "sessionnet-php"
  • "name" - Name der Stadt
  • "rgs" - Regionalschlüssel der Stadt, eine 10stellige Nummer. Findet man via Google, 059110000000 für Bochum

Dereferenzierungen

Um die Daten zu vereinheitlichen, müssen einige Daten dereferenziert werden. Dies geschieht in den Variablen "result_strings", "party_alias" und "paper_type_strings".

result_strings

Diese Variable beinhaltet die Ergebnisse von einzelnen Beratungen. Städte sind recht kreativ in der Beschreibung der Ergebnisse, meist können die Beratungsergebnisse aber vereinheitlicht werden. Erwartet wird eine Liste aus Listen, welche in der ersten Position den Original-String, in der zweiten Position den abstrahierten String haben. Zum Beispiel für Bochum:

 "result_strings": [
        [
          "Die Anfrage wird schriftlich beantwortet.", 
          "ANFRAGE_ANTWORT_SCHRIFTLICH"
        ], 
        [
          "Die Anfrage ist schriftlich beantwortet worden.", 
          "ANFRAGE_BEANTWORTET_SCHRIFTLICH"
        ], 
        [
          "Die Anfrage ist mündlich beantwortet worden.", 
          "ANFRAGE_BEANTWORTET_MUENDLICH"
        ], 
        [
          "Die Anfrage ist zurückgezogen worden.", 
          "ANFRAGE_RUECKZUG"
        ], 
        [
          "Die Mitteilung wird zur Kenntnis genommen.", 
          "MITTEILUNG_KENNTNIS"
        ], 
        [
          "Die Vorlage wird ohne Votum weitergeleitet.", 
          "VORLAGE_WEITERLEITUNG"
        ], 
        [
          "Die Entscheidung über die Vorlage wird zurückgestellt.", 
          "VORLAGE_ZUERUECKGESTELLT"
        ], 
        [
          "Die Verwaltung zieht die Vorlage zurück.", 
          "VORLAGE_RUECKZUG_VERWALTUNG"
        ], 
        [
          "Die Vorlage wird zurück überwiesen.", 
          "VORLAGE_UEBERWEISUNG_ZURUECK"
        ], 
        [
          "Die Vorlage wird an x überwiesen.", 
          "VORLAGE_UEBERWEISUNG"
        ], 
        [
          "Die Vorlage wird von der Tagesordnung abgesetzt.", 
          "VORLAGE_ABGESETZT"
        ], 
        [
          "Der Antrag wird zurückgezogen.", 
          "ANTRAG_RUECKZUG"
        ], 
        [
          "Der Antrag ist gegenstandslos, daher keine Abstimmung.", 
          "ANTRAG_GEGENSTANSLOS"
        ], 
        [
          "kein Beratungsergebnis", 
          "BERATUNG_ERGEBNISLOS"
        ], 
        [
          "Die Beratung der Vorlage wird zurückgestellt.", 
          "BERATUNG_ZUERUCKGESTELLT"
        ], 
        [
          "Die Beschlussfassung wird teilweise zurückgestellt.", 
          "BESCHLUSS_ZURUECKGESTELLT_TEILWEISE"
        ], 
        [
          "Die Abstimmung erfolgte getrennt nach Unterpunkten.", 
          "ABSTIMMUNG_UNTERPUNKTE"
        ], 
        [
          "Abstimmungsergebnis: Einstimmig nach Beschlussvorschlag", 
          "BESCHLOSSEN_EINSTIMMIG"
        ], 
        [
          "Abstimmungsergebnis: Einstimmig nach Ergänzung des Beschlussvorschlages", 
          "BESCHLOSSEN_EINSTIMMIG_ERGAENZUNG"
        ], 
        [
          "Abstimmungsergebnis: Einstimmig nach Änderung des Beschlussvorschlages", 
          "BESCHLOSSEN_EINSTIMMIG_AENDERUNG"
        ], 
        [
          "Abstimmungsergebnis: Mehrheitlich nach Beschlussvorschlag", 
          "BESCHLOSSEN_MEHRHEIT"
        ], 
        [
          "Abstimmungsergebnis: Mehrheitlich nach Ergänzung des Beschlussvorschlages", 
          "BESCHLOSSEN_MEHRHEIT_ERGAENZUNG"
        ], 
        [
          "Abstimmungsergebnis: Mehrheitlich nach Änderung des Beschlussvorschlages", 
          "BESCHLOSSEN_MEHRHEIT_AENDERUNG"
        ], 
        [
          "Abstimmungsergebnis: Einstimmig gegen Beschlussvorschlag", 
          "ABGELEHNT_EINSTIMMIG"
        ], 
        [
          "Abstimmungsergebnis: Mehrheitlich gegen Beschlussvorschlag", 
          "ABGELEHNT_MEHRHEIT"
        ], 
        [
          "erledigt", 
          "ERLEDIGT"
        ]
      ], 

party_alias

Manchmal verwenden RIS für eine Partei mehrere Namen. Dies kann durch die Variable party_alias wieder auf eine Partei zurückgeführt werden. Erwartet wird eine Liste aus Listen, welche in der ersten Position den zu ändernden Parteinamen, in der zweiten Position den genutzten Parteinamen haben. Ein Beispiel aus Bochum:

      "party_alias": [
        [
          "GRU", 
          "Bündnis 90 / Die Grünen"
        ], 
        [
          "Grüne", 
          "Bündnis 90 / Die Grünen"
        ], 

paper_type_strings

Diese Variable dient dazu, die Namen der Vorlagentypen zu vereinheitlichen. Bislang wird sie aber nicht genutzt, so dass sie leer bleiben kann. Also so:

"paper_type_strings": [],

Scraperergänzungen

Manchmal haben RIS stadtspezifische Ergänzungen in den HTML-Vorlagen, so dass der Scraper nicht mehr alle Informationen bekommt und mit einem Fehler abbricht. In diesem Fall kann die globale Konfiguration ganz einfach ergänzt werden, ohne gleich alles neu schreiben zu müssen. Ein Beispiel aus Moers:

{
  [...]
  "config": {
    [...]
    "scraper": {
      [...]
      "sessionnet-asp": {
        "xpath": {
          "MEETING_DETAIL_TITLE": "//h3[@class='smc_h3']", 
          "PAPER_DETAIL_TITLE": "//h3[@class='smc_h3']"
        }
      }
    },
  }
}

Hier werden lediglich die xpath MEETING_DETAIL_TITLE und PAPER_DETAIL_TITLE ergänzt, weil diese in Moers anders lauten als in dem normalen SessioNet Template.

Die globale Konfiguration gibt es in http://ubunturechner:23000/admin/config bzw. als Template. Diese Vorlage wird auch nicht verändert, d.h. wenn eine Ergänzung nötig ist, so muss diese in die Stadtkonfiguration!

Die fertige Konfiguration

Du hast eine fertige Stadtkonfiguration? Perfekt! Dann lasse Sie uns zukommen - z.B. via E-Mail