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 --- immich.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'immich.py') diff --git a/immich.py b/immich.py index e73b34e..ad39942 100644 --- a/immich.py +++ b/immich.py @@ -3,34 +3,38 @@ from io import BytesIO from queue import Queue from texture import ImageTexture +from manager import PixMan class ImmichConnector: - def __init__(self, server_url, api_key): - self.server_url = server_url.removesuffix("/") - self.api_key = api_key + def __init__(self): + config = PixMan().config + self.server_url = config.immich_url.removesuffix("/") + self.api_key = config.immich_api_key self.texture_load_queue = Queue() def _request(self, endpoint): + if not self.server_url: + return None return requests.get(f"{self.server_url}/api/{endpoint}", headers={ "x-api-key": self.api_key }) def load_all_albums(self): response = self._request("albums") - if response.status_code != 200: return + if not response or response.status_code != 200: return data = response.json() return data def load_album_assets(self, key): response = self._request(f"albums/{key}") - if response.status_code != 200: return + if not response or response.status_code != 200: return data = response.json() return data["assets"] def load_image(self, key, size="preview"): response = self._request(f"assets/{key}/thumbnail?size={size}") - if response.status_code != 200: return None, None + if not response or response.status_code != 200: return None, None image_data = BytesIO(response.content) mimetype = response.headers.get("Content-Type") @@ -47,3 +51,7 @@ class ImmichConnector: continue # Texture was never loaded so it doesn't need to be free'd image_data, _ = self.load_image(image_texture.asset_key, size) image_texture.initialize(image_data) + + def validate_connection(self): + # TODO + return True -- cgit v1.2.3