#!/usr/bin/env python3 """deck.src.html → index.html (самодостаточная: шрифты и логотип инлайн) + PDF. python3 decks/shkor-labs-fundraise/build.py [--pdf] [--png] """ import base64 import glob import os import re import subprocess import sys HERE = os.path.dirname(os.path.abspath(__file__)) ROOT = os.path.dirname(os.path.dirname(HERE)) ASSETS = os.path.join(ROOT, "sites", "shkor-com", "v2", "assets") def b64(name): with open(os.path.join(ASSETS, name), "rb") as f: return "data:font/woff2;base64," + base64.b64encode(f.read()).decode() LOGO = ('') def build(): src = open(os.path.join(HERE, "deck.src.html"), encoding="utf-8").read() for k, v in {"__FONT_INTER400__": "inter-400-latin.woff2", "__FONT_INTER600__": "inter-600-latin.woff2", "__FONT_SPACE__": "space-grotesk-latin.woff2", "__FONT_MONO__": "jetbrains-mono-400-latin.woff2"}.items(): src = src.replace(k, b64(v)) src = src.replace("__LOGO_SMALL__", LOGO) out = os.path.join(HERE, "index.html") open(out, "w", encoding="utf-8").write(src) return out def chrome(): c = glob.glob(os.path.expanduser("~/.cache/ms-playwright/chromium_headless_shell-*/*/chrome-headless-shell")) return c[0] if c else None if __name__ == "__main__": out = build() print("OK", os.path.relpath(out, ROOT), os.path.getsize(out) // 1024, "KB", file=sys.stderr) ch = chrome() if "--pdf" in sys.argv and ch: pdf = os.path.join(HERE, "Shkor_Labs_Pre-seed_2026-10.pdf") subprocess.run([ch, "--no-sandbox", "--disable-gpu", "--run-all-compositor-stages-before-draw", "--virtual-time-budget=3000", "--no-pdf-header-footer", f"--print-to-pdf={pdf}", "file://" + out], check=True, capture_output=True) print("OK", os.path.relpath(pdf, ROOT), file=sys.stderr) if "--png" in sys.argv and ch: d = os.path.join("/tmp", "deck-png") os.makedirs(d, exist_ok=True) n = len(re.findall(r'