#!/usr/bin/env python3
import os, subprocess, sys

os.chdir("/root/site/video")
RENDERS = ["renders/001.2.jpg", "renders/003.jpg", "renders/03.jpg",
           "renders/04.jpg", "renders/01.jpg", "renders/01.2.jpg"]
ZP = ("zoompan=z='min(zoom+0.00017,1.06)':"
      "x='(iw/2-(iw/zoom/2))+(on/104-0.5)*0.6*(iw-iw/zoom)':"
      "y='ih/2-(ih/zoom/2)':d=105:s=2800x2100:fps=30,format=yuv420p")

def run(cmd):
    print(">>", " ".join(cmd)[:160], flush=True)
    r = subprocess.run(cmd, capture_output=True, text=True)
    if r.returncode != 0:
        print("FAILED:", r.stderr[-800:], flush=True)
        sys.exit(1)

for i, src in enumerate(RENDERS):
    clip = f"clip_{i}.mp4"
    if os.path.exists(clip) and os.path.getsize(clip) > 10000:
        print("skip", clip, flush=True)
        continue
    run(["ffmpeg", "-y", "-v", "error", "-i", src, "-vf", ZP,
         "-c:v", "libx264", "-preset", "medium", "-crf", "20", clip])

print("combining...", flush=True)
run(["ffmpeg", "-y", "-v", "error",
     "-i", "clip_0.mp4", "-i", "clip_1.mp4", "-i", "clip_2.mp4",
     "-i", "clip_3.mp4", "-i", "clip_4.mp4", "-i", "clip_5.mp4",
     "-filter_complex_script", "combine_filters.txt", "-map", "[vout]",
     "-c:v", "libx264", "-preset", "medium", "-crf", "20",
     "-movflags", "+faststart", "troitskiy_oblet.mp4"])

r = subprocess.run(["ffprobe", "-v", "error", "-select_streams", "v:0",
                    "-show_entries", "stream=width,height", "-of", "csv=p=0",
                    "troitskiy_oblet.mp4"], capture_output=True, text=True)
print("RESOLUTION:", r.stdout.strip(), flush=True)
r = subprocess.run(["ffprobe", "-v", "error", "-show_entries",
                    "format=duration,size", "-of", "default=noprint_wrappers=1",
                    "troitskiy_oblet.mp4"], capture_output=True, text=True)
print(r.stdout.strip(), flush=True)
print("BUILD_DONE", flush=True)
