"""Publish bounded, non-secret metadata and hashes after both audits succeed."""
import hashlib
import json
from pathlib import Path

root=Path(__file__).resolve().parent.parent
download=root/'download'
specs=json.loads((root/'specs.json').read_text())
manifest={}
for key,spec in specs.items():
    data=download/key/'data'
    report=json.loads((data/'video_validation.json').read_text())
    audit=json.loads((data/'comparison_audit.json').read_text())
    assert report['status']==audit['status']=='PASS'
    manifest[key]=dict(source_file=spec['source_file'],source_sha256=spec['sha256'],
        cache_sha256=report['cache_sha256'],frames=report['frames'],
        original_frame_range=[report['first_source_frame'],report['last_source_frame']],
        original_pts_range=[report['first_seconds'],report['last_seconds']],
        video=key+'/Pose_Input_Compare_b025_b020_j010_j005.mp4',video_sha256=report['sha256'],
        inference=False,tracking_reexecuted=False,counts=audit['counts'])
(download/'00_README_ko.txt').write_bytes((root/'00_README_ko.txt').read_bytes())
(download/'input_manifest.json').write_text(json.dumps(manifest,ensure_ascii=False,indent=2))
(download/'validation/helper_sha256.json').write_text(json.dumps({p.name:hashlib.sha256(p.read_bytes()).hexdigest() for p in sorted((root/'helpers').glob('*.py'))},indent=2))
files={str(p.relative_to(download)):hashlib.sha256(p.read_bytes()).hexdigest() for p in sorted(download.rglob('*')) if p.is_file() and p.name!='SHA256SUMS.json'}
assert len(list(download.glob('*/Pose_Input_Compare_b025_b020_j010_j005.mp4')))==2
(download/'SHA256SUMS.json').write_text(json.dumps(files,ensure_ascii=False,indent=2))
print(json.dumps(dict(videos=2,frames=sum(x['frames'] for x in manifest.values()),files=len(files),sha256=hashlib.sha256((download/'SHA256SUMS.json').read_bytes()).hexdigest())))
