diff options
Diffstat (limited to 'src/server/immich.py')
| -rw-r--r-- | src/server/immich.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/server/immich.py b/src/server/immich.py index d5c5fd1..84aa7be 100644 --- a/src/server/immich.py +++ b/src/server/immich.py @@ -1,4 +1,5 @@ import requests +import random from io import BytesIO from queue import Queue @@ -32,6 +33,23 @@ class ImmichConnector: data = response.json() return data["assets"] + def load_albums_assets(self, keys): + config = PixMan().config + + assets = [] + for key in keys: + assets += self.load_album_assets(key) + + if config.order == "newest-first" or config.order == "oldest-first": + # NOTE: asset.createdAt is a ISO 8601 date string, which are able to be sorted via python string sorting + assets_sorted = sorted(assets, key=lambda asset: asset["createdAt"], reverse=(config.order == "newest-first")) + elif config.order == "random": + assets_sorted = assets + random.shuffle(assets_sorted) + + assert assets_sorted, f"Invalid config value for 'order': {config.order}" + return assets_sorted + def load_image(self, key, size="preview"): response = self._request(f"assets/{key}/thumbnail?size={size}") if not response or response.status_code != 200: return None, None @@ -51,7 +69,8 @@ class ImmichConnector: self.texture_load_queue.put((texture_list, image_texture)) def idle(self): - size = "preview" # TODO + config = PixMan().config + size = config.display_size while True: texture_list, image_texture = self.texture_load_queue.get() if not texture_list.index_in_cache_range(image_texture.asset_index) or texture_list.void: |
