From eb5bfa4c58748c4e0b66f435a172a63688342789 Mon Sep 17 00:00:00 2001 From: Jeremy Stanley Date: Sat, 11 May 2024 01:33:58 +0000 Subject: [PATCH] Add --delay command line and delay config options Make the alert and forecast expiration delay user-configurable, both in configuration and at runtime on the command line. --- weather | 5 +++-- weather.py | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/weather b/weather index 67a13c8..3db7526 100755 --- a/weather +++ b/weather @@ -2,7 +2,7 @@ # distributions may wish to edit the above to refer to a specific interpreter # path, such as #!/usr/bin/python -# Copyright (c) 2006-2012 Jeremy Stanley . Permission to +# Copyright (c) 2006-2024 Jeremy Stanley . Permission to # use, copy, modify, and distribute this software is granted under terms # provided in the LICENSE file distributed with this software. @@ -101,7 +101,8 @@ else: and selections.get_bool("cache_data") ), cacheage=selections.getint("cacheage"), - cachedir=selections.get("cachedir") + cachedir=selections.get("cachedir"), + delay=selections.getint("delay") ) if partial: alert_text += "***** %s *****\n%s\n" % ( diff --git a/weather.py b/weather.py index 90f155c..ce01202 100644 --- a/weather.py +++ b/weather.py @@ -320,7 +320,8 @@ def get_alert( quiet=False, cache_data=False, cacheage=900, - cachedir="." + cachedir=".", + delay=1 ): """Return alert notice for the specified URI.""" if not uri: @@ -343,14 +344,13 @@ def get_alert( muted = False expirycheck = re.search(r"Expires:([0-9]{12})", alert) if expirycheck: - # only report alerts and forecasts that expired less than - # offset ago + # only report alerts and forecasts that expired less than delay + # hours ago import datetime, zoneinfo expiration = datetime.datetime.fromisoformat( "%sT%sZ" % (expirycheck[1][:8], expirycheck[1][-4:])) now = datetime.datetime.now(tz=zoneinfo.ZoneInfo("UTC")) - # TODO: make this offset configurable - if now - expiration > datetime.timedelta(hours=1): + if now - expiration > datetime.timedelta(hours=delay): return "" lines = alert.split("\n") output = [] @@ -437,6 +437,15 @@ def get_options(config): default=default_cachedir, help="directory for storing cached searches and data") + # the --delay option + if config.has_option("default", "delay"): + default_delay = config.getint("default", "delay") + else: default_delay = 1 + option_parser.add_option("--delay", + dest="delay", + default=default_delay, + help="hours to delay alert and forecast expiration") + # the -f/--forecast option if config.has_option("default", "forecast"): default_forecast = config.getboolean("default", "forecast") -- 2.11.0