import subprocess, os, sys
W="/home/ubuntu/muse-space/work/surfex-creative"
TMP="/tmp/newad"; os.makedirs(TMP, exist_ok=True)
A=f"{W}/arthur_test.mov"; S=f"{W}/FR-CONDO/seg"
shots=[
 (A,6.4,3.0),(A,0.0,3.0),(A,9.4,3.0),(A,22.23,2.7),(A,18.9,2.7),
 (A,15.55,2.6),(A,12.6,2.5),(f"{S}/08.mp4",1.5,2.5),(f"{S}/09.mp4",0.0,3.0),(f"{S}/10.mp4",0.0,7.13),
]
segs=[]
for i,(src,st,dur) in enumerate(shots):
    out=f"{TMP}/seg{i:02d}.mp4"
    subprocess.run(["ffmpeg","-y","-v","error","-ss",str(st),"-i",src,"-t",str(dur),
      "-vf","scale=1080:1920:force_original_aspect_ratio=increase,crop=1080:1920,fps=30,format=yuv420p",
      "-an","-c:v","libx264","-preset","veryfast","-crf","20",out],check=True)
    segs.append(out)
with open(f"{TMP}/list.txt","w") as f:
    for s in segs: f.write(f"file {s!r}\n".replace(chr(39),chr(39)))
subprocess.run(["ffmpeg","-y","-v","error","-f","concat","-safe","0","-i",f"{TMP}/list.txt",
  "-c","copy",f"{TMP}/base.mp4"],check=True)
texts=[
 (0.0,3.0,"EN CONDO?","planchers \u00e0 refaire"),
 (3.0,6.0,"PEUR DE LA","poussi\u00e8re?"),
 (6.0,9.0,"LES VOISINS,","le syndicat..."),
 (9.0,12.7,"SANS POUSSI\u00c8RE.","aspir\u00e9 \u00e0 la machine"),
 (12.7,16.0,"LES BORDURES,","jusqu'au mur"),
 (16.0,21.5,"3 COUCHES","VERNIS COMMERCIAL"),
 (21.5,27.0,"Z\u00c9RO PLAINTE","des voisins \u2605 4,9/5"),
 (28.2,32.68,"SOUMISSION GRATUITE","chez vous"),
]
BOLD="/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf"
REG="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf"
vf=["tpad=stop_mode=clone:stop_duration=1"]
for i,(t0,t1,big,small) in enumerate(texts):
    bf=f"{TMP}/t{i}b.txt"; sf=f"{TMP}/t{i}s.txt"
    open(bf,"w",encoding="utf-8").write(big); open(sf,"w",encoding="utf-8").write(small)
    en=f"between(t,{t0},{t1})"
    vf.append(f"drawtext=fontfile={BOLD}:textfile={bf}:fontsize={76 if big.startswith(chr(83)) else 96}:fontcolor=white:borderw=4:bordercolor=black:x=(w-text_w)/2:y=150:enable='{en}'")
    vf.append(f"drawtext=fontfile={REG}:textfile={sf}:fontsize=54:fontcolor=white:borderw=3:bordercolor=black:x=(w-text_w)/2:y=270:enable='{en}'")
open(f"{TMP}/vf.txt","w").write(",".join(vf))
cmd=["ffmpeg","-y","-v","error","-i",f"{TMP}/base.mp4","-i",f"{W}/new_ad_take.mp3","-i",f"{W}/golden_eyes.mp3",
 "-filter_complex_script",f"{TMP}/vf.txt","-filter_complex","[2:a]atrim=0:32.68,volume=0.16,afade=t=out:st=30.5:d=2.1[mus];[1:a][mus]amix=inputs=2:duration=first[aout]",
 "-map","0:v","-map","[aout]","-c:v","libx264","-preset","veryfast","-crf","20","-c:a","aac","-shortest",f"{W}/NEW-AD-CONDO.mp4"]
# filter_complex_script applies to video via -vf semantics: use -filter_complex with [0:v] chain instead
open(f"{TMP}/fc.txt","w").write("[0:v]"+(",".join(vf))+"[vout];[2:a]atrim=0:32.68,volume=0.16,afade=t=out:st=30.5:d=2.1[mus];[1:a][mus]amix=inputs=2:duration=first[aout]")
cmd=["ffmpeg","-y","-v","error","-i",f"{TMP}/base.mp4","-i",f"{W}/new_ad_take.mp3","-i",f"{W}/golden_eyes.mp3",
 "-filter_complex_script",f"{TMP}/fc.txt","-map","[vout]","-map","[aout]","-c:v","libx264","-preset","veryfast","-crf","20","-c:a","aac","-t","32.68",f"{W}/NEW-AD-CONDO.mp4"]
r=subprocess.run(cmd,capture_output=True,text=True)
print(r.returncode, r.stderr[-800:] if r.returncode else "RENDER_OK")
