diff --git a/Dockerfile b/Dockerfile index 73a52dd..1e22375 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ # build ui # ############ -ARG NODE_VERSION=18.16 +ARG NODE_VERSION=18.18 ARG PYTHON_VERSION=3.11-slim FROM node:${NODE_VERSION} AS build-ui diff --git a/api/advent22_api/core/depends.py b/api/advent22_api/core/depends.py index dd28a8b..7566644 100644 --- a/api/advent22_api/core/depends.py +++ b/api/advent22_api/core/depends.py @@ -100,21 +100,33 @@ async def get_all_auto_image_names( return dict(zip(days, rnd.shuffled(ls))) +async def get_all_manual_image_names( + manual_image_names: list[str] = Depends(list_images_manual), +) -> dict[int, str]: + """ + Bilder: "manual" zuordnen + """ + + num_re = re.compile(r"/(\d+)\.", flags=re.IGNORECASE) + return { + int(num_match.group(1)): name + for name in manual_image_names + if (num_match := num_re.search(name)) is not None + } + + async def get_all_image_names( auto_image_names: dict[int, str] = Depends(get_all_auto_image_names), - manual_image_names: list[str] = Depends(list_images_manual), + manual_image_names: dict[int, str] = Depends(get_all_manual_image_names), ) -> dict[int, str]: """ Bilder "auto" und "manual" zu Tagen zuordnen """ - num_re = re.compile(r"/(\d+)\.", flags=re.IGNORECASE) + result = auto_image_names.copy() + result.update(manual_image_names) - for name in manual_image_names: - assert (num_match := num_re.search(name)) is not None - auto_image_names[int(num_match.group(1))] = name - - return auto_image_names + return result @dataclass(slots=True, frozen=True) @@ -184,6 +196,7 @@ async def get_day_image( day: int, days: list[int] = Depends(get_all_sorted_days), cfg: Config = Depends(get_config), + manual_image_names: dict[int, str] = Depends(get_all_manual_image_names), auto_image_names: dict[int, str] = Depends(get_all_auto_image_names), day_parts: dict[int, str] = Depends(get_all_parts), ttfonts: list[TTFont] = Depends(get_all_ttfonts), @@ -196,14 +209,14 @@ async def get_day_image( return None try: - # Versuche, aus "manual"-Ordner zu laden - img = await load_image(f"images_manual/{day}.jpg") + # Versuche "manual"-Bild zu laden + img = await load_image(manual_image_names[day]) # Als AdventImage verarbeiten image = await AdventImage.from_img(img, cfg) return image.img - except RuntimeError: + except (KeyError, RuntimeError): # Erstelle automatisch generiertes Bild return await gen_day_auto_image( day=day,