From b8df4605b42d9a61bb4ae4731efabbdc38166063 Mon Sep 17 00:00:00 2001 From: Tim Keller Date: Mon, 16 Jun 2025 21:50:38 -0500 Subject: add config and add application thread manager --- settings.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 settings.py (limited to 'settings.py') diff --git a/settings.py b/settings.py new file mode 100644 index 0000000..43cb024 --- /dev/null +++ b/settings.py @@ -0,0 +1,39 @@ +from dataclasses import dataclass, asdict, field +import json + + +@dataclass +class AlbumList: + name: str + album_keys: list[str] + + +@dataclass +class Config: + # Immich server + immich_url: str = "" + immich_api_key: str = "" + # Display + image_duration: float = 10.0 + transition_duration: float = 0.5 + max_framerate: float = 30.0 + auto_transition: bool = True + display_size: str = "preview" # 'fullsize', 'preview', 'thumbnail' + # Cache + max_cache_assets: int = 100 + # Albums data + album_lists: list[AlbumList] = field(default_factory=list) + album_list_selected: int = None + + def __post_init__(self): + self.album_lists = [ AlbumList(*a) for a in self.album_lists ] + + @classmethod + def load(cls, filepath): + with open(filepath, "r") as fp: + return cls(**json.load(fp)) + + def save(self, filepath): + data = asdict(self) + with open(filepath, "w") as fp: + json.dump(data, fp, indent=2) -- cgit v1.2.3