aboutsummaryrefslogtreecommitdiffstats
path: root/yt_dlp
diff options
context:
space:
mode:
authorpukkandan <pukkandan.ytdlp@gmail.com>2022-11-11 23:03:26 +0530
committerpukkandan <pukkandan.ytdlp@gmail.com>2022-11-12 00:02:12 +0530
commitbc5c2f8a2c84633940956a27bf2125804f73882e (patch)
tree4d5ae93f6f78df71df512c1fbf42a1ddbed8c963 /yt_dlp
parentd9658562350f6aaf9f6deb037734d1cd691a64ce (diff)
downloadhypervideo-pre-bc5c2f8a2c84633940956a27bf2125804f73882e.tar.lz
hypervideo-pre-bc5c2f8a2c84633940956a27bf2125804f73882e.tar.xz
hypervideo-pre-bc5c2f8a2c84633940956a27bf2125804f73882e.zip
Fix bugs in `PlaylistEntries`
Diffstat (limited to 'yt_dlp')
-rw-r--r--yt_dlp/YoutubeDL.py9
-rw-r--r--yt_dlp/utils.py6
2 files changed, 9 insertions, 6 deletions
diff --git a/yt_dlp/YoutubeDL.py b/yt_dlp/YoutubeDL.py
index 1efcfc2e4..32bd5b3dc 100644
--- a/yt_dlp/YoutubeDL.py
+++ b/yt_dlp/YoutubeDL.py
@@ -1816,7 +1816,7 @@ class YoutubeDL:
elif self.params.get('playlistrandom'):
random.shuffle(entries)
- self.to_screen(f'[{ie_result["extractor"]}] Playlist {title}: Downloading {n_entries} videos'
+ self.to_screen(f'[{ie_result["extractor"]}] Playlist {title}: Downloading {n_entries} items'
f'{format_field(ie_result, "playlist_count", " of %s")}')
keep_resolved_entries = self.params.get('extract_flat') != 'discard'
@@ -1849,7 +1849,7 @@ class YoutubeDL:
resolved_entries[i] = (playlist_index, NO_DEFAULT)
continue
- self.to_screen('[download] Downloading video %s of %s' % (
+ self.to_screen('[download] Downloading item %s of %s' % (
self._format_screen(i + 1, self.Styles.ID), self._format_screen(n_entries, self.Styles.EMPHASIS)))
extra.update({
@@ -1867,8 +1867,11 @@ class YoutubeDL:
resolved_entries[i] = (playlist_index, entry_result)
# Update with processed data
- ie_result['requested_entries'] = [i for i, e in resolved_entries if e is not NO_DEFAULT]
ie_result['entries'] = [e for _, e in resolved_entries if e is not NO_DEFAULT]
+ ie_result['requested_entries'] = [i for i, e in resolved_entries if e is not NO_DEFAULT]
+ if ie_result['requested_entries'] == try_call(lambda: list(range(1, ie_result['playlist_count'] + 1))):
+ # Do not set for full playlist
+ ie_result.pop('requested_entries')
# Write the updated info to json
if _infojson_written is True and self._write_info_json(
diff --git a/yt_dlp/utils.py b/yt_dlp/utils.py
index 04a0956c9..40313f50e 100644
--- a/yt_dlp/utils.py
+++ b/yt_dlp/utils.py
@@ -2950,10 +2950,10 @@ class PlaylistEntries:
self.is_exhausted = True
requested_entries = info_dict.get('requested_entries')
- self.is_incomplete = bool(requested_entries)
+ self.is_incomplete = requested_entries is not None
if self.is_incomplete:
assert self.is_exhausted
- self._entries = [self.MissingEntry] * max(requested_entries)
+ self._entries = [self.MissingEntry] * max(requested_entries or [0])
for i, entry in zip(requested_entries, entries):
self._entries[i - 1] = entry
elif isinstance(entries, (list, PagedList, LazyList)):
@@ -3022,7 +3022,7 @@ class PlaylistEntries:
if not self.is_incomplete:
raise self.IndexError()
if entry is self.MissingEntry:
- raise EntryNotInPlaylist(f'Entry {i} cannot be found')
+ raise EntryNotInPlaylist(f'Entry {i + 1} cannot be found')
return entry
else:
def get_entry(i):