from pathlib import Path
import subprocess,json,sys
from PIL import Image,ImageChops
root=Path(sys.argv[1]);rows=[]
for before in sorted(root.rglob('*-before-*.png')):
 if '-check' in before.name:continue
 after=before.with_name(before.name.replace('-before-','-after-'))
 if not after.exists():continue
 stem=before.stem.replace('-before-','-diff-')
 record=dict(before=before.relative_to(root).as_posix(),after=after.relative_to(root).as_posix())
 a,b=Image.open(before).convert('RGB'),Image.open(after).convert('RGB')
 d=ImageChops.difference(a,b);record['bbox']=d.getbbox()
 for label,fuzz in [('0','0%'),('T','2%')]:
  output=before.with_name(stem+label+'.png')
  p=subprocess.run(['compare','-fuzz',fuzz,'-metric','AE','-compose','src','-highlight-color','#ff00ff','-lowlight-color','#202020',str(before),str(after),str(output)],capture_output=True,text=True)
  record['diff'+label]=output.relative_to(root).as_posix();record['pixels'+label]=p.stderr
 rows.append(record)
(root/'diff-metrics.json').write_text(json.dumps(rows,indent=2));print(json.dumps(rows,indent=2))
