aboutsummaryrefslogtreecommitdiff
path: root/yt_dlp/extractor/common.py
diff options
context:
space:
mode:
authorbashonly <88596187+bashonly@users.noreply.github.com>2024-09-13 18:20:17 -0500
committerGitHub <noreply@github.com>2024-09-13 23:20:17 +0000
commit325001317d97f4545d66fac44c4ba772c6f45f22 (patch)
tree3507836c06cc27ba049e6d0a51f89ed0c7d699db /yt_dlp/extractor/common.py
parentcc85596d5b59f0c14e9381b3675f619c1e12e597 (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.py14
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):