Files
2026-07-17 12:57:18 +03:00

67 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
"""CLI: сгенерировать кадры Plymouth (800×600) из logo2.png."""
from __future__ import annotations
import argparse
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[2]
if str(ROOT) not in sys.path:
sys.path.insert(0, str(ROOT))
from app.services.plymouth_frame_renderer import ( # noqa: E402
DURATION_MS_DEFAULT,
PLYMOUTH_FPS,
PLYMOUTH_HEIGHT,
PLYMOUTH_WIDTH,
render_all_frames,
)
def main() -> int:
parser = argparse.ArgumentParser(description="Render WESP Plymouth animation frames")
parser.add_argument(
"--logo",
type=Path,
default=ROOT / "static" / "logo2.png",
help="Path to logo2.png",
)
parser.add_argument(
"--out",
type=Path,
default=ROOT / "data" / "plymouth-build",
help="Output directory (animation/ inside)",
)
parser.add_argument("--width", type=int, default=PLYMOUTH_WIDTH)
parser.add_argument("--height", type=int, default=PLYMOUTH_HEIGHT)
parser.add_argument("--duration-ms", type=int, default=DURATION_MS_DEFAULT)
parser.add_argument("--fps", type=int, default=PLYMOUTH_FPS)
args = parser.parse_args()
if not args.logo.is_file():
print(f"Logo not found: {args.logo}", file=sys.stderr)
return 1
def progress(done: int, total: int) -> None:
pct = int(100 * done / total) if total else 100
print(f"\rFrames {done}/{total} ({pct}%)", end="", flush=True)
summary = render_all_frames(
args.logo,
args.out,
width=args.width,
height=args.height,
duration_ms=args.duration_ms,
fps=args.fps,
progress_callback=progress,
)
print()
print(summary)
return 0
if __name__ == "__main__":
raise SystemExit(main())