From b787aa12af11adc972602122ca2a3d7b3ac207f8 Mon Sep 17 00:00:00 2001 From: Hermes Agent Date: Mon, 13 Jul 2026 22:55:38 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Word-Text=20in=20Spielerkl=C3=A4rung=20+?= =?UTF-8?q?=20Fazit=20splitten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Erkennt 'Fazit'-Überschrift als Trenner im Word-Dokument - Spielerklärung erscheint vor dem Pagebreak - Fazit erscheint nach dem 'Meine Meinung'-Banner - Verlag-Fallback aus Formular wenn Excel fehlt - Pro/Kontra nach dem Fazit --- article_server.py | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/article_server.py b/article_server.py index 40c4051..8506f77 100644 --- a/article_server.py +++ b/article_server.py @@ -2177,25 +2177,47 @@ document.getElementById('publishBtn').addEventListener('click',function(){{submi tags_str = ", ".join(tags) if tags else f"{spielname}, Brettspiel, Review, Bewertung, {autor_name}" title_full = f"{spielname} {zusatz}".strip() - # Artikeltext aus Word (zwischen Infobox und Fazit) - artikel_html = "" + # Artikeltext aus Word in Spielerklärung + Fazit splitten + erklarung_html = "" + fazit_html = "" if word_text: - if "<" not in word_text[:100]: - artikel_html = f"

{word_text.replace(chr(10)+chr(10), '

')}

" + # Suche "Fazit"-Überschrift als Trenner + import re as re2 + split_marker = re2.search(r'(?i)^Fazit\s*$|^{2,}Fazit\s*$', word_text, re2.MULTILINE) + if split_marker: + erkl = word_text[:split_marker.start()].strip() + faz = word_text[split_marker.end():].strip() + elif "Fazit" in word_text: + parts = word_text.split("Fazit", 1) + erkl = parts[0].strip() + faz = parts[1].strip() else: - artikel_html = word_text + erkl = word_text + faz = "" + # In HTML umwandeln falls Plaintext + if erkl and "<" not in erkl[:100]: + erkl = f"

{erkl.replace(chr(10)+chr(10), '

')}

" + if faz and "<" not in faz[:100]: + faz = f"

{faz.replace(chr(10)+chr(10), '

')}

" + erklarung_html = erkl + fazit_html = faz - body = f"""

{spielname} — {komplex or 'Brettspiel'} von {autoren or verlag or 'unbekannt'}

+ # Verlag/Autor Fallback + display_autor = autoren or verlag or meta.get("verlag", "").strip() or "unbekannt" + + body = f"""

{spielname} — {komplex or 'Brettspiel'} von {display_autor}


 

Fakten zum Spiel

{fakten_html} {disc_html} {mech_html} -{artikel_html} +{erklarung_html} +
+

Meine Meinung

+{fazit_html} {pro_html} {kontra_html} -

Meine Meinung

{wertung_html}

 

{{{{module Discord-Hinweis Tests}}}}