#!/usr/bin/env python3
import io,json,pathlib,subprocess
from PIL import Image,ImageDraw,ImageFont
p=pathlib.Path(__file__).resolve().parent
video=p/"after-import-flow.mp4"
duration=float(json.loads(subprocess.check_output(["ffprobe","-v","error","-show_entries","format=duration","-of","json",str(video)]))["format"]["duration"])
frames=[]
for t in range(int(duration)+1):
    data=subprocess.check_output(["ffmpeg","-v","error","-ss",str(t),"-i",str(video),"-frames:v","1","-f","image2pipe","-vcodec","png","-"])
    if not data: continue
    im=Image.open(io.BytesIO(data)).convert("RGB");im.thumbnail((480,334))
    frame=Image.new("RGB",(480,360),"white");frame.paste(im,(0,26))
    ImageDraw.Draw(frame).text((6,4),f"{t} seconds",fill="black",font=ImageFont.load_default(size=16))
    frames.append(frame)
sheet=Image.new("RGB",(480*4,360*((len(frames)+3)//4)),"white")
for i,im in enumerate(frames): sheet.paste(im,((i%4)*480,(i//4)*360))
sheet.save(p/"after-import-flow-contact.png")
print(json.dumps({"duration":duration,"frames":len(frames)}))
