From 67bb1e49efa16123ab9a4f3755b4e44d629afc00 Mon Sep 17 00:00:00 2001 From: Adrian Rumpold Date: Sat, 9 Oct 2021 13:59:09 +0200 Subject: [PATCH 1/2] feat(parser): Support new vaccination report format Closes #8 --- .../crawler.py | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/custom_components/home_assistant_covid19_augsburg/crawler.py b/custom_components/home_assistant_covid19_augsburg/crawler.py index 189863e..c223a23 100644 --- a/custom_components/home_assistant_covid19_augsburg/crawler.py +++ b/custom_components/home_assistant_covid19_augsburg/crawler.py @@ -59,10 +59,12 @@ class VaccinationData: total_vaccinations: int = 0 num_vaccinated_once: int = 0 num_vaccinated_full: int = 0 + num_vaccinated_booster: int = 0 ratio_vaccinated_once: float = 0.0 ratio_vaccinated_full: float = 0.0 ratio_vaccinated_total: float = 0.0 + ratio_vaccinated_booster: float = 0.0 class CovidCrawlerBase(ABC): @@ -165,9 +167,9 @@ class CovidCrawler(CovidCrawlerBase): result = soup.find(id=container_id) text = re.sub(r"\s+", " ", result.text) regexes = [ - r"(?P\d+[.]\d+) Impfdosen", - r"Weitere (?P\d+[.]\d+) Personen haben die Erstimpfung erhalten", - r"(?P\d+[.]\d+) Personen sind bereits vollständig geimpft", + r"(?P\d+([.]\d+)?) Personen in Augsburg mindestens", + r"(?P\d+([.]\d+)?) Personen sind mindestens zweimal geimpft", + r"(?P\d+([.]\d+)?) Personen haben eine Auffrischungsimpfung", ] values = {} for r in regexes: @@ -185,18 +187,24 @@ class CovidCrawler(CovidCrawlerBase): if not matches: raise ValueError(f"Could not extract date from scraped web page, {text=}") + values["num_vaccinated_once"] = values["total_vaccinations"] - ( + values["num_vaccinated_full"] + values["num_vaccinated_booster"] + ) + values["date"] = parse_date(**matches.groupdict()).strftime("%Y-%m-%d") result = VaccinationData(**values) - # Total population in Augsburg as of 2020 - # https://www.augsburg.de/fileadmin/user_upload/buergerservice_rathaus/rathaus/statisiken_und_geodaten/statistiken/Monitoring/Demografiemonitoring_der_Stadt_Augsburg_2021.pdf - population = 299021 + # Total population in Augsburg as listed on the crawled page + population = 298014 result.ratio_vaccinated_full = result.num_vaccinated_full / population * 100 result.ratio_vaccinated_once = result.num_vaccinated_once / population * 100 result.ratio_vaccinated_total = ( result.ratio_vaccinated_once + result.ratio_vaccinated_full ) + result.ratio_vaccinated_booster = ( + result.num_vaccinated_booster / population * 100 + ) _log.debug(f"Result data: {result}") return result From dd5bb2916b56e09a6cdd111257841388da157229 Mon Sep 17 00:00:00 2001 From: Adrian Rumpold Date: Sat, 9 Oct 2021 14:00:12 +0200 Subject: [PATCH 2/2] chore: Bump manifest version number --- custom_components/home_assistant_covid19_augsburg/manifest.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/custom_components/home_assistant_covid19_augsburg/manifest.json b/custom_components/home_assistant_covid19_augsburg/manifest.json index b579662..97a25ce 100644 --- a/custom_components/home_assistant_covid19_augsburg/manifest.json +++ b/custom_components/home_assistant_covid19_augsburg/manifest.json @@ -1,7 +1,7 @@ { "domain": "covid19_augsburg", "name": "COVID-19 Augsburg", - "version": "1.1.3", + "version": "1.2.0", "config_flow": true, "documentation": "https://github.com/AdrianoKF/home-assistant-covid19-augsburg", "issue_tracker": "https://github.com/AdrianoKF/home-assistant-covid19-augsburg/issues",