#!/usr/bin/env python3 """ Automatischer Fix für article-data.json Fetch-URLs in Flask Ersetzt relative URLs durch /static/ URLs """ import re import os from pathlib import Path def fix_html_file(html_path): """Ersetzt die alten Fetch-URLs durch die neuen Flask-URLs""" if not os.path.exists(html_path): print(f"❌ Datei nicht gefunden: {html_path}") return False print(f"📖 Öffne: {html_path}") with open(html_path, 'r', encoding='utf-8') as f: content = f.read() original_content = content changes = [] # Fix 1: fetch('article-data.json') → fetch('/static/article-data.json') if "fetch('article-data.json')" in content or 'fetch("article-data.json")' in content: content = content.replace("fetch('article-data.json')", "fetch('/static/article-data.json')") content = content.replace('fetch("article-data.json")', 'fetch("/static/article-data.json")') changes.append("✓ article-data.json URL aktualisiert") # Fix 2: fetch('config.json') → fetch('/static/config.json') if "fetch('config.json')" in content or 'fetch("config.json")' in content: content = content.replace("fetch('config.json')", "fetch('/static/config.json')") content = content.replace('fetch("config.json")', 'fetch("/static/config.json")') changes.append("✓ config.json URL aktualisiert") # Fix 3: register('service-worker.js') → register('/static/service-worker.js') if "register('service-worker.js')" in content or 'register("service-worker.js")' in content: content = content.replace("register('service-worker.js')", "register('/static/service-worker.js')") content = content.replace('register("service-worker.js")', 'register("/static/service-worker.js")') changes.append("✓ service-worker.js URL aktualisiert") if content != original_content: # Backup erstellen backup_path = html_path + ".backup" with open(backup_path, 'w', encoding='utf-8') as f: f.write(original_content) print(f"💾 Backup erstellt: {backup_path}") # Neue Version speichern with open(html_path, 'w', encoding='utf-8') as f: f.write(content) print(f"✅ HTML aktualisiert: {html_path}") for change in changes: print(f" {change}") return True else: print("⚠️ Keine Änderungen notwendig (URLs sind bereits korrekt)") return False def check_static_files(): """Prüft ob die benötigten Dateien im static/ Ordner sind""" print("\n🔍 Prüfe static/ Verzeichnis...") files_to_check = ['article-data.json', 'config.json'] found = [] missing = [] for filename in files_to_check: path = os.path.join('static', filename) if os.path.exists(path): size = os.path.getsize(path) found.append(f" ✓ {filename} ({size} bytes)") else: missing.append(f" ❌ {filename} (NICHT GEFUNDEN)") for msg in found: print(msg) for msg in missing: print(msg) return len(missing) == 0 if __name__ == "__main__": print("=" * 60) print("Fix für article-data.json Flask-URLs") print("=" * 60) html_file = "templates/roll_calculator.html" success = fix_html_file(html_file) files_ok = check_static_files() print("\n" + "=" * 60) if success or files_ok: print("✅ Fix abgeschlossen!") print("\n📝 Nächste Schritte:") print(" 1. Browser neuladen (Ctrl+Shift+R)") print(" 2. Öffne Browser Console (F12)") print(" 3. Du solltest sehen:") print(" 'Article data loaded: XXX items'") print(" 'Config updated from file'") else: print("⚠️ Keine Änderungen nötig") print("=" * 60)