]> jfr.im git - yt-dlp.git/commitdiff
[extractor/youtube] Handle incomplete initial data from watch page (#6510)
authorcoletdjnz <redacted>
Mon, 13 Mar 2023 01:43:37 +0000 (01:43 +0000)
committerGitHub <redacted>
Mon, 13 Mar 2023 01:43:37 +0000 (01:43 +0000)
Authored by: coletdjnz

yt_dlp/extractor/youtube.py

index d7cd0dc62a2124ad2f6ca4b2c812a3b20d4ea93c..b024d18b725684becedc5c02fd59cf5140b3efae 100644 (file)
@@ -4254,12 +4254,15 @@ def process_language(container, base_url, lang_code, sub_name, query):
         initial_data = None
         if webpage:
             initial_data = self.extract_yt_initial_data(video_id, webpage, fatal=False)
+            if not traverse_obj(initial_data, 'contents'):
+                self.report_warning('Incomplete data received in embedded initial data; re-fetching using API.')
+                initial_data = None
         if not initial_data:
             query = {'videoId': video_id}
             query.update(self._get_checkok_params())
             initial_data = self._extract_response(
                 item_id=video_id, ep='next', fatal=False,
-                ytcfg=master_ytcfg, query=query,
+                ytcfg=master_ytcfg, query=query, check_get_keys='contents',
                 headers=self.generate_api_headers(ytcfg=master_ytcfg),
                 note='Downloading initial data API JSON')