#!/usr/bin/env python3
+hostname = 'kiosk.house'
+pages_dir = "/var/www/kiosk/pages"
+
refresh_period_sec = 22.0
render_period_sec = 30.0
-pages_dir = "/usr/local/export/www/kiosk/pages"
seconds_per_minute = 60
seconds_per_hour = seconds_per_minute * 60
import os
import time
-from typing import Dict, List
+from typing import Dict
import constants
import file_writer
now = time.time()
n = 0
- for x in sorted(limits):
- ts = os.stat(x).st_mtime
+ for filepath, limit_sec in sorted(limits.items()):
+ ts = os.stat(filepath).st_mtime
age = now - ts
- self.debug_print("%s -- age is %ds, limit is %ds" % (x, age, limits[x]))
- if age < limits[x]:
+ self.debug_print(f"{filepath} -- age: {age}, limit {limit_sec}")
+ if age < limits[filepath]:
+ # OK
f.write(
- '<TD BGCOLOR="#007010" HEIGHT=100 WIDTH=33% STYLE="text-size:60%; vertical-align: middle;">\n'
+ '<TD BGCOLOR="#007010" HEIGHT=100 WIDTH=33% STYLE="text-size:70%; vertical-align: middle;">\n'
)
+ txt_color="#ffffff"
else:
+ # BAD!
f.write(
- '<TD BGCOLOR="#990000" HEIGHT=100 WIDTH=33% CLASS="invalid" STYLE="text-size:60%; vertical-align:middle;">\n'
+ '<TD BGCOLOR="#990000" HEIGHT=100 WIDTH=33% CLASS="invalid" STYLE="text-size:70%; vertical-align:middle;">\n'
)
- f.write(" <CENTER><FONT SIZE=-2>\n")
+ txt_color="#000000"
+ f.write(f" <CENTER><FONT SIZE=-1 COLOR={txt_color}>\n")
- name = x.replace(timestamps, "")
+ name = filepath.replace(timestamps, "")
name = name.replace("last_", "")
name = name.replace("_", " ")
duration = utils.describe_duration_briefly(int(age))
self.debug_print(f"{name} is {duration} old.")
- f.write(f"{name}<BR>\n<B>{ts}</B> old.\n")
+ f.write(f"{name}<BR>\n<B>{duration}</B> old.\n")
f.write("</FONT></CENTER>\n</TD>\n\n")
n += 1
if n % 3 == 0:
)
-# test = periodic_health_renderer({"Test", 123})
-# test.periodic_render("Test")
+#test = periodic_health_renderer({"Test", 123})
+#test.periodic_render("Test")
function() {
var xhr = new XMLHttpRequest();
xhr.open('GET',
- 'http://wannabe.house/kiosk/pages/reload_immediately.html');
+ 'http://%s/kiosk/pages/reload_immediately.html');
xhr.onload =
function() {
if (xhr.status === 200) {
% (
bgcolor,
constants.refresh_period_sec * 1000,
+ constants.hostname,
bgcolor,
filename,
filename,
delta = time.time() - now
if delta > 1.0:
print(
- f"renderer[{utils.timestamp()}]: Warning: {r.get_name()}'s rendering took {delta:%5.2f}s."
+ f"renderer[{utils.timestamp()}]: Warning: {r.get_name()}'s rendering took {delta:5.2f}s."
)
print(
f"renderer[{utils.timestamp()}]: thread having a little break for {constants.render_period_sec}s..."
import os
import random
import re
-from typing import List, Dict, Set
+from typing import Dict, Set
+import constants
import file_writer
import renderer
class local_photos_mirror_renderer(renderer.debuggable_abstaining_renderer):
"""A renderer that uses a local mirror of Google photos"""
- album_root_directory = "/usr/local/export/www/gphotos/albums"
+ ALBUM_ROOT_DIR = "/var/www/kiosk/pages/images/gphotos/albums"
album_whitelist = frozenset(
[
"""Walk the filesystem looking for photos in whitelisted albums and
keep their paths in memory.
"""
- for root, subdirs, files in os.walk(self.album_root_directory):
+ for root, subdirs, files in os.walk(self.ALBUM_ROOT_DIR):
last_dir = root.rsplit("/", 1)[1]
if self.album_is_in_whitelist(last_dir):
for filename in files:
if extension in self.extension_whitelist:
photo_path = os.path.join(root, filename)
photo_url = photo_path.replace(
- "/usr/local/export/www/", "http://10.0.0.18/", 1
+ "/var/www/", f"http://{constants.hostname}/", 1
)
self.candidate_photos.add(photo_url)
return True
def get_state_icon(self, state: str) -> str:
if state == "open":
- return "/icons/garage_open.png"
+ return "/kiosk/pages/images/garage_open.png"
elif state == "closed":
- return "/icons/garage_closed.png"
+ return "/kiosk/pages/images/garage_closed.png"
elif state == "opening":
- return "/icons/garage_opening.png"
+ return "/kiosk/pages/images/garage_opening.png"
elif state == "closing":
- return "/icons/garage_closing.png"
+ return "/kiosk/pages/images/garage_closing.png"
else:
return str(state) + ", an unknown state for the door."
# 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/pages/images/weather/%s" height=125></center></td></tr>\n'
% self.pick_icon(conditions[date], rain[date], snow[date])
)