X-Git-Url: https://wannabe.guru.org/gitweb/?a=blobdiff_plain;f=local_photos_mirror_renderer.py;h=bb158b9d55d962062c1ff2da0a43c092624d5553;hb=09215cf1a1498c99ee75a7cbef3ea62f58a56f0d;hp=0b8f7fc0a4b9e8724b8dc257e1df35724c121785;hpb=d6990436e08a57ce211b10058dc61fb223cb94ec;p=kiosk.git diff --git a/local_photos_mirror_renderer.py b/local_photos_mirror_renderer.py index 0b8f7fc..bb158b9 100644 --- a/local_photos_mirror_renderer.py +++ b/local_photos_mirror_renderer.py @@ -1,116 +1,134 @@ +#!/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', - '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', - ]) + album_whitelist = frozenset( + [ + "Autumn at Kubota", + "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", + "Portland, ME 2021", + "Prague and Munich 2019", + "Random", + "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", + ] + ) - extension_whitelist = frozenset([ - '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) - 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): - if (key == 'Index Photos'): + def periodic_render(self, key: str) -> bool: + 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 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] + 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( + """ -
""") - f.write('' % path) - f.write("
") - f.close() +
""" + ) + f.write( + f'' + ) + f.write("
") 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()