mirror of https://github.com/yt-dlp/yt-dlp.git
[extractor] Passthrough `errnote=False` to parsing
This commit is contained in:
parent
5f2da312fa
commit
6edf28081f
|
@ -929,39 +929,37 @@ class InfoExtractor:
|
|||
|
||||
return content
|
||||
|
||||
def _parse_xml(self, xml_string, video_id, transform_source=None, fatal=True):
|
||||
def __print_error(self, errnote, fatal, video_id, err):
|
||||
if fatal:
|
||||
raise ExtractorError(f'{video_id}: {errnote} ', cause=err)
|
||||
elif errnote:
|
||||
self.report_warning(f'{video_id}: {errnote} {err}')
|
||||
|
||||
def _parse_xml(self, xml_string, video_id, transform_source=None, fatal=True, errnote=None):
|
||||
if transform_source:
|
||||
xml_string = transform_source(xml_string)
|
||||
try:
|
||||
return compat_etree_fromstring(xml_string.encode('utf-8'))
|
||||
except xml.etree.ElementTree.ParseError as ve:
|
||||
errmsg = '%s: Failed to parse XML ' % video_id
|
||||
if fatal:
|
||||
raise ExtractorError(errmsg, cause=ve)
|
||||
else:
|
||||
self.report_warning(errmsg + str(ve))
|
||||
self.__print_error('Failed to parse XML' if errnote is None else errnote, fatal, video_id, ve)
|
||||
|
||||
def _parse_json(self, json_string, video_id, transform_source=None, fatal=True, **parser_kwargs):
|
||||
def _parse_json(self, json_string, video_id, transform_source=None, fatal=True, errnote=None, **parser_kwargs):
|
||||
try:
|
||||
return json.loads(
|
||||
json_string, cls=LenientJSONDecoder, strict=False, transform_source=transform_source, **parser_kwargs)
|
||||
except ValueError as ve:
|
||||
errmsg = f'{video_id}: Failed to parse JSON'
|
||||
if fatal:
|
||||
raise ExtractorError(errmsg, cause=ve)
|
||||
else:
|
||||
self.report_warning(f'{errmsg}: {ve}')
|
||||
self.__print_error('Failed to parse JSON' if errnote is None else errnote, fatal, video_id, ve)
|
||||
|
||||
def _parse_socket_response_as_json(self, data, video_id, transform_source=None, fatal=True):
|
||||
return self._parse_json(
|
||||
data[data.find('{'):data.rfind('}') + 1],
|
||||
video_id, transform_source, fatal)
|
||||
def _parse_socket_response_as_json(self, data, *args, **kwargs):
|
||||
return self._parse_json(data[data.find('{'):data.rfind('}') + 1], *args, **kwargs)
|
||||
|
||||
def __create_download_methods(name, parser, note, errnote, return_value):
|
||||
|
||||
def parse(ie, content, *args, **kwargs):
|
||||
def parse(ie, content, *args, errnote=errnote, **kwargs):
|
||||
if parser is None:
|
||||
return content
|
||||
if errnote is False:
|
||||
kwargs['errnote'] = errnote
|
||||
# parser is fetched by name so subclasses can override it
|
||||
return getattr(ie, parser)(content, *args, **kwargs)
|
||||
|
||||
|
@ -973,7 +971,7 @@ class InfoExtractor:
|
|||
if res is False:
|
||||
return res
|
||||
content, urlh = res
|
||||
return parse(self, content, video_id, transform_source=transform_source, fatal=fatal), urlh
|
||||
return parse(self, content, video_id, transform_source=transform_source, fatal=fatal, errnote=errnote), urlh
|
||||
|
||||
def download_content(self, url_or_request, video_id, note=note, errnote=errnote, transform_source=None,
|
||||
fatal=True, encoding=None, data=None, headers={}, query={}, expected_status=None):
|
||||
|
@ -988,7 +986,7 @@ class InfoExtractor:
|
|||
self.report_warning(f'Unable to load request from disk: {e}')
|
||||
else:
|
||||
content = self.__decode_webpage(webpage_bytes, encoding, url_or_request.headers)
|
||||
return parse(self, content, video_id, transform_source, fatal)
|
||||
return parse(self, content, video_id, transform_source=transform_source, fatal=fatal, errnote=errnote)
|
||||
kwargs = {
|
||||
'note': note,
|
||||
'errnote': errnote,
|
||||
|
|
Loading…
Reference in New Issue