summaryrefslogtreecommitdiff
path: root/alarmpy.py
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2021-05-13 19:00:41 +0300
committerYuval Adam <_@yuv.al>2021-05-13 19:00:41 +0300
commit2fc545b57599ffdc7bf3e75b3f94a2cfbb495214 (patch)
treecbfafaa4a5ff974525df4fefa1d71dce2fd7cfda /alarmpy.py
parentcb1f9c8d4878eb11fc015f225abcba1d6556e09f (diff)
Suppress repeating alarms with matching flag to disable
Diffstat (limited to 'alarmpy.py')
-rw-r--r--alarmpy.py26
1 files changed, 18 insertions, 8 deletions
diff --git a/alarmpy.py b/alarmpy.py
index 8e531ef..c84922d 100644
--- a/alarmpy.py
+++ b/alarmpy.py
@@ -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()