import requests from io import BytesIO from texture import ImageTexture class ImmichConnector: def __init__(self, server_url, api_key): self.server_url = server_url.removesuffix("/") self.api_key = api_key def _request(self, endpoint): return requests.get(f"{self.server_url}/api/{endpoint}", headers={ "x-api-key": self.api_key }) def load_album_assets(self, key): response = self._request(f"albums/{key}") if response.status_code != 200: return data = response.json() return data["assets"] def load_image(self, pd, key, exif=None): response = self._request(f"assets/{key}/thumbnail?size=fullsize") if response.status_code != 200: return image_data = BytesIO(response.content) it = ImageTexture(image_data, exif) pd.textures.append(it) print(f"Loaded image {key}") def idle(self, pd): for asset in self.load_album_assets("bac029a5-972b-4519-bce0-a0d74add3969"): self.load_image(pd, asset["id"], asset["exifInfo"])