More cleanup.
[kiosk.git] / weather_renderer.py
index fbb3ed8170f873da0a3223088b8c60462a858c1a..f10f1ceb7d132f0e92965e8368b60d404f63409b 100644 (file)
@@ -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(
-                    '  <tr><td colspan=3 height=100><center><img src="/icons/weather/%s" height=125></center></td></tr>\n'
+                    '  <tr><td colspan=3 height=100><center><img src="/kiosk/images/weather/%s" height=125></center></td></tr>\n'
                     % self.pick_icon(conditions[date], rain[date], snow[date])
                 )