Files

16 lines
775 B
Python

#!/usr/bin/env python3
"""Fetch immutable, checksum-verified upstream media dependencies."""
import hashlib,io,json,tarfile,urllib.request
from pathlib import Path
base=Path(__file__).resolve().parent.parent
pins=json.loads((base/'media/dependencies.json').read_text())
for name,pin in pins.items():
payload=urllib.request.urlopen(pin['url'],timeout=120).read()
if hashlib.sha256(payload).hexdigest()!=pin['sha256']:
raise SystemExit(f'{name}: upstream archive checksum mismatch')
target=base/'media'/('bin' if name=='mediamtx' else 'source')
target.mkdir(exist_ok=True)
with tarfile.open(fileobj=io.BytesIO(payload),mode='r:*') as archive:
archive.extractall(target,filter='data')
if name=='mediamtx':(target/'mediamtx').chmod(0o755)