From: Scott Gasch Date: Sun, 7 Nov 2021 05:42:36 +0000 (-0700) Subject: More changes related to running on new kiosk.house. X-Git-Url: https://wannabe.guru.org/gitweb/?a=commitdiff_plain;h=7eae23537dcc61565a24d5c957d4325b7337b63a;p=kiosk.git More changes related to running on new kiosk.house. --- diff --git a/constants.py b/constants.py index 4dc8521..a4f8e87 100644 --- a/constants.py +++ b/constants.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 hostname = 'kiosk.house' -pages_dir = "/var/www/kiosk/pages" +pages_dir = '/var/www/html/kiosk' +root_url = f'http://{hostname}/kiosk' refresh_period_sec = 22.0 refresh_period_night_sec = 600.0 @@ -12,5 +13,5 @@ seconds_per_hour = seconds_per_minute * 60 seconds_per_day = seconds_per_hour * 24 myq_pagename = "myq_4_300.html" -internal_stats_pagename = 'internal_stats_1_1000.html' +internal_stats_pagename = 'internal-stats_1_1000.html' gcal_imminent_pagename = "hidden/gcal-imminent_0_none.html" diff --git a/generic_news_rss_renderer.py b/generic_news_rss_renderer.py index e6d4533..149f8ac 100644 --- a/generic_news_rss_renderer.py +++ b/generic_news_rss_renderer.py @@ -6,6 +6,8 @@ from dateutil.parser import parse import http.client import random import re +import sys +import traceback from typing import Dict, List, Optional, Union import xml.etree.ElementTree as ET @@ -209,10 +211,10 @@ class generic_news_rss_renderer(renderer.debuggable_abstaining_renderer): for uri in self.feed_uris: if self.should_use_https(): self.debug_print("Fetching: https://%s%s" % (self.feed_site, uri)) - self.conn = http.client.HTTPSConnection(self.feed_site, timeout=20) + self.conn = http.client.HTTPSConnection(self.feed_site, timeout=10) else: self.debug_print("Fetching: http://%s%s" % (self.feed_site, uri)) - self.conn = http.client.HTTPConnection(self.feed_site, timeout=20) + self.conn = http.client.HTTPConnection(self.feed_site, timeout=10) assert(self.conn is not None) self.conn.request( "GET", @@ -220,8 +222,8 @@ class generic_news_rss_renderer(renderer.debuggable_abstaining_renderer): None, { "Accept": "*/*", - "Cache-control": "max-age=59", - "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", +# "Cache-control": "max-age=50", +# "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.93 Safari/537.36", }, ) try: diff --git a/kiosk.py b/kiosk.py index 6d2fd4e..bd71373 100755 --- a/kiosk.py +++ b/kiosk.py @@ -220,43 +220,48 @@ def thread_change_current(command_queue: Queue) -> None: if triggered: print("chooser[%s] - WE ARE TRIGGERED." % utils.timestamp()) - if page != page_history[0] or (swap_page_target - now < 10.0): + if page != page_history[0] or (swap_page_target - now) < 10.0: print( "chooser[%s] - EMERGENCY PAGE %s LOAD NEEDED" % (utils.timestamp(), page) ) - try: - with open(os.path.join(constants.pages_dir, "current.shtml"), "w") as f: - emit_wrapped(f, page, override_refresh_sec = 40, command = command) - page_history.insert(0, page) - page_history = page_history[0:10] - swap_page_target = now + 40 - except: - print("chooser[%s] - page does not exist?!" % (utils.timestamp())) - continue +# try: + current = os.path.join(constants.pages_dir, "current.shtml") + with open(current, "w") as f: + emit_wrapped(f, page, override_refresh_sec = 40, command = command) + print(f'Wrote {current}') + + page_history.insert(0, page) + page_history = page_history[0:10] + swap_page_target = now + 40 +# except: +# print("chooser[%s] - page does not exist?!" % (utils.timestamp())) +# continue # Also notify XMLHTTP clients that they need to refresh now. - path = os.path.join(constants.pages_dir, "reload_immediately.html") - with open(path, "w") as f: - f.write("Reload, suckers!") + emergency_file = os.path.join(constants.pages_dir, "reload_immediately.html") + with open(emergency_file, "w") as f: + f.write(f'Reload, suckers... you HAVE to see {page}!') + print(f'Causing immediate page reload with {emergency_file}...') # Fix this hack... maybe read the webserver logs and see if it # actually was picked up? - time.sleep(0.75) - os.remove(path) + time.sleep(3.0) + os.remove(emergency_file) + print(f'...and removed {emergency_file}') elif now >= swap_page_target: assert page != page_history[0] print("chooser[%s] - nominal choice of %s" % (utils.timestamp(), page)) - try: - with open(os.path.join(constants.pages_dir, "current.shtml"), "w") as f: - emit_wrapped(f, page) - page_history.insert(0, page) - page_history = page_history[0:10] - swap_page_target = now + constants.refresh_period_sec - except: - print("chooser[%s] - page does not exist?!" % (utils.timestamp())) - continue +# try: + with open(os.path.join(constants.pages_dir, "current.shtml"), "w") as f: + emit_wrapped(f, page) + page_history.insert(0, page) + page_history = page_history[0:10] + swap_page_target = now + constants.refresh_period_sec +# except: +# print("chooser[%s] - page does not exist?!" % (utils.timestamp())) +# continue time.sleep(1) @@ -298,7 +303,7 @@ def emit_wrapped(f, pageid = f'"{command}" -> {filename}' f.write( - """ +""" Kitchen Kiosk @@ -309,7 +314,7 @@ def emit_wrapped(f, function zoomScreen() { z = 285; do { - document.getElementById("content").style.zoom = z+"%%"; + document.getElementById("content").style.zoom = z+"%"; var body = document.body; var html = document.documentElement; var height = Math.max(body.scrollHeight, @@ -344,7 +349,9 @@ def emit_wrapped(f, } } } - +""") + f.write( +""" // Operate the clock at the top of the page. function runClock() { var today = new Date(); @@ -361,7 +368,9 @@ def emit_wrapped(f, document.getElementById("date").innerHTML = today.toDateString(); var t = setTimeout(function(){runClock()}, 1000); } - +""" % bgcolor) + f.write( +""" // Helper method for running the clock. function maybeAddZero(x) { return (x < 10) ? "0" + x : x; @@ -392,7 +401,10 @@ def emit_wrapped(f, addLoadEvent(zoomScreen); addLoadEvent(runClock); addLoadEvent(lateLoadImages); +""") + f.write( +""" // Runs the countdown line at the bottom and is responsible for // normal page reloads caused by the expiration of a timer. (function countdown() { @@ -422,14 +434,16 @@ def emit_wrapped(f, }); }, 50) })(); - +""" % get_refresh_period()) + f.write( +""" // Periodically checks for emergency reload events. (function poll() { setTimeout( function() { var xhr = new XMLHttpRequest(); xhr.open('GET', - 'http://%s/kiosk/pages/reload_immediately.html'); + '%s/reload_immediately.html'); xhr.onload = function() { if (xhr.status === 200) { @@ -443,10 +457,13 @@ def emit_wrapped(f, xhr.send(); }, 500); })(); - + - - +""" % constants.root_url) + f.write(f'') + f.write( +""" +
 
@@ -462,13 +479,19 @@ def emit_wrapped(f,

-
+

- %s @ %s ago. +""") + f.write(f'{pageid} @ {age} ago.') + f.write( +"""


""") def thread_invoke_renderers() -> None: @@ -538,12 +551,13 @@ f''' with file_writer.file_writer(constants.internal_stats_pagename) as f: f.write( f''' - +
+
- - - - + + + + ''') for n, r in enumerate(renderer_catalog.get_renderers()): @@ -571,10 +585,10 @@ f''' f.write( f''' - - - - + + + + ''') f.write('
Renderer NameLast RunNum InvocationsRender LatencyRenderer NameLast RunNum InvocationsRender Latency
{name}{last}
{count}
p25={p25:5.2f}, p50={p50:5.2f}, p75={p75:5.2f}, p90={p90:5.2f}, p99={p99:5.2f}{name}  {last} 
 {count} 
 p25={p25:5.2f}, p50={p50:5.2f}, p75={p75:5.2f}, p90={p90:5.2f}, p99={p99:5.2f}
') diff --git a/seattletimes_rss_renderer.py b/seattletimes_rss_renderer.py index 13a9416..2dd7cee 100644 --- a/seattletimes_rss_renderer.py +++ b/seattletimes_rss_renderer.py @@ -87,9 +87,9 @@ class seattletimes_rss_renderer(gnrss.generic_news_rss_renderer): # Test -# x = seattletimes_rss_renderer({"Test", 123}, +#x = seattletimes_rss_renderer({"Test", 123}, # "www.seattletimes.com", -# [ "/life/feed/" ], +# [ "/outdoors/feed/", '/live/feed/' ], # "nonnews") -# x.periodic_render("Fetch News") -# x.periodic_render("Shuffle News") +#x.periodic_render("Fetch News") +#x.periodic_render("Shuffle News") diff --git a/urbanist_renderer.py b/urbanist_renderer.py index 36ef68b..a72f4d6 100644 --- a/urbanist_renderer.py +++ b/urbanist_renderer.py @@ -44,7 +44,7 @@ class urbanist_renderer(gnrss.generic_news_rss_renderer): def item_is_interesting_for_headlines( self, title: str, description: str, item: xml.etree.ElementTree.Element ) -> bool: - return description.lower() != 'the urbanist' + return 'the urbanist' not in description.lower() def do_details(self) -> bool: return True