Files
android
doc
m4
python
build
autotools.py
boost.py
cmdline.py
dirs.py
download.py
ffmpeg.py
libs.py
makeproject.py
meson.py
project.py
quilt.py
tar.py
verify.py
zlib.py
scripts
src
systemd
test
win32
.gitignore
.travis.yml
AUTHORS
COPYING
Makefile.am
NEWS
README.md
autogen.sh
configure.ac
mpd.svg
valgrind.suppressions
mpd/python/build/download.py
2016-12-29 21:43:47 +01:00

27 lines
710 B
Python

from build.verify import verify_file_digest
import os
import urllib.request
def download_and_verify(url, md5, parent_path):
"""Download a file, verify its MD5 checksum and return the local path."""
os.makedirs(parent_path, exist_ok=True)
path = os.path.join(parent_path, os.path.basename(url))
try:
if verify_file_digest(path, md5): return path
os.unlink(path)
except FileNotFoundError:
pass
tmp_path = path + '.tmp'
print("download", url)
urllib.request.urlretrieve(url, tmp_path)
if not verify_file_digest(tmp_path, md5):
os.unlink(tmp_path)
raise RuntimeError("Digest mismatch")
os.rename(tmp_path, path)
return path