diff options
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | alarmpy.py | 26 |
2 files changed, 19 insertions, 8 deletions
@@ -23,5 +23,6 @@ Options: --delay INTEGER Polling delay in seconds --routine-delay INTEGER Routine message delay in seconds --alarm-id Print alarm ID + --repeat-alarms Do not suppress ongoing alarms --help Show this message and exit. ``` @@ -15,14 +15,17 @@ class Alarm(object): "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36", } - def __init__(self, delay=1, alarm_id=False, routine_delay=5): + def __init__(self, delay=1, routine_delay=5, alarm_id=False, repeat_alarms=False): self.delay = delay - self.alarm_id = alarm_id self.last_routine_delay = routine_delay + self.alarm_id = alarm_id + self.repeat_alarms = repeat_alarms self.active_alarm = False self.last_routine = 0 + self.last = None + def start(self): while True: self.fetch() @@ -40,20 +43,25 @@ class Alarm(object): return if res.content: - click.secho(f"{ts} ", nl=False) + try: data = res.json() self.active_alarm = True alarm_id = data["id"] cities = data["data"] - click.secho(f"{', '.join(cities)} ", fg="red", nl=not self.alarm_id) - - if self.alarm_id: - click.secho(f"({alarm_id})") + cities_str = ", ".join(cities) + if self.repeat_alarms or cities_str != self.last: + click.secho(f"{ts} ", nl=False) + click.secho(f"{cities_str} ", fg="red", nl=not self.alarm_id) + if self.alarm_id: + click.secho(f"({alarm_id})") + self.last = cities_str except: + click.secho(f"{ts} ", nl=False) click.secho(f"Error parsing JSON {res.content}", fg="yellow", bold=True) else: + self.last = None if self.active_alarm or ( time() - self.last_routine > self.last_routine_delay ): @@ -70,11 +78,13 @@ class Alarm(object): "--routine-delay", default=60 * 5, help="Routine message delay in seconds" ) @click.option("--alarm-id", is_flag=True, help="Print alarm ID") -def alarm(delay=1, routine_delay=60 * 5, alarm_id=False): +@click.option("--repeat-alarms", is_flag=True, help="Do not suppress ongoing alarms") +def alarm(delay=1, routine_delay=60 * 5, alarm_id=False, repeat_alarms=False): Alarm( delay=delay, routine_delay=routine_delay, alarm_id=alarm_id, + repeat_alarms=repeat_alarms, ).start() |
