From 7c2b2b8c3b2df73b33f0196f797996815359c3de Mon Sep 17 00:00:00 2001 From: brockdarnold Date: Mon, 15 Jun 2026 00:24:43 +0000 Subject: [PATCH] publish eve_local_watcher.py --- eve_local_watcher.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/eve_local_watcher.py b/eve_local_watcher.py index 5af5256..08f7da3 100644 --- a/eve_local_watcher.py +++ b/eve_local_watcher.py @@ -101,8 +101,12 @@ def main(): if tcmd: pytesseract.pytesseract.tesseract_cmd = tcmd - poll = cp.getint("local", "poll_secs", fallback=8) if cp.has_section("local") else 8 - cooldown = cp.getint("local", "cooldown_secs", fallback=30) if cp.has_section("local") else 30 + sec = cp.has_section("local") + poll = cp.getint("local", "poll_secs", fallback=8) if sec else 8 + cooldown = cp.getint("local", "cooldown_secs", fallback=180) if sec else 180 + # only meaningful in QUIET systems (Solitude etc.); above this it's just noise + max_pop = cp.getint("local", "max_pop", fallback=12) if sec else 12 + confirm = cp.getint("local", "confirm_reads", fallback=3) if sec else 3 if "--test" in sys.argv: region = get_region(cp) @@ -136,15 +140,17 @@ def main(): if prev is None: prev = count print(f"[local] baseline {count} pilots") + elif count > max_pop: + prev = count # busy system — track, never alert + pending, pend_n = None, 0 elif count > prev: - # confirm over 2 reads to shrug off OCR jitter + # require the higher count to persist across `confirm` reads (OCR jitter) pend_n = pend_n + 1 if pending == count else 1 pending = count - if pend_n >= 2 and now - last_alert > cooldown: + if pend_n >= confirm and now - last_alert > cooldown: w.notify(cp, "Someone entered Local", f"+{count - prev} in Local — {count} pilots now (was {prev}). " - "Check d-scan / watch for a visitor on your field.", - priority="high", tags="eyes,warning") + "Check d-scan.", priority="high", tags="eyes") last_alert = now prev = count pending, pend_n = None, 0