From 8837e617e4f65cd810485ee8c2b9517191fbc533 Mon Sep 17 00:00:00 2001 From: black-sliver <59490463+black-sliver@users.noreply.github.com> Date: Sat, 25 Oct 2025 20:19:38 +0000 Subject: [PATCH] WebHost, Multiple Worlds: fix images not showing in guides (#5576) * Multiple: resize FR RA network commands screenshot This is now more in line with the text (and the english version). * Multiple: optimize EN RA network commands screenshot The URL has changed, so it's a good time to optimize. * WebHost, Worlds: fix retroarch images not showing Implements a src/url replacement for relative paths. Moves the RA screenshots to worlds/generic since they are shared. Also now uses the FR version in ffmq. Also fixes the formatting that resultet in the list breaking. Also moves imports in render_markdown. Guides now also properly render on Github. * Factorio: optimize screenshots The URL has changed, so it's a good time to optimize. * Factorio: change guide screenshots to use relative URL * Test: markdown: fix tests on Windows We also can't use delete=True, delete_on_close=False because that's not supported in Py3.11. * Test: markdown: fix typo I hope that's it now. *sigh* * Landstalker: fix doc images not showing Change to relative img urls. * Landstalker: optimize doc PNGs The URL has changed, so it's a good time to optimize. --- WebHostLib/markdown.py | 90 ++++++++++++++++++ WebHostLib/misc.py | 58 ++--------- test/webhost/test_markdown.py | 78 +++++++++++++++ worlds/alttp/docs/multiworld_en.md | 5 +- worlds/alttp/docs/multiworld_es.md | 5 +- worlds/alttp/docs/multiworld_fr.md | 5 +- .../docs/retroarch-network-commands-en.png | Bin 31292 -> 0 bytes .../docs/retroarch-network-commands-fr.png | Bin 20461 -> 0 bytes worlds/dkc3/docs/setup_en.md | 5 +- worlds/factorio/docs/connect-to-ap-server.png | Bin 108119 -> 87181 bytes worlds/factorio/docs/factorio-download.png | Bin 641865 -> 504697 bytes worlds/factorio/docs/setup_en.md | 4 +- worlds/ffmq/docs/setup_en.md | 5 +- worlds/ffmq/docs/setup_fr.md | 6 +- .../docs/retroarch-network-commands-en.png | Bin 0 -> 23143 bytes .../docs/retroarch-network-commands-fr.png | Bin 0 -> 15160 bytes worlds/ladx/docs/setup_en.md | 5 +- .../landstalker/docs/landstalker_setup_en.md | 10 +- worlds/landstalker/docs/ls_guide_ap.png | Bin 2283 -> 986 bytes worlds/landstalker/docs/ls_guide_client.png | Bin 86096 -> 65866 bytes worlds/landstalker/docs/ls_guide_emu.png | Bin 2598 -> 1355 bytes worlds/landstalker/docs/ls_guide_rom.png | Bin 3951 -> 1659 bytes worlds/lufia2ac/docs/setup_en.md | 5 +- worlds/oot/docs/setup_de.md | 2 +- worlds/sm/docs/multiworld_en.md | 5 +- worlds/smw/docs/setup_en.md | 5 +- worlds/smz3/docs/multiworld_en.md | 5 +- worlds/soe/docs/multiworld_en.md | 4 +- worlds/zillion/docs/setup_en.md | 5 +- 29 files changed, 209 insertions(+), 98 deletions(-) create mode 100644 WebHostLib/markdown.py create mode 100644 test/webhost/test_markdown.py delete mode 100644 worlds/alttp/docs/retroarch-network-commands-en.png delete mode 100644 worlds/alttp/docs/retroarch-network-commands-fr.png create mode 100644 worlds/generic/docs/retroarch-network-commands-en.png create mode 100644 worlds/generic/docs/retroarch-network-commands-fr.png diff --git a/WebHostLib/markdown.py b/WebHostLib/markdown.py new file mode 100644 index 00000000..ff7a5fd7 --- /dev/null +++ b/WebHostLib/markdown.py @@ -0,0 +1,90 @@ +import re +from collections import Counter + +import mistune +from werkzeug.utils import secure_filename + + +__all__ = [ + "ImgUrlRewriteInlineParser", + 'render_markdown', +] + + +class ImgUrlRewriteInlineParser(mistune.InlineParser): + relative_url_base: str + + def __init__(self, relative_url_base: str, hard_wrap: bool = False) -> None: + super().__init__(hard_wrap) + self.relative_url_base = relative_url_base + + @staticmethod + def _find_game_name_by_folder_name(name: str) -> str | None: + from worlds.AutoWorld import AutoWorldRegister + + for world_name, world_type in AutoWorldRegister.world_types.items(): + if world_type.__module__ == f"worlds.{name}": + return world_name + return None + + def parse_link(self, m: re.Match[str], state: mistune.InlineState) -> int | None: + res = super().parse_link(m, state) + if res is not None and state.tokens and state.tokens[-1]["type"] == "image": + image_token = state.tokens[-1] + url: str = image_token["attrs"]["url"] + if not url.startswith("/") and not "://" in url: + # replace relative URL to another world's doc folder with the webhost folder layout + if url.startswith("../../") and "/docs/" in self.relative_url_base: + parts = url.split("/", 4) + if parts[2] != ".." and parts[3] == "docs": + game_name = self._find_game_name_by_folder_name(parts[2]) + if game_name is not None: + url = "/".join(parts[1:2] + [secure_filename(game_name)] + parts[4:]) + # change relative URL to point to deployment folder + url = f"{self.relative_url_base}/{url}" + image_token['attrs']['url'] = url + return res + + +def render_markdown(path: str, img_url_base: str | None = None) -> str: + markdown = mistune.create_markdown( + escape=False, + plugins=[ + "strikethrough", + "footnotes", + "table", + "speedup", + ], + ) + + heading_id_count: Counter[str] = Counter() + + def heading_id(text: str) -> str: + nonlocal heading_id_count + + # there is no good way to do this without regex + s = re.sub(r"[^\w\- ]", "", text.lower()).replace(" ", "-").strip("-") + n = heading_id_count[s] + heading_id_count[s] += 1 + if n > 0: + s += f"-{n}" + return s + + def id_hook(_: mistune.Markdown, state: mistune.BlockState) -> None: + for tok in state.tokens: + if tok["type"] == "heading" and tok["attrs"]["level"] < 4: + text = tok["text"] + assert isinstance(text, str) + unique_id = heading_id(text) + tok["attrs"]["id"] = unique_id + tok["text"] = f"{text}" # make header link to itself + + markdown.before_render_hooks.append(id_hook) + if img_url_base: + markdown.inline = ImgUrlRewriteInlineParser(img_url_base) + + with open(path, encoding="utf-8-sig") as f: + document = f.read() + html = markdown(document) + assert isinstance(html, str), "Unexpected mistune renderer in render_markdown" + return html diff --git a/WebHostLib/misc.py b/WebHostLib/misc.py index b56b11dd..44e81a59 100644 --- a/WebHostLib/misc.py +++ b/WebHostLib/misc.py @@ -9,6 +9,7 @@ from werkzeug.utils import secure_filename from worlds.AutoWorld import AutoWorldRegister, World from . import app, cache +from .markdown import render_markdown from .models import Seed, Room, Command, UUID, uuid4 from Utils import title_sorted @@ -27,49 +28,6 @@ def get_visible_worlds() -> dict[str, type(World)]: return worlds -def render_markdown(path: str) -> str: - import mistune - from collections import Counter - - markdown = mistune.create_markdown( - escape=False, - plugins=[ - "strikethrough", - "footnotes", - "table", - "speedup", - ], - ) - - heading_id_count: Counter[str] = Counter() - - def heading_id(text: str) -> str: - nonlocal heading_id_count - import re # there is no good way to do this without regex - - s = re.sub(r"[^\w\- ]", "", text.lower()).replace(" ", "-").strip("-") - n = heading_id_count[s] - heading_id_count[s] += 1 - if n > 0: - s += f"-{n}" - return s - - def id_hook(_: mistune.Markdown, state: mistune.BlockState) -> None: - for tok in state.tokens: - if tok["type"] == "heading" and tok["attrs"]["level"] < 4: - text = tok["text"] - assert isinstance(text, str) - unique_id = heading_id(text) - tok["attrs"]["id"] = unique_id - tok["text"] = f"{text}" # make header link to itself - - markdown.before_render_hooks.append(id_hook) - - with open(path, encoding="utf-8-sig") as f: - document = f.read() - return markdown(document) - - @app.errorhandler(404) @app.errorhandler(jinja2.exceptions.TemplateNotFound) def page_not_found(err): @@ -91,10 +49,9 @@ def game_info(game, lang): theme = get_world_theme(game) secure_game_name = secure_filename(game) lang = secure_filename(lang) - document = render_markdown(os.path.join( - app.static_folder, "generated", "docs", - secure_game_name, f"{lang}_{secure_game_name}.md" - )) + file_dir = os.path.join(app.static_folder, "generated", "docs", secure_game_name) + file_dir_url = url_for("static", filename=f"generated/docs/{secure_game_name}") + document = render_markdown(os.path.join(file_dir, f"{lang}_{secure_game_name}.md"), file_dir_url) return render_template( "markdown_document.html", title=f"{game} Guide", @@ -119,10 +76,9 @@ def tutorial(game: str, file: str): theme = get_world_theme(game) secure_game_name = secure_filename(game) file = secure_filename(file) - document = render_markdown(os.path.join( - app.static_folder, "generated", "docs", - secure_game_name, file+".md" - )) + file_dir = os.path.join(app.static_folder, "generated", "docs", secure_game_name) + file_dir_url = url_for("static", filename=f"generated/docs/{secure_game_name}") + document = render_markdown(os.path.join(file_dir, f"{file}.md"), file_dir_url) return render_template( "markdown_document.html", title=f"{game} Guide", diff --git a/test/webhost/test_markdown.py b/test/webhost/test_markdown.py new file mode 100644 index 00000000..ae27a45e --- /dev/null +++ b/test/webhost/test_markdown.py @@ -0,0 +1,78 @@ +import os +import unittest +from tempfile import NamedTemporaryFile + +from mistune import HTMLRenderer, Markdown + +from WebHostLib.markdown import ImgUrlRewriteInlineParser, render_markdown + + +class ImgUrlRewriteTest(unittest.TestCase): + markdown: Markdown + base_url = "/static/generated/docs/some_game" + + def setUp(self) -> None: + self.markdown = Markdown( + renderer=HTMLRenderer(escape=False), + inline=ImgUrlRewriteInlineParser(self.base_url), + ) + + def test_relative_img_rewrite(self) -> None: + html = self.markdown("") + self.assertIn(f'src="{self.base_url}/image.png"', html) + + def test_absolute_img_no_rewrite(self) -> None: + html = self.markdown("") + self.assertIn(f'src="/image.png"', html) + self.assertNotIn(self.base_url, html) + + def test_remote_img_no_rewrite(self) -> None: + html = self.markdown("") + self.assertIn(f'src="https://example.com/image.png"', html) + self.assertNotIn(self.base_url, html) + + def test_relative_link_no_rewrite(self) -> None: + # The parser is only supposed to update images, not links. + html = self.markdown("[Link](image.png)") + self.assertIn(f'href="image.png"', html) + self.assertNotIn(self.base_url, html) + + def test_absolute_link_no_rewrite(self) -> None: + html = self.markdown("[Link](/image.png)") + self.assertIn(f'href="/image.png"', html) + self.assertNotIn(self.base_url, html) + + def test_auto_link_no_rewrite(self) -> None: + html = self.markdown("") + self.assertIn(f'href="https://example.com/image.png"', html) + self.assertNotIn(self.base_url, html) + + def test_relative_img_to_other_game(self) -> None: + html = self.markdown("") + self.assertIn(f'src="{self.base_url}/../Archipelago/image.png"', html) + + +class RenderMarkdownTest(unittest.TestCase): + """Tests that render_markdown does the right thing.""" + base_url = "/static/generated/docs/some_game" + + def test_relative_img_rewrite(self) -> None: + f = NamedTemporaryFile(delete=False) + try: + f.write("".encode("utf-8")) + f.close() + html = render_markdown(f.name, self.base_url) + self.assertIn(f'src="{self.base_url}/image.png"', html) + finally: + os.unlink(f.name) + + def test_no_img_rewrite(self) -> None: + f = NamedTemporaryFile(delete=False) + try: + f.write("".encode("utf-8")) + f.close() + html = render_markdown(f.name) + self.assertIn(f'src="image.png"', html) + self.assertNotIn(self.base_url, html) + finally: + os.unlink(f.name) diff --git a/worlds/alttp/docs/multiworld_en.md b/worlds/alttp/docs/multiworld_en.md index 5d7fc43e..be0310f9 100644 --- a/worlds/alttp/docs/multiworld_en.md +++ b/worlds/alttp/docs/multiworld_en.md @@ -88,9 +88,8 @@ You only have to do these steps once. 1. Enter the RetroArch main menu screen. 2. Go to Settings --> User Interface. Set "Show Advanced Settings" to ON. 3. Go to Settings --> Network. Set "Network Commands" to ON. (It is found below Request Device 16.) Leave the default - Network Command Port at 55355. - - + Network Command Port at 55355. \ +  4. Go to Main Menu --> Online Updater --> Core Downloader. Scroll down and select "Nintendo - SNES / SFC (bsnes-mercury Performance)". diff --git a/worlds/alttp/docs/multiworld_es.md b/worlds/alttp/docs/multiworld_es.md index eade0372..5cad0660 100644 --- a/worlds/alttp/docs/multiworld_es.md +++ b/worlds/alttp/docs/multiworld_es.md @@ -88,9 +88,8 @@ Sólo hay que seguir estos pasos una vez. 1. Comienza en la pantalla del menú principal de RetroArch. 2. Ve a Ajustes --> Interfaz de usario. Configura "Mostrar ajustes avanzados" en ON. 3. Ve a Ajustes --> Red. Pon "Comandos de red" en ON. (Se encuentra bajo Request Device 16.) Deja en 55355 el valor por defecto, - el Puerto de comandos de red. - - + el Puerto de comandos de red. \ +  4. Ve a Menú principal --> Actualizador en línea --> Descargador de núcleos. Desplázate y selecciona "Nintendo - SNES / SFC (bsnes-mercury Performance)". diff --git a/worlds/alttp/docs/multiworld_fr.md b/worlds/alttp/docs/multiworld_fr.md index 0638d843..d73638f9 100644 --- a/worlds/alttp/docs/multiworld_fr.md +++ b/worlds/alttp/docs/multiworld_fr.md @@ -89,9 +89,8 @@ Vous n'avez qu'à faire ces étapes qu'une fois. 1. Entrez dans le menu principal RetroArch 2. Allez dans Réglages --> Interface utilisateur. Mettez "Afficher les réglages avancés" sur ON. 3. Allez dans Réglages --> Réseau. Mettez "Commandes Réseau" sur ON. (trouvé sous Request Device 16.) Laissez le -Port des commandes réseau à 555355. - - + Port des commandes réseau à 555355. \ +  4. Allez dans Menu Principal --> Mise à jour en ligne --> Téléchargement de cœurs. Descendez jusqu'a"Nintendo - SNES / SFC (bsnes-mercury Performance)" et sélectionnez le. diff --git a/worlds/alttp/docs/retroarch-network-commands-en.png b/worlds/alttp/docs/retroarch-network-commands-en.png deleted file mode 100644 index fd97dfa097cdf762fddf074a0d716737bd659edf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31292 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 diff --git a/worlds/alttp/docs/retroarch-network-commands-fr.png b/worlds/alttp/docs/retroarch-network-commands-fr.png deleted file mode 100644 index 60eba5b1b0fb5c45f51b6c8728617bd0a9043775..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20461 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
ieh|6Ar-ggtFuzTaRgr)!p`2 zROs3YHei?uR1DGM3Z4_