#!/usr/bin/env python3
from pathlib import Path
from PIL import Image,ImageDraw,ImageFont
import json,subprocess,math
root=Path('/tmp/lead-28684-r1/evidence-capture')
font=ImageFont.truetype('/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf',16)
for item in json.loads((root/'recordings.json').read_text()):
 file=Path(item['file']);out=root/'assembled'/(file.stem+'-frames');out.mkdir(exist_ok=True)
 subprocess.run(['ffmpeg','-hide_banner','-loglevel','error','-y','-i',str(file),'-vf','fps=2',str(out/'frame-%03d.png')],check=True)
 files=sorted(out.glob('frame-*.png'));frames=[]
 for index,p in enumerate(files):
  im=Image.open(p).convert('RGB');im.thumbnail((480,334));tile=Image.new('RGB',(480,360),(35,35,35));tile.paste(im,(0,26));ImageDraw.Draw(tile).text((5,4),f'{file.stem}: {index*.5:.1f}s',font=font,fill='white');frames.append(tile)
 sheet=Image.new('RGB',(480*3,360*math.ceil(len(frames)/3)),(35,35,35))
 for i,frame in enumerate(frames):sheet.paste(frame,((i%3)*480,(i//3)*360))
 sheet.save(root/'assembled'/(file.stem+'-contact.png'))
 print(file.stem,len(files),sheet.size)
