X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=weather_renderer.py;h=f10f1ceb7d132f0e92965e8368b60d404f63409b;hb=0113d4ae8b11e01b695cd15cdb2c317d887e0935;hp=fbb3ed8170f873da0a3223088b8c60462a858c1a;hpb=c06bfef53f70551e7920bc4facce27f47b89e2ba;p=kiosk.git diff --git a/weather_renderer.py b/weather_renderer.py index fbb3ed8..f10f1ce 100644 --- a/weather_renderer.py +++ b/weather_renderer.py @@ -2,21 +2,22 @@ from datetime import datetime import json -import re from typing import Dict, List -import urllib.request, urllib.error, urllib.parse +import urllib.request +import urllib.error +import urllib.parse import file_writer import renderer -import secrets +import kiosk_secrets as secrets import random -class weather_renderer(renderer.debuggable_abstaining_renderer): +class weather_renderer(renderer.abstaining_renderer): """A renderer to fetch forecast from wunderground.""" def __init__(self, name_to_timeout_dict: Dict[str, int], file_prefix: str) -> None: - super(weather_renderer, self).__init__(name_to_timeout_dict, False) + super().__init__(name_to_timeout_dict) self.file_prefix = file_prefix def debug_prefix(self) -> str: @@ -65,6 +66,7 @@ class weather_renderer(renderer.debuggable_abstaining_renderer): return f"{self.describe_magnitude(magnitude)} rain" elif snow > 0: return f"{self.describe_magnitude(magnitude)} snow" + return "rain" def fix_caps(self, s: str) -> str: r = "" @@ -97,7 +99,7 @@ class weather_renderer(renderer.debuggable_abstaining_renderer): seen_snow = False cloud_count = 0 clear_count = 0 - total_snow = 0 + total_snow = 0.0 count = min(len(conditions), len(rain), len(snow)) for x in range(0, count): seen_rain = rain[x] > 0 @@ -216,7 +218,7 @@ class weather_renderer(renderer.debuggable_abstaining_renderer): descr = self.fix_caps(descr) return descr - def fetch_weather(self) -> None: + def fetch_weather(self) -> bool: if self.file_prefix == "stevens": text_location = "Stevens Pass, WA" param = "lat=47.74&lon=-121.08" @@ -266,10 +268,10 @@ class weather_renderer(renderer.debuggable_abstaining_renderer): ts = {} highs = {} lows = {} - wind = {} - conditions = {} - rain = {} - snow = {} + wind: Dict[str, List[float]] = {} + conditions: Dict[str, List[str]] = {} + rain: Dict[str, List[float]] = {} + snow: Dict[str, List[float]] = {} for x in range(0, count): data = parsed_json["list"][x] dt = data["dt_txt"] # 2019-10-07 18:00:00 @@ -376,7 +378,7 @@ class weather_renderer(renderer.debuggable_abstaining_renderer): # Icon f.write( - '
\n' + '
\n' % self.pick_icon(conditions[date], rain[date], snow[date]) )