summaryrefslogtreecommitdiff
path: root/settings.py
diff options
context:
space:
mode:
Diffstat (limited to 'settings.py')
-rw-r--r--settings.py39
1 files changed, 39 insertions, 0 deletions
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)