diff options
author | Erich Eckner <git@eckner.net> | 2018-10-30 09:58:41 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2018-10-31 21:48:36 +0100 |
commit | 86074fa3b45c751881e4e81eea6c0c21b2208d37 (patch) | |
tree | c98489e7a2c82a665606c6998f07c3957fb93b74 /input_gadgets.c | |
parent | 20c62edc0497bb26794df0ea6f506c59638096b0 (diff) | |
download | anzeige-86074fa3b45c751881e4e81eea6c0c21b2208d37.tar.xz |
input_gadgets.c: acknowledge onset / expire times
Diffstat (limited to 'input_gadgets.c')
-rw-r--r-- | input_gadgets.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/input_gadgets.c b/input_gadgets.c index aad8aad..850c738 100644 --- a/input_gadgets.c +++ b/input_gadgets.c @@ -14,6 +14,7 @@ #define fh_temperature_regex "<strong>\\s*\n\\s*Wetterdaten vom ([0-9]{2})\\.([0-9]{2})\\.([0-9]{4}) um ([0-9:]{5}) MEZ</strong>(.|\n)*>Temperatur</td>\\s*\n\\s*<td [^>]*><strong>([^<]*)</strong>" #define wetter_warnung_filename_regex "^2\\.49\\.0\\.1\\.276\\.0\\.DWD\\.PVW\\.([0-9]+)\\." +#define warnings_future_timespan (60*60*10) static size_t WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) @@ -768,6 +769,11 @@ char *gadgets_retrieve_weather_warnings(char *output, int max_len) if (!is_relevant) continue; + if (warnings[warnings_len].onset >= time(NULL) + warnings_future_timespan) + continue; // start is too far ahead + if (warnings[warnings_len].expires < time(NULL)) + continue; // warning has expired + text = xml_extract_string(doc, cur_node, "headline"); if (text == NULL) { fprintf(stderr, "Failed to enter <headline>\n"); @@ -852,8 +858,14 @@ char *gadgets_retrieve_weather_warnings(char *output, int max_len) for (int i=0; i<warnings_len; i++) { if (output + max_len - ende > 0) { ende += snprintf(ende, output + max_len - ende, "%s", warnings[i].event); - if ((i+1<warnings_len) && (output + max_len - ende > 0)) - ende += snprintf(ende, output + max_len - ende, "; ", warnings[i].event); + if (output + max_len - ende > 0) { + if (warnings[i].onset > time(NULL)) + ende += strftime(ende, output + max_len - ende, " ab %F %T", localtime(&warnings[i].onset)); + if (warnings[i].expires < time(NULL) + warnings_future_timespan) + ende += strftime(ende, output + max_len - ende, " bis %F %T", localtime(&warnings[i].expires)); + if ((i+1<warnings_len) && (output + max_len - ende > 0)) + ende += snprintf(ende, output + max_len - ende, "; ", warnings[i].event); + } } free(warnings[i].headline); |