mirror of
https://github.com/yt-dlp/yt-dlp.git
synced 2024-11-27 15:16:52 +01:00
Pre-check archive and filters during playlist extraction
This makes `--break-on-existing` much faster. It also helps `--break-on-reject` if the playlist extractor can extract the relevant fields
This commit is contained in:
parent
56a8fb4f77
commit
120fe5134a
@ -1017,7 +1017,7 @@ def prepare_filename(self, info_dict, dir_type='', warn=False):
|
||||
path = encodeFilename(path, True).decode(preferredencoding())
|
||||
return sanitize_path(path, force=self.params.get('windowsfilenames'))
|
||||
|
||||
def _match_entry(self, info_dict, incomplete=False):
|
||||
def _match_entry(self, info_dict, incomplete=False, silent=False):
|
||||
""" Returns None if the file should be downloaded """
|
||||
|
||||
video_title = info_dict.get('title', info_dict.get('id', 'video'))
|
||||
@ -1065,6 +1065,7 @@ def check_filter():
|
||||
reason = check_filter()
|
||||
break_opt, break_err = 'break_on_reject', RejectedVideoReached
|
||||
if reason is not None:
|
||||
if not silent:
|
||||
self.to_screen('[download] ' + reason)
|
||||
if self.params.get(break_opt, False):
|
||||
raise break_err()
|
||||
@ -1351,6 +1352,11 @@ def iter_playlistitems(format):
|
||||
elif not playlistitems:
|
||||
break
|
||||
entries.append(entry)
|
||||
try:
|
||||
if entry is not None:
|
||||
self._match_entry(entry, incomplete=True, silent=True)
|
||||
except (ExistingVideoReached, RejectedVideoReached):
|
||||
break
|
||||
ie_result['entries'] = entries
|
||||
|
||||
# Save playlist_index before re-ordering
|
||||
|
Loading…
Reference in New Issue
Block a user