"""One-off: extract instance_page.css / instance_page_boot.js from gate index.html.""" from __future__ import annotations import re from pathlib import Path ROOT = Path(__file__).resolve().parent.parent src = ROOT / "crypto_monitor_gate" / "templates" / "index.html" text = src.read_text(encoding="utf-8") m = re.search(r"", text, re.S) if m: (ROOT / "static" / "instance_page.css").write_text(m.group(1).strip() + "\n", encoding="utf-8") marker = '' if marker in text: part = text.split(marker, 1)[1] m2 = re.search(r"\s*", part, re.S) if m2: boot = m2.group(1).strip() boot = boot.replace( "setInterval(refreshAccountSnapshot, {{ balance_refresh_seconds * 1000 }});", "setInterval(refreshAccountSnapshot, Number(document.body.dataset.balanceRefreshMs || 30000));", ) boot = boot.replace( "setInterval(refreshPriceSnapshotConditional, {{ price_refresh_seconds * 1000 }});", "setInterval(refreshPriceSnapshotConditional, Number(document.body.dataset.priceRefreshMs || 5000));", ) (ROOT / "static" / "instance_page_boot.js").write_text(boot + "\n", encoding="utf-8") part2 = text.split(marker, 1)[1] m3 = re.search(r"\s*", part2, re.S) if m3: boot_tpl = m3.group(1).strip() boot_tpl = boot_tpl.replace( "setInterval(refreshAccountSnapshot, {{ balance_refresh_seconds * 1000 }});", "setInterval(refreshAccountSnapshot, Number(document.body.dataset.balanceRefreshMs || 30000));", ) boot_tpl = boot_tpl.replace( "setInterval(refreshPriceSnapshotConditional, {{ price_refresh_seconds * 1000 }});", "setInterval(refreshPriceSnapshotConditional, Number(document.body.dataset.priceRefreshMs || 5000));", ) embed_dir = ROOT / "embed_templates" embed_dir.mkdir(exist_ok=True) (embed_dir / "embed_boot_scripts.html").write_text( "\n", encoding="utf-8" ) print("done")