From ee5197000e9b5cf76ca0ced2b8a107af61c0d5b9 Mon Sep 17 00:00:00 2001 From: Matthias Jung Date: Sun, 9 Nov 2025 17:48:47 +0100 Subject: [PATCH] feature: alt-text for photos --- renderer/fifty_ohm_html_renderer.py | 9 +++++---- src/build.py | 2 ++ src/download.py | 9 +++++++++ test/test_photo.py | 4 +++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/renderer/fifty_ohm_html_renderer.py b/renderer/fifty_ohm_html_renderer.py index 8743ed6..e50bcac 100644 --- a/renderer/fifty_ohm_html_renderer.py +++ b/renderer/fifty_ohm_html_renderer.py @@ -206,18 +206,19 @@ class FiftyOhmHtmlRenderer(HtmlRenderer): return self.render_picture_helper(token.id, token.ref, token.text, token.number, alt_text) @staticmethod - def render_photo_helper(id, ref, text, number): + def render_photo_helper(id, ref, text, number, alt_text): return f"""
- + {alt_text}
Abbildung {number}: {text}
""" def render_photo(self, token): + alt_text = "Alt-Text noch nicht verfügbar" if self.photo_handler is not None: - self.photo_handler(token.id) - return self.render_photo_helper(token.id, token.ref, token.text, token.number) + alt_text = self.photo_handler(token.id) or alt_text + return self.render_photo_helper(token.id, token.ref, token.text, token.number, alt_text) @staticmethod def render_cell_helper(cell, alignment, type): diff --git a/src/build.py b/src/build.py index 0f89135..0729531 100644 --- a/src/build.py +++ b/src/build.py @@ -144,6 +144,8 @@ class Build: file = f"{id}.jpg" try: shutil.copyfile(self.config.p_data_photos / file, self.config.p_build_photos / file) + if (self.config.p_data_photos / f"{id}.txt").exists(): + return (self.config.p_data_photos / f"{id}.txt").read_text() except FileNotFoundError: tqdm.write(f"\033[31mPhoto #{id} not found\033[0m") diff --git a/src/download.py b/src/download.py index 684fdd7..fd443f6 100644 --- a/src/download.py +++ b/src/download.py @@ -92,10 +92,19 @@ class Download: photos = self.api.get("items/Fotos", params={"limit": -1}) for photo in tqdm(photos, desc="Downloading photos"): + # Save Photo to file data = self.api.get_file("assets/" + photo["photo"]) with (self.config.p_data_photos / f"{photo['id']}.jpg").open("wb") as file: file.write(data) + # Save Alt-Text to file + prefix = "" + if photo["alt_text"] is not None: + if photo["alt_text_reviewed"] is None: + prefix = "Der folgende Alt-Text wurde noch nicht geprüft: " + with (self.config.p_data_photos / f"{photo['id']}.txt").open("w") as file: + file.write(prefix + photo["alt_text"]) + def download_pictures(self): self.config.p_data_pictures.mkdir(parents=True, exist_ok=True) diff --git a/test/test_photo.py b/test/test_photo.py index 6e0c042..60d243d 100644 --- a/test/test_photo.py +++ b/test/test_photo.py @@ -9,7 +9,9 @@ from test.util import paragraph @pytest.mark.html def test_photo_html(): assertions = { - "[photo:123:abc:Text]": FiftyOhmHtmlRenderer.render_photo_helper("123", "abc", "Text", "TODO"), + "[photo:123:abc:Text]": FiftyOhmHtmlRenderer.render_photo_helper( + "123", "abc", "Text", "TODO", "Alt-Text noch nicht verfügbar" + ), } for assertion in assertions: