diff options
author | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-04-21 11:30:43 +0530 |
---|---|---|
committer | pukkandan <pukkandan.ytdlp@gmail.com> | 2021-04-22 02:16:31 +0530 |
commit | 26e2805c3f11066c79ed29cf78511eae7fdc7a7b (patch) | |
tree | 58752fa69d000049c0286b98c72b6600fadefdd4 /yt_dlp/YoutubeDL.py | |
parent | 3b4775e021ebe4c5da43b48bc6484a829f0bb9e2 (diff) |
Add option `--skip-playlist-after-errors`
Allows to skip the rest of a playlist after a given number of errors are encountered
Diffstat (limited to 'yt_dlp/YoutubeDL.py')
-rw-r--r-- | yt_dlp/YoutubeDL.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py index 29931474d..a3d7968ff 100644 --- a/yt_dlp/YoutubeDL.py +++ b/yt_dlp/YoutubeDL.py @@ -214,6 +214,8 @@ class YoutubeDL(object): ignoreerrors: Do not stop on download errors (Default True when running yt-dlp, but False when directly accessing YoutubeDL class) + skip_playlist_after_errors: Number of allowed failures until the rest of + the playlist is skipped force_generic_extractor: Force downloader to use the generic extractor overwrites: Overwrite all video and metadata files if True, overwrite only non-video files if None @@ -1327,6 +1329,8 @@ class YoutubeDL(object): x_forwarded_for = ie_result.get('__x_forwarded_for_ip') self.to_screen('[%s] playlist %s: %s' % (ie_result['extractor'], playlist, msg)) + failures = 0 + max_failures = self.params.get('skip_playlist_after_errors') or float('inf') for i, entry in enumerate(entries, 1): self.to_screen('[download] Downloading video %s of %s' % (i, n_entries)) # This __x_forwarded_for_ip thing is a bit ugly but requires @@ -1351,6 +1355,12 @@ class YoutubeDL(object): continue entry_result = self.__process_iterable_entry(entry, download, extra) + if not entry_result: + failures += 1 + if failures >= max_failures: + self.report_error( + 'Skipping the remaining entries in playlist "%s" since %d items failed extraction' % (playlist, failures)) + break # TODO: skip failed (empty) entries? playlist_results.append(entry_result) ie_result['entries'] = playlist_results |