mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2025-09-03 16:45:17 +00:00
[extractor/common] Fix json_ld
type checks (#5145)
Closes #5144, #5143 Authored by: Grub4K
This commit is contained in:
@ -1467,10 +1467,6 @@ class InfoExtractor:
|
||||
if not json_ld:
|
||||
return {}
|
||||
info = {}
|
||||
if not isinstance(json_ld, (list, tuple, dict)):
|
||||
return info
|
||||
if isinstance(json_ld, dict):
|
||||
json_ld = [json_ld]
|
||||
|
||||
INTERACTION_TYPE_MAP = {
|
||||
'CommentAction': 'comment',
|
||||
@ -1570,11 +1566,13 @@ class InfoExtractor:
|
||||
extract_chapter_information(e)
|
||||
|
||||
def traverse_json_ld(json_ld, at_top_level=True):
|
||||
for e in json_ld:
|
||||
for e in variadic(json_ld):
|
||||
if not isinstance(e, dict):
|
||||
continue
|
||||
if at_top_level and '@context' not in e:
|
||||
continue
|
||||
if at_top_level and set(e.keys()) == {'@context', '@graph'}:
|
||||
traverse_json_ld(variadic(e['@graph'], allowed_types=(dict,)), at_top_level=False)
|
||||
traverse_json_ld(e['@graph'], at_top_level=False)
|
||||
break
|
||||
if expected_type is not None and not is_type(e, expected_type):
|
||||
continue
|
||||
@ -1629,8 +1627,8 @@ class InfoExtractor:
|
||||
continue
|
||||
else:
|
||||
break
|
||||
traverse_json_ld(json_ld)
|
||||
|
||||
traverse_json_ld(json_ld)
|
||||
return filter_dict(info)
|
||||
|
||||
def _search_nextjs_data(self, webpage, video_id, *, transform_source=None, fatal=True, **kw):
|
||||
|
Reference in New Issue
Block a user