import hashlib
import json
import pathlib
import urllib.request

root = pathlib.Path(__file__).resolve().parent
p = root/'reports/assets.json'
data = json.loads(p.read_text())
old = data['weights']['ava_slowonly']
url = 'https://download.openmmlab.com/mmaction/detection/ava/slowonly_kinetics_pretrained_r50_4x16x1_20e_ava_rgb/slowonly_kinetics_pretrained_r50_4x16x1_20e_ava_rgb_20201217-40061d5f.pth'
dest = root/'weights/ava_slowonly.pth'
h = hashlib.sha256()
with urllib.request.urlopen(url, timeout=120) as r, dest.open('xb') as f:
    while chunk := r.read(1024*1024):
        f.write(chunk)
        h.update(chunk)
data['weights']['ava_slowonly'] = dict(url=url, file='weights/ava_slowonly.pth',
    bytes=dest.stat().st_size, sha256=h.hexdigest(),
    selection_note='Official v1 link HTTP404; official v0.24.1 R50 K400 4x16 AVA2.1 checkpoint selected. Strict architecture load required.',
    unavailable_reference=old)
p.write_text(json.dumps(data, indent=2))
for name in ('slowonly_kinetics_pretrained_r50_4x16x1_20e_ava_rgb.py','README.md'):
    url = 'https://raw.githubusercontent.com/open-mmlab/mmaction2/v0.24.1/configs/detection/ava/'+name
    with urllib.request.urlopen(url,timeout=30) as r:
        (root/'reports'/('ava_official_'+name)).write_bytes(r.read())
print(json.dumps(data['weights']['ava_slowonly']))
