Logging is a good thing.
[kiosk.git] / stevens_renderer.py
index 0916aee9fd694b1a6a1b84e0bb251c6d459b8111..bf97785256933beb350d84d9ee47b87a59ca8ec2 100644 (file)
@@ -1,12 +1,10 @@
 #!/usr/bin/env python3
 
-import datetime
 import json
 import logging
 import requests
 from typing import Dict
 
-import datetime_utils
 import file_writer
 import renderer
 
@@ -24,31 +22,48 @@ class stevens_renderer(renderer.abstaining_renderer):
         ret = f'''
 <TABLE>
 <TR>
-  <TD><B>temperature:</B></TD>
-  <TD>{conditions['temperature']}&deg;{conditions['temperatureUnit'][0]}</TD>
+  <TD WIDTH="150"><FONT SIZE=+2><B>Temp:</B></FONT></TD>
+  <TD><FONT SIZE=+2>{conditions['temperature']}&deg;{conditions['temperatureUnit'][0]}</FONT></TD>
 </TR>
 <TR>
-  <TD><B>weather:</B></TD>
-  <TD>{conditions['weather']}</TD>
+  <TD><FONT SIZE=+2><B>Weather:</B></FONT></TD>
+  <TD><FONT SIZE=+2>{conditions['weather']}</FONT></TD>
 </TR>
 <TR>
-  <TD><B>road:</B></TD>
-  <TD>{conditions['roadCondition']}</TD>
+  <TD><FONT SIZE=+2><B>Roadway:</B></FONT></TD>
+  <TD><FONT SIZE=+2>{conditions['roadCondition']}</FONT></TD>
 </TR>'''
-        if 'restrictionOne' in conditions or 'restrictionTwo' in conditions:
+        if 'restrictionOne' in conditions and 'restrictionTwo' in conditions:
             ret += '''
 <TR>
-  <TD><B>restrictions:</B></TD>
-  <TD>'''
-            if 'restrictionOne' in conditions:
+  <TD><FONT SIZE=+2><B>Restrictions:</B></FONT></TD>
+  <TD><FONT SIZE=+2>'''
+            count = 0
+            msg = conditions['restrictionOne'].get('publicPage', 'no restrictions')
+            if msg.lower() != 'no restrictions':
+                count += 1
+            msg = conditions['restrictionTwo'].get('publicPage', 'no restrictions')
+            if msg.lower() != 'no restrictions':
+                count += 1
+            if count == 2:
                 ret += f'''
-  {conditions['restrictionOne']['travelDirectionName']}:
-  {conditions['restrictionOne']['publicPage']}<BR>'''
-            if 'restrictionTwo' in conditions:
-                ret += f'''
-  {conditions['restrictionTwo']['travelDirectionName']}:
-  {conditions['restrictionTwo']['publicPage']}'''
-        ret += '</TR></TABLE>'
+    <U>{conditions['restrictionOne']['travelDirectionName']}:</U>
+    {conditions['restrictionOne']['publicPage']} <BR>
+    <U>{conditions['restrictionTwo']['travelDirectionName']}:</U>
+    {conditions['restrictionTwo']['publicPage']}'''
+            elif count == 1:
+                msg = conditions['restrictionOne'].get('publicPage', 'no restrictions')
+                if msg.lower() != 'no restrictions':
+                    ret += f'''
+    <U>{conditions['restrictionOne']['travelDirectionName']}:</U>
+    {conditions['restrictionOne']['publicPage']}<BR>'''
+                else:
+                    ret += f'''
+    <U>{conditions['restrictionTwo']['travelDirectionName']}:</U>
+    {conditions['restrictionTwo']['publicPage']}<BR>'''
+            else:
+                ret += '''None.<BR>'''
+        ret += '</FONT></TD></TR></TABLE>'
         return ret
 
     def render_forecast(forecasts: Dict[str, str]) -> str:
@@ -60,7 +75,7 @@ class stevens_renderer(renderer.abstaining_renderer):
                 color = ' BGCOLOR="#dfefff"'
             ret += f'''
 <TR>
-  <TD{color}><B>{f['periodText']}</B></TD>
+  <TD WIDTH="150" valign="top" {color}><B>{f['periodText']}</B></TD>
   <TD{color}>{f['forecastText']}</TD>
 </TR>'''
         ret += '</TABLE>'
@@ -71,9 +86,11 @@ class stevens_renderer(renderer.abstaining_renderer):
             if camera['cameraId'] == 8063:
                 return f'''
 <CENTER>
-  <IMG SRC={camera['cameraUrl']} WIDTH={camera['width']}>
+  <A HREF='https://wsdot.com/travel/real-time/mountainpasses/Stevens'>
+    <IMG SRC={camera['cameraUrl']} WIDTH={camera['width'] * 1.75}>
+  </A>
   <BR>
-  <B>{camera['cameraLabel']} ({camera['direction']})</B>
+  <I>{camera['cameraLabel']} ({camera['direction']})</I>
 </CENTER>'''
         return ''
 
@@ -85,14 +102,9 @@ class stevens_renderer(renderer.abstaining_renderer):
             conditions = contents['condition']
             cameras = contents['cameras']
             forecasts = contents['stationForecasts'][0]
-            now = datetime_utils.now_pacific()
-            tss = conditions['displayDate']
-            tss = tss.replace('Z', '+00:00')
-            ts = datetime.datetime.strptime(tss, '%Y-%m-%dT%H:%M:%S.%f%z')
-            tss = datetime_utils.describe_timedelta_briefly(now - ts)
             with file_writer.file_writer('stevens-conditions_5_3000.html') as f:
                 f.write(f'''
-<H2>Stevens Pass Conditions ~{tss} ago:</H2>
+<H1>Stevens Pass Conditions:</H1>
 <HR>
 <TABLE WIDTH=90%>
 <TR>
@@ -112,5 +124,6 @@ class stevens_renderer(renderer.abstaining_renderer):
             return True
         return False
 
-test = stevens_renderer({"Test", 123})
-test.periodic_render("Test")
+# Test:
+#test = stevens_renderer({"Test", 123})
+#test.periodic_render("Test")