This commit is contained in:
2025-08-04 11:58:24 +00:00
parent 06729954aa
commit ae8fb42caf

View File

@@ -1582,18 +1582,48 @@ def is_valid_wikipedia_article_url(url):
logger.warning(f"URL-Check fehlgeschlagen (Request-Fehler): {url[:100]} - {e}") logger.warning(f"URL-Check fehlgeschlagen (Request-Fehler): {url[:100]} - {e}")
return False return False
# ==============================================================================
# 12. ALIGNMENT DEMO UTILITY
# ==============================================================================
def is_valid_wikipedia_article_url(url): def is_valid_wikipedia_article_url(url):
# ... (Code dieser Funktion bleibt unverändert) ... """
Prüft, ob eine Wikipedia-URL auf einen tatsächlich existierenden Artikel verweist.
Erkennt "red links" (nicht existierende Seiten), die trotzdem Status 200 zurückgeben.
"""
logger = logging.getLogger(__name__)
if not url or not "wikipedia.org/wiki/" in url.lower():
return False
headers = {"User-Agent": random.choice(USER_AGENTS)}
try:
# GET-Request ist nötig, um Weiterleitungen zu folgen
response = requests.get(url, timeout=7, allow_redirects=True, headers=headers)
# 1. Primär-Check: Prüfe die finale URL auf den 'redlink=1' Parameter
if 'action=edit&redlink=1' in response.url:
logger.warning(f"URL-Check fehlgeschlagen (redlink=1): {url[:100]}")
return False
# 2. Sekundär-Check: Prüfe auf Status-Code und typische "Seite existiert nicht"-Texte
if response.status_code == 200:
content_lower = response.text.lower()
# Deutsche und englische Phrasen für nicht-existente Seiten
if "diese seite existiert nicht" in content_lower or "wikipedia does not have an article with this exact name" in content_lower:
logger.warning(f"URL-Check fehlgeschlagen (Text 'Seite existiert nicht' gefunden): {url[:100]}")
return False
logger.debug(f"URL-Check erfolgreich (200 OK, kein Redlink): {url[:100]}")
return True
else:
logger.warning(f"URL-Check fehlgeschlagen (Status {response.status_code}): {url[:100]}")
return False
except requests.exceptions.RequestException as e:
logger.warning(f"URL-Check fehlgeschlagen (Request-Fehler): {url[:100]} - {e}")
return False
# ============================================================================== # ==============================================================================
# 12. ALIGNMENT DEMO UTILITY # 12. ALIGNMENT DEMO UTILITY
# ============================================================================== # ==============================================================================
def alignment_demo(sheet_handler): def alignment_demo(sheet_handler):
""" """
Schreibt die Header-Struktur (basierend auf v2.1.4, 71 Spalten) ins Google Sheet zur Dokumentation. Schreibt die Header-Struktur (basierend auf v2.1.4, 71 Spalten) ins Google Sheet zur Dokumentation.
Dies ist die Single Source of Truth für die Spaltenbedeutung. Version mit ungekürzten Texten. Dies ist die Single Source of Truth für die Spaltenbedeutung. Version mit ungekürzten Texten.