Schrolli91 / BOSWatch

Python Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
https://bwcc.boswatch.de
GNU General Public License v2.0
132 stars 60 forks source link

POC Text anhand Regex auswerten #508

Closed MarSch1 closed 3 years ago

MarSch1 commented 3 years ago

Hi, ich habe eine Konfigurationsoption für den POC Decoder eingebaut, so dass der Text anhand eines regulären Ausdrucks mit Angabe von "named groups" analysiert und die data-Struktur entsprechend angereichert werden kann. Hat den Vorteil, dass wenn es ein festgelegtes Schema im Alarmierungstext gibt, die einzelnen Elemente in den entsprechenden Plugins dediziert weiterverwendet werden können.

Ob ein Text nach dem Schema ausgewertet konnte und es es die zusätzlichen Felder in der data-Struktur gibt, zeigt das Element has_schema_fields in der data-Struktur (True oder False).

MarSch1 commented 3 years ago

Alarmierungstext (Fake-Adressen und -Objekt): TESTALARM Person in Zwangslage;H2.04;Neustadt;Königsbach;Weinstraße 1;VS Winzerheim;;Dortige Baustelle..Treppensturz nach Kopf vs Balken // Ca- 2-3 Meter hinabgestürzt //

Ohne Regex: dict: {'function': '1', 'has_geo': False, 'description': '1234567', 'has_schema_fields': False, 'msg': 'TESTALARM Person in Zwangslage;H2.04;Neustadt;Königsbach;Weinstraße 1;VS Winzerheim;;Dortige Baustelle..Treppensturz nach Kopf vs Balken // Ca- 2-3 Meter hinabgestürzt //', 'bitrate': 1200, 'ric': '1234567'}

Mit Regex: dict: {'function': '1', 'has_geo': False, 'Objekt': 'VS Winzerheim', 'description': '1234567', 'StichwortLang': 'TESTALARM Person in Zwangslage', 'Ort': 'Neustadt', 'Bemerkung1': '', 'Adresse': 'Weinstraße 1', 'Bemerkung2': 'Dortige Baustelle..Treppensturz nach Kopf vs Balken // Ca- 2-3 Meter hinabgestürzt //', 'StichwortKurz': 'H2.04', 'has_schema_fields': True, 'msg': 'TESTALARM Person in Zwangslage;H2.04;Neustadt;Königsbach;Weinstraße 1;VS Winzerheim;;Dortige Baustelle..Treppensturz nach Kopf vs Balken // Ca- 2-3 Meter hinabgestürzt //', 'Ortsteil': 'Königsbach', 'bitrate': 1200, 'ric': '1234567

Schrolli91 commented 3 years ago

Wird also nur erweitert, ok. Was würde passieren, wenn du eine Regex Match Group so nennst, wie ein bereits existierendes Feld?

MarSch1 commented 3 years ago

Wenn es das Feld in der data-Struktur bereits gibt, würde es entsprechend der Konfiguration gefüllt werden. Wenn es das Feld noch nicht gibt, wird es ergänzt.

Schrolli91 commented 3 years ago

Ok dann sollten wir das in der Config im Kommentar Block noch kurz erwähnen. Also, dass Match Groups die identisch zu bestehenden Feldern heißen, diese überschreiben.

Und evtl. generell was die Funktion macht - nämlich dass das data dict erweitert wird.

MarSch1 commented 3 years ago

Ich habe mal versucht das Feature etwas detaillierter zu beschreiben und habe ein Beispiel ergänzt.