8000 Merge pull request #245 from mborsetti/patch-1 · pythonthings/pyppeteer@46f04c6 · GitHub
[go: up one dir, main page]

Skip to content

Commit 46f04c6

Browse files
Merge pull request pyppeteer#245 from mborsetti/patch-1
Chromium download fixes (file not found)
2 parents f890527 + db9fd7c commit 46f04c6

File tree

1 file changed

+26
-21
lines changed

1 file changed

+26
-21
lines changed

pyppeteer/chromium_downloader.py

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -72,36 +72,41 @@ def get_url() -> str:
7272

7373
def download_zip(url: str) -> BytesIO:
7474
"""Download data from url."""
75-
logger.warning('start chromium download.\n'
75+
logger.warning('Starting Chromium download. '
7676
'Download may take a few minutes.')
7777

78-
# disable warnings so that we don't need a cert.
79-
# see https://urllib3.readthedocs.io/en/latest/advanced-usage.html for more
80-
urllib3.disable_warnings()
78+
# Uncomment the statement below to disable HTTPS warnings and allow
79+
# download without certificate verification. This is *strongly* as it
80+
# opens the code to man-in-the-middle (and other) vulnerabilities; see
81+
# https://urllib3.readthedocs.io/en/latest/advanced-usage.html#tls-warnings
82+
# for more.
83+
# urllib3.disable_warnings()
8184

8285
with urllib3.PoolManager() as http:
8386
# Get data from url.
8487
# set preload_content=False means using stream later.
85-
data = http.request('GET', url, preload_content=False)
86-
87-
try:
88-
total_length = int(data.headers['content-length'])
89-
except (KeyError, ValueError, AttributeError):
90-
total_length = 0
91-
92-
process_bar = tqdm(
93-
total=total_length,
94-
file=os.devnull if NO_PROGRESS_BAR else None,
95-
)
88+
r = http.request('GET', url, preload_content=False)
89+
if r.status >= 400:
90+
raise OSError(f'Chromium downloadable not found at {url}: '
91+
f'Received {r.data.decode()}.\n')
9692

9793
# 10 * 1024
9894
_data = BytesIO()
99-
for chunk in data.stream(10240):
100-
_data.write(chunk)
101-
process_bar.update(len(chunk))
102-
process_bar.close()
103-
104-
logger.warning('\nchromium download done.')
95+
if NO_PROGRESS_BAR:
96+
for chunk in r.stream(10240):
97+
_data.write(chunk)
98+
else:
99+
try:
100+
total_length = int(r.headers['content-length'])
101+
except (KeyError, ValueError, AttributeError):
102+
total_length = 0
103+
process_bar = tqdm(total=total_length)
104+
for chunk in r.stream(10240):
105+
_data.write(chunk)
106+
process_bar.update(len(chunk))
107+
process_bar.close()
108+
109+
logger.warning('\nChromium download done.')
105110
return _data
106111

107112

0 commit comments

Comments
 (0)
0