Add a new album.
[kiosk.git] / local_photos_mirror_renderer.py
index 2e5499dcc4a472559633ac88fc75aa64fdfbc0f2..bb158b9d55d962062c1ff2da0a43c092624d5553 100644 (file)
@@ -1,18 +1,22 @@
+#!/usr/bin/env python3
+
 import os
 import os
-import file_writer
-import renderer
 import random
 import re
 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"""
 
     """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(
         [
 
     album_whitelist = frozenset(
         [
-            "8-Mile Lake Hike",
+            "Autumn at Kubota",
             "Bangkok and Phuket, 2003",
             "Barn",
             "Blue Angels... Seafair",
             "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",
             "Newer Alex Photos",
             "Ohme Gardens",
             "Olympic Sculpture Park",
+            "Portland, ME 2021",
             "Prague and Munich 2019",
             "Random",
             "Prague and Munich 2019",
             "Random",
-            "Scott and Lynn",
             "SFO 2014",
             "SFO 2014",
+            "Scott and Lynn",
+            "Sculpture Place",
             "Skiing with Alex",
             "Sonoma",
             "Trip to California, '16",
             "Trip to San Francisco",
             "Trip to East Coast '16",
             "Skiing with Alex",
             "Sonoma",
             "Trip to California, '16",
             "Trip to San Francisco",
             "Trip to East Coast '16",
+            "Turkey 2022",
             "Tuscany 2008",
             "Tuscany 2008",
+            "WA Roadtrip, 2021",
+            "WA Wines",
             "Yosemite 2010",
             "Zoo",
         ]
             "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"
 
         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:
         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:
         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
 
                 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 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:
                     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(
                         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
 
                         )
                         self.candidate_photos.add(photo_url)
         return True
 
-    # Pick one of the cached URLs and build a page.
     def choose_photo(self):
     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]
         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>"""
 <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
 
 
         return True