114 lines
2.7 KiB
Python
114 lines
2.7 KiB
Python
import argparse
|
|
import random
|
|
import re
|
|
import time
|
|
from datetime import datetime
|
|
|
|
PAD = re.compile(r"^0?([1-9]\d?)$")
|
|
NORDIC_7 = (
|
|
" STAT SP IPHASW D HRMM SECON CODA AMPLIT PERI AZIMU VELO AIN AR TRES W DIS CAZ7"
|
|
)
|
|
|
|
|
|
def generate_event():
|
|
ts = random.randint(946684800000, 1767225600000)
|
|
dt = datetime.fromtimestamp(ts / 1e3)
|
|
line_3 = " OBS: Dados falsos".ljust(79) + "3"
|
|
stat = generate_station(dt)
|
|
|
|
return "\n".join(
|
|
[
|
|
gen_line_1(dt),
|
|
line_3,
|
|
generate_line6(dt),
|
|
generate_line_i(dt),
|
|
NORDIC_7,
|
|
stat,
|
|
"\n",
|
|
]
|
|
)
|
|
|
|
|
|
def generate_agency(size: int = 3) -> str:
|
|
return "".join([chr(random.randint(65, 90)) for _ in range(size)])
|
|
|
|
|
|
def remove_pad(v: str) -> str:
|
|
aux = PAD.search(v)
|
|
if aux:
|
|
return aux.group(0)
|
|
return ""
|
|
|
|
|
|
def fmt_date(dt: datetime) -> str:
|
|
return f"{dt.year} {dt.month:2d}{dt.day:2d} {dt.hour:2d}{dt.minute:2d} {dt.second:2d}.0"
|
|
|
|
|
|
# 1D Lerp
|
|
def generate_number(lb: float, ub: float, precision: int = 2) -> float:
|
|
x = random.random()
|
|
return round(lb * (1.0 - x) + (ub * x), precision)
|
|
|
|
|
|
def gen_line_1(dt: datetime) -> str:
|
|
lat = generate_number(-90.0, 90.0, 3)
|
|
long = generate_number(-180.0, 180.0, 3)
|
|
ev = random.choices(("E", "V", "Q"))[0]
|
|
depth = generate_number(0.0, 30.0, 1)
|
|
agency = generate_agency()
|
|
|
|
mag = generate_number(1.0, 6.0, 1)
|
|
|
|
return (
|
|
f" {fmt_date(dt)} L{ev}{lat: >7.3f}{long: >8.3f}{depth:>5.1f} {agency} 1 {mag: >4.1f}L{agency}{mag: >4.1f}C{agency}".ljust(
|
|
79
|
|
)
|
|
+ "1"
|
|
)
|
|
|
|
|
|
def generate_line6(dt: datetime) -> str:
|
|
return f" {dt.strftime('%Y-%m-%d-%H%M-%S')}-FAKE___001".ljust(79) + "6"
|
|
|
|
|
|
def generate_line_i(dt: datetime) -> str:
|
|
return " " * 57 + f"ID:{dt.strftime('%Y%m%d%H%M%S')} I"
|
|
|
|
|
|
def generate_station(dt: datetime) -> str:
|
|
st = generate_agency(4)
|
|
|
|
return "\n".join(
|
|
[
|
|
f" {st} EZ EP {dt.hour:2d}{dt.minute:2d} {dt.second: >5.2f}".ljust(
|
|
80
|
|
),
|
|
f" {st} EZ ES {dt.hour:2d}{dt.minute:2d} {dt.second: >5.2f}".ljust(
|
|
80
|
|
),
|
|
]
|
|
)
|
|
|
|
|
|
def main(argv: int):
|
|
fp = open("falsos.txt", "w", newline="\n")
|
|
for _ in range(argv):
|
|
aux = generate_event()
|
|
fp.write(aux)
|
|
|
|
fp.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
random.seed(time.time())
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument(
|
|
"n", action="store", type=int, help="Generates n amount of events"
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.n:
|
|
main(args.n)
|