#!/usr/bin/env -S uv run --script # /// script # dependencies = [ # "playwright", # ] # /// import subprocess import sys import tempfile from pathlib import Path from playwright.sync_api import sync_playwright # type: ignore[import-not-found] CSS = """ """ def main() -> None: subprocess.run([sys.executable, "-m", "playwright", "install", "chromium"], check=True) html_str = Path("docs/diagram.html").read_text() html_str = f"{CSS}{html_str}" with tempfile.TemporaryDirectory() as tmp_dir_str: html_path = Path(tmp_dir_str) / "diagram_screenshot.html" html_path.write_text(html_str) dest_path = Path("docs/data/how-it-works.png") with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page(device_scale_factor=2, viewport={"width": 830, "height": 600}) page.goto(html_path.as_uri()) page.wait_for_load_state("networkidle") height = page.evaluate("document.body.scrollHeight") page.set_viewport_size({"width": 830, "height": height}) page.screenshot(path=str(dest_path), full_page=True) browser.close() if __name__ == "__main__": main()