diff options
author | bashonly <88596187+bashonly@users.noreply.github.com> | 2024-09-13 18:20:17 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-13 23:20:17 +0000 |
commit | 325001317d97f4545d66fac44c4ba772c6f45f22 (patch) | |
tree | 3507836c06cc27ba049e6d0a51f89ed0c7d699db /yt_dlp/extractor/common.py | |
parent | cc85596d5b59f0c14e9381b3675f619c1e12e597 (diff) |
[ie] Handle decode errors when reading responses (#10868)
Authored by: bashonly
Diffstat (limited to 'yt_dlp/extractor/common.py')
-rw-r--r-- | yt_dlp/extractor/common.py | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/yt_dlp/extractor/common.py b/yt_dlp/extractor/common.py index 432db9daf..9501e5ec9 100644 --- a/yt_dlp/extractor/common.py +++ b/yt_dlp/extractor/common.py @@ -35,6 +35,7 @@ from ..networking import HEADRequest, Request from ..networking.exceptions import ( HTTPError, IncompleteRead, + TransportError, network_exceptions, ) from ..networking.impersonate import ImpersonateTarget @@ -965,6 +966,9 @@ class InfoExtractor: return False content = self._webpage_read_content(urlh, url_or_request, video_id, note, errnote, fatal, encoding=encoding, data=data) + if content is False: + assert not fatal + return False return (content, urlh) @staticmethod @@ -1039,7 +1043,15 @@ class InfoExtractor: def _webpage_read_content(self, urlh, url_or_request, video_id, note=None, errnote=None, fatal=True, prefix=None, encoding=None, data=None): - webpage_bytes = urlh.read() + try: + webpage_bytes = urlh.read() + except TransportError as err: + errmsg = f'{video_id}: Error reading response: {err.msg}' + if fatal: + raise ExtractorError(errmsg, cause=err) + self.report_warning(errmsg) + return False + if prefix is not None: webpage_bytes = prefix + webpage_bytes if self.get_param('dump_intermediate_pages', False): |