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:
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 = ""
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
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"
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
# 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])
)