]> jfr.im git - yt-dlp.git/commitdiff
[youtube] Throw error when `--extractor-retries` are exhausted (Closes #130)
authorpukkandan <redacted>
Tue, 2 Mar 2021 21:23:19 +0000 (02:53 +0530)
committerpukkandan <redacted>
Tue, 2 Mar 2021 21:35:31 +0000 (03:05 +0530)
yt_dlp/extractor/youtube.py

index 8b0d12bb5cb802b60f3af50f988a3ba2fb040394..4954a2d8c94a5deab09c596a3dc7b47f7dc275c8 100644 (file)
@@ -2791,6 +2791,8 @@ def extract_entries(parent_renderer):  # this needs to called again for continua
                     if response.get('continuationContents') or response.get('onResponseReceivedActions'):
                         break
                     last_error = 'Incomplete data recieved'
+                    if count >= retries:
+                        self._downloader.report_error(last_error)
             if not browse or not response:
                 break
 
@@ -3014,12 +3016,13 @@ def _real_extract(self, url):
 
         retries = self._downloader.params.get('extractor_retries', 3)
         count = -1
+        last_error = 'Incomplete yt initial data recieved'
         while count < retries:
             count += 1
             # Sometimes youtube returns a webpage with incomplete ytInitialData
             # See: https://github.com/yt-dlp/yt-dlp/issues/116
             if count:
-                self.report_warning('Incomplete yt initial data recieved. Retrying ...')
+                self.report_warning('%s. Retrying ...' % last_error)
             webpage = self._download_webpage(
                 url, item_id,
                 'Downloading webpage%s' % ' (retry #%d)' % count if count else '')
@@ -3037,6 +3040,8 @@ def _real_extract(self, url):
                 raise ExtractorError('YouTube said: %s' % err_msg, expected=True)
             if data.get('contents') or data.get('currentVideoEndpoint'):
                 break
+            if count >= retries:
+                self._downloader.report_error(last_error)
 
         tabs = try_get(
             data, lambda x: x['contents']['twoColumnBrowseResultsRenderer']['tabs'], list)