diff options
| -rw-r--r-- | youtube_dl/extractor/common.py | 10 | 
1 files changed, 7 insertions, 3 deletions
diff --git a/youtube_dl/extractor/common.py b/youtube_dl/extractor/common.py index 9ffe64d05..816baa424 100644 --- a/youtube_dl/extractor/common.py +++ b/youtube_dl/extractor/common.py @@ -805,15 +805,17 @@ class InfoExtractor(object):          return self._html_search_meta('twitter:player', html,                                        'twitter card player') -    def _search_json_ld(self, html, video_id, **kwargs): +    def _search_json_ld(self, html, video_id, expected_type=None, **kwargs):          json_ld = self._search_regex(              r'(?s)<script[^>]+type=(["\'])application/ld\+json\1[^>]*>(?P<json_ld>.+?)</script>',              html, 'JSON-LD', group='json_ld', **kwargs)          if not json_ld:              return {} -        return self._json_ld(json_ld, video_id, fatal=kwargs.get('fatal', True)) +        return self._json_ld( +            json_ld, video_id, fatal=kwargs.get('fatal', True), +            expected_type=expected_type) -    def _json_ld(self, json_ld, video_id, fatal=True): +    def _json_ld(self, json_ld, video_id, fatal=True, expected_type=None):          if isinstance(json_ld, compat_str):              json_ld = self._parse_json(json_ld, video_id, fatal=fatal)          if not json_ld: @@ -821,6 +823,8 @@ class InfoExtractor(object):          info = {}          if json_ld.get('@context') == 'http://schema.org':              item_type = json_ld.get('@type') +            if expected_type is not None and expected_type != item_type: +                return info              if item_type == 'TVEpisode':                  info.update({                      'episode': unescapeHTML(json_ld.get('name')),  | 
