Format codebase w/ black.
[kiosk.git] / local_photos_mirror_renderer.py
index 020683d00e8b8c793aa500006708e463aff87744..2e5499dcc4a472559633ac88fc75aa64fdfbc0f2 100644 (file)
@@ -1,46 +1,61 @@
 import os
 import file_writer
 import renderer
-import sets
 import random
+import re
+
 
 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_whitelist = sets.ImmutableSet([
-        '1208 Newer Alex Photos',
-        '1013 Scott and Lynn',
-        '0106 Key West 2019',
-        '1017 Olympic Sculpture Park',
-        '0212 Chihuly Glass',
-        '0730 Trip to East Coast \'16',
-        '0715 Barn',
-        '1009 East Coast 2018',
-        '0819 Skiing with Alex',
-        '0819 Friends',
-        '0227 Trip to California, \'16',
-        '0407 London, 2018',
-        '0528 Ohme Gardens',
-        '0809 Bangkok and Phuket, 2003',
-        '0803 Blue Angels... Seafair',
-        '0719 Dunn Gardens',
-        '0514 Krakow 2009',
-        '0515 Tuscany 2008',
-        '0508 Yosemite 2010',
-        '0611 Sonoma',
-        '1025 NJ 2015',
-        '0407 Las Vegas, 2017',
-    ])
+    album_whitelist = frozenset(
+        [
+            "8-Mile Lake Hike",
+            "Bangkok and Phuket, 2003",
+            "Barn",
+            "Blue Angels... Seafair",
+            "Chihuly Glass",
+            "Dunn Gardens",
+            "East Coast 2018",
+            "Fall '17",
+            "Friends",
+            "Hiking",
+            "Key West 2019",
+            "Krakow 2009",
+            "Kubota Gardens",
+            "Las Vegas, 2017",
+            "London, 2018",
+            "Munich, July 2018",
+            "NJ 2015",
+            "Newer Alex Photos",
+            "Ohme Gardens",
+            "Olympic Sculpture Park",
+            "Prague and Munich 2019",
+            "Random",
+            "Scott and Lynn",
+            "SFO 2014",
+            "Skiing with Alex",
+            "Sonoma",
+            "Trip to California, '16",
+            "Trip to San Francisco",
+            "Trip to East Coast '16",
+            "Tuscany 2008",
+            "Yosemite 2010",
+            "Zoo",
+        ]
+    )
 
-    extension_whitelist = sets.ImmutableSet([
-        'jpg',
-        'gif',
-        'JPG',
-        'jpeg',
-        'GIF',
-    ])
+    extension_whitelist = frozenset(
+        [
+            "jpg",
+            "gif",
+            "JPG",
+            "jpeg",
+            "GIF",
+        ]
+    )
 
     def __init__(self, name_to_timeout_dict):
         super(local_photos_mirror_renderer, self).__init__(name_to_timeout_dict, False)
@@ -50,27 +65,32 @@ class local_photos_mirror_renderer(renderer.debuggable_abstaining_renderer):
         return "local_photos_mirror"
 
     def periodic_render(self, key):
-        if (key == 'Index Photos'):
+        if key == "Index Photos":
             return self.index_photos()
-        elif (key == 'Choose Photo'):
+        elif key == "Choose Photo":
             return self.choose_photo()
         else:
-            raise error('Unexpected operation')
+            raise error("Unexpected operation")
+
+    def album_is_in_whitelist(self, name):
+        for wlalbum in self.album_whitelist:
+            if re.search("\d+ %s" % wlalbum, name) != None:
+                return True
+        return False
 
     # Walk the filesystem looking for photos in whitelisted albums and
     # keep their paths in memory.
     def index_photos(self):
         for root, subdirs, files in os.walk(self.album_root_directory):
-            last_dir = root.rsplit('/', 1)[1]
-            if last_dir in self.album_whitelist:
+            last_dir = root.rsplit("/", 1)[1]
+            if self.album_is_in_whitelist(last_dir):
                 for x in files:
-                    extension = x.rsplit('.', 1)[1]
+                    extension = x.rsplit(".", 1)[1]
                     if extension in self.extension_whitelist:
                         photo_path = os.path.join(root, x)
                         photo_url = photo_path.replace(
-                            "/usr/local/export/www/",
-                            "http://10.0.0.18/",
-                            1)
+                            "/usr/local/export/www/", "http://10.0.0.18/", 1
+                        )
                         self.candidate_photos.add(photo_url)
         return True
 
@@ -80,21 +100,27 @@ class local_photos_mirror_renderer(renderer.debuggable_abstaining_renderer):
             print("No photos!")
             return False
         path = random.sample(self.candidate_photos, 1)[0]
-        f = file_writer.file_writer('photo_23_none.html')
-        f.write("""
+        f = file_writer.file_writer("photo_23_3600.html")
+        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)
+<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()
         return True
 
+
 # Test code
-#x = local_photos_mirror_renderer({"Index Photos": (60 * 60 * 12),
+# x = local_photos_mirror_renderer({"Index Photos": (60 * 60 * 12),
 #                                  "Choose Photo": (1)})
-#x.index_photos()
-#x.choose_photo()
+# x.index_photos()
+# x.choose_photo()