Spaces:
Runtime error
Runtime error
File size: 2,117 Bytes
fa8df4c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | """Draws a sample opening slide in each slide deck theme with a local Chrome, for the theme picker's thumbnails.
python scripts/render_slide_thumbnails.py # writes ../frontend/public/slides/<theme>.png
Set CHROME to the browser binary if it is not found (see app.infographics.image.chrome)."""
import subprocess
import sys
import tempfile
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from PIL import Image # noqa: E402
from app.infographics.image import chrome # noqa: E402
from app.slides.content import clamp_deck # noqa: E402
from app.slides.render import slide_html # noqa: E402
from app.slides.themes import THEMES # noqa: E402
SAMPLE = {"title": "Your ideas, in orbit", "slides": [
{"layout": "title", "kicker": "Slide deck", "heading": "Your ideas, in orbit",
"lead": "Every post you have written, turned into a story worth presenting."},
]}
PICK = {"dark-space": "b", "light-space": "a"} # each theme's most telling opener
if __name__ == "__main__":
binary = chrome()
if not binary:
sys.exit("No Chrome found: set CHROME")
folder = Path(__file__).resolve().parents[2] / "frontend/public/slides"
folder.mkdir(parents=True, exist_ok=True)
deck = clamp_deck(SAMPLE, "presenter")
for tid in THEMES:
deck["slides"][0]["variant"] = PICK[tid]
with tempfile.TemporaryDirectory() as tmp:
src, shot = Path(tmp) / "s.html", Path(tmp) / "s.png"
src.write_text(slide_html(deck, 0, tid, "presenter", 2024), encoding="utf-8")
subprocess.run([binary, "--headless=new", "--disable-gpu", "--no-sandbox", "--hide-scrollbars",
"--force-device-scale-factor=1", f"--user-data-dir={tmp}/p", "--window-size=1920,1080",
"--virtual-time-budget=8000", f"--screenshot={shot}", f"file://{src}"],
check=True, capture_output=True, timeout=120)
Image.open(shot).convert("RGB").resize((800, 450), Image.LANCZOS).save(folder / f"{tid}.png", optimize=True)
print(folder / f"{tid}.png")
|