Pillow/winbuild/fetch.py
2019-10-30 22:15:30 +11:00

45 lines
1.2 KiB
Python

import os
import sys
import urllib.parse
import urllib.request
from config import libs
def fetch(url):
depends_filename = None
for lib in libs.values():
if lib["url"] == url:
depends_filename = lib["filename"]
break
if depends_filename and os.path.exists(depends_filename):
return depends_filename
name = urllib.parse.urlsplit(url)[2].split("/")[-1]
if not os.path.exists(name):
def retrieve(request_url):
print("Fetching", request_url)
try:
return urllib.request.urlopen(request_url)
except urllib.error.URLError:
return urllib.request.urlopen(request_url)
try:
r = retrieve(url)
except urllib.error.HTTPError:
if depends_filename:
r = retrieve(
"https://github.com/python-pillow/pillow-depends/raw/master/"
+ depends_filename
)
name = depends_filename
content = r.read()
with open(name, "wb") as fd:
fd.write(content)
return name
if __name__ == "__main__":
fetch(sys.argv[1])