#!/usr/bin/env python3 # -*- coding: utf-8 -*- """make_hero_clip.py — assemble the home page's laptop clip from raw app recordings. python3 scripts/make_hero_clip.py [--lang hu|en] [--seconds N] [--dry-run] WHAT IT IS FOR. The hero on / and /en/ is a laptop whose SCREEN is a short, silent, looping clip of real apps running on a real box. The operator records the raw clips; this turns them into the two files the page loads, and into nothing else — it is NOT part of any build, gate or deploy. The site has no build step: the output is committed like any other picture. WHERE IT RUNS. On DooPlex, which has ffmpeg (7.1.5, libx264 + libvpx-vp9). Windows has no ffmpeg. INPUT. One file per scene in , named `NN-appname.` so the order is the file order: 01-jellyfin.mp4 02-tandoor.mkv 03-onlyoffice.webm 04-immich.mp4 ... Any container ffmpeg reads. Audio is dropped. Each clip is scaled to cover the laptop's screen and centre-cropped to 1.626:1 — record at 16:10 (1440x900 is ideal) and almost nothing is lost. EACH SCENE PLAYS AT ITS FULL RECORDED LENGTH (operator ruling 2026-10-12: "use the full length for all of them, they had been cut as I liked them"). The raw file IS the edit; this script does not re-cut it. `--seconds N` caps every scene at N seconds, for trying a shorter loop. OUTPUT (in , which is normally website/assets): hero-clip.mp4 h264, the one every browser plays hero-clip.webm VP9, preferred where offered hero-poster.webp the first frame, which the