Testosterone and sensitivity.
[kiosk.git] / local_photos_mirror_renderer.py
index 2e5499dcc4a472559633ac88fc75aa64fdfbc0f2..bb158b9d55d962062c1ff2da0a43c092624d5553 100644 (file)
@@ -1,18 +1,22 @@
+#!/usr/bin/env python3
+
 import os
-import file_writer
-import renderer
 import random
 import re
+from typing import Dict, Set
+
+import file_writer
+import renderer
 
 
-class local_photos_mirror_renderer(renderer.debuggable_abstaining_renderer):
+class local_photos_mirror_renderer(renderer.abstaining_renderer):
     """A renderer that uses a local mirror of Google photos"""
 
-    album_root_directory = "/usr/local/export/www/gphotos/albums"
+    album_root_directory = "/var/www/html/kiosk/images/gphotos/albums"
 
     album_whitelist = frozenset(
         [
-            "8-Mile Lake Hike",
+            "Autumn at Kubota",
             "Bangkok and Phuket, 2003",
             "Barn",
             "Blue Angels... Seafair",
@@ -32,16 +36,21 @@ class local_photos_mirror_renderer(renderer.debuggable_abstaining_renderer):
             "Newer Alex Photos",
             "Ohme Gardens",
             "Olympic Sculpture Park",
+            "Portland, ME 2021",
             "Prague and Munich 2019",
             "Random",
-            "Scott and Lynn",
             "SFO 2014",
+            "Scott and Lynn",
+            "Sculpture Place",
             "Skiing with Alex",
             "Sonoma",
             "Trip to California, '16",
             "Trip to San Francisco",
             "Trip to East Coast '16",
+            "Turkey 2022",
             "Tuscany 2008",
+            "WA Roadtrip, 2021",
+            "WA Wines",
             "Yosemite 2010",
             "Zoo",
         ]
@@ -57,65 +66,64 @@ class local_photos_mirror_renderer(renderer.debuggable_abstaining_renderer):
         ]
     )
 
-    def __init__(self, name_to_timeout_dict):
-        super(local_photos_mirror_renderer, self).__init__(name_to_timeout_dict, False)
-        self.candidate_photos = set()
+    def __init__(self, name_to_timeout_dict: Dict[str, int]) -> None:
+        super().__init__(name_to_timeout_dict)
+        self.candidate_photos: Set[str] = set()
 
-    def debug_prefix(self):
+    def debug_prefix(self) -> str:
         return "local_photos_mirror"
 
-    def periodic_render(self, key):
+    def periodic_render(self, key: str) -> bool:
         if key == "Index Photos":
             return self.index_photos()
         elif key == "Choose Photo":
             return self.choose_photo()
         else:
-            raise error("Unexpected operation")
+            raise Exception("Unexpected operation")
 
-    def album_is_in_whitelist(self, name):
+    def album_is_in_whitelist(self, name: str) -> bool:
         for wlalbum in self.album_whitelist:
-            if re.search("\d+ %s" % wlalbum, name) != None:
+            if re.search("\d+ %s" % wlalbum, name) is not None:
                 return True
         return False
 
-    # Walk the filesystem looking for photos in whitelisted albums and
-    # keep their paths in memory.
-    def index_photos(self):
+    def index_photos(self) -> bool:
+        """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):
             last_dir = root.rsplit("/", 1)[1]
             if self.album_is_in_whitelist(last_dir):
-                for x in files:
-                    extension = x.rsplit(".", 1)[1]
+                for filename in files:
+                    extension = filename.rsplit(".", 1)[1]
                     if extension in self.extension_whitelist:
-                        photo_path = os.path.join(root, x)
+                        photo_path = os.path.join(root, filename)
                         photo_url = photo_path.replace(
-                            "/usr/local/export/www/", "http://10.0.0.18/", 1
+                            "/var/www/html", "http://kiosk.house/", 1
                         )
                         self.candidate_photos.add(photo_url)
         return True
 
-    # Pick one of the cached URLs and build a page.
     def choose_photo(self):
+        """Pick one of the cached URLs and build a page."""
         if len(self.candidate_photos) == 0:
             print("No photos!")
             return False
         path = random.sample(self.candidate_photos, 1)[0]
-        f = file_writer.file_writer("photo_23_3600.html")
-        f.write(
-            """
+        with file_writer.file_writer("photo_23_3600.html") as f:
+            f.write(
+                """
 <style>
 body{background-color:#303030;}
 div#time{color:#dddddd;}
 div#date{color:#dddddd;}
 </style>
 <center>"""
-        )
-        f.write(
-            '<img src="%s" style="display:block;max-width=800;max-height:600;width:auto;height:auto">'
-            % path
-        )
-        f.write("</center>")
-        f.close()
+            )
+            f.write(
+                f'<img src="{path}" style="display:block;max-width=800;max-height:600;width:auto;height:auto">'
+            )
+            f.write("</center>")
         return True