mirror of
https://github.com/SpudGunMan/meshing-around.git
synced 2026-03-28 17:32:36 +01:00
49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
# Super sloppy multimon-ng output cleaner for processing by EAS2Text
|
|
# I maed dis, sorta, mostly just mashed code I found or that chatGPT hallucinated
|
|
# by Mike O'Connell/skrrt, no licence or whatever just be chill yo
|
|
# enhanced by sheer.cold
|
|
|
|
import re
|
|
from EAS2Text import EAS2Text
|
|
|
|
buff=[] # store messages for writing
|
|
seen=set()
|
|
pattern = re.compile(r'ZCZC.*?NWS-')
|
|
|
|
# alternate regex for parsing multimon-ng output
|
|
# provided by https://github.com/A-c0rN
|
|
#reg = r"^.*?(NNNN|ZCZC)(?:-([A-Za-z0-9]{3})-([A-Za-z0-9]{3})-((?:-?[0-9]{6})+)\+([0-9]{4})-([0-9]{7})-(.{8})-)?.*?$"
|
|
#prog = re.compile(reg, re.MULTILINE)
|
|
#groups = prog.match(sameData).groups()
|
|
|
|
while True:
|
|
try:
|
|
# Handle piped input
|
|
inp=input().strip()
|
|
except EOFError:
|
|
break
|
|
# potentially take multiple lines in one buffered input
|
|
for line in inp.splitlines():
|
|
# only want EAS lines
|
|
if line.startswith("EAS:") or line.startswith("EAS (part):"):
|
|
content=line.split(":", maxsplit=1)[1].strip()
|
|
if content=="NNNN": # end of EAS message
|
|
# write if we have something
|
|
if buff:
|
|
print("writing")
|
|
with open("alert.txt","w") as fh:
|
|
fh.write('\n'.join(buff))
|
|
# prepare for new data
|
|
buff.clear()
|
|
seen.clear()
|
|
elif content in seen:
|
|
# don't need repeats
|
|
continue
|
|
else:
|
|
# check for national weather service
|
|
match=pattern.search(content)
|
|
if match:
|
|
seen.add(content)
|
|
msg=EAS2Text(content).EASText
|
|
print("got message", msg)
|
|
buff.append(msg) |