1
0
mirror of https://github.com/l1ving/youtube-dl synced 2025-03-07 16:17:18 +08:00

Fix breaks to PagedList and Generator Playlists

This commit is contained in:
ALurker 2018-08-26 12:37:40 -05:00
parent f4ca81416b
commit db3925b132

View File

@ -938,10 +938,7 @@ class YoutubeDL(object):
'[%s] playlist %s: Downloading %d videos' % '[%s] playlist %s: Downloading %d videos' %
(ie_result['extractor'], playlist, num_entries)) (ie_result['extractor'], playlist, num_entries))
if self.params.get('playlistreverse', False): def build_entries_list(ie_entries):
ie_entries = ie_entries[::-1]
if isinstance(ie_entries, list):
n_all_entries = len(ie_entries) n_all_entries = len(ie_entries)
if playlistitems: if playlistitems:
entries = make_playlistitems_entries(ie_entries) entries = make_playlistitems_entries(ie_entries)
@ -951,6 +948,12 @@ class YoutubeDL(object):
self.to_screen( self.to_screen(
'[%s] playlist %s: Collected %d video ids (downloading %d of them)' % '[%s] playlist %s: Collected %d video ids (downloading %d of them)' %
(ie_result['extractor'], playlist, n_all_entries, n_entries)) (ie_result['extractor'], playlist, n_all_entries, n_entries))
return n_entries, entries
if isinstance(ie_entries, list):
if self.params.get('playlistreverse', False):
ie_entries = ie_entries[::-1]
n_entries, entries = build_entries_list(ie_entries)
elif isinstance(ie_entries, PagedList): elif isinstance(ie_entries, PagedList):
if playlistitems: if playlistitems:
entries = [] entries = []
@ -959,19 +962,28 @@ class YoutubeDL(object):
item - 1, item item - 1, item
)) ))
else: else:
entries = ie_entries.getslice( if self.params.get('playlistreverse', False):
playliststart, playlistend) entries = ie_entries.getslice()
entries = entries[::-1][playliststart:playlistend]
else:
entries = ie_entries.getslice(
playliststart, playlistend)
n_entries = len(entries) n_entries = len(entries)
report_download(n_entries) report_download(n_entries)
else: # iterable else: # iterable
if playlistitems: if self.params.get('playlistreverse', False):
entries = make_playlistitems_entries(list(itertools.islice( ie_entries = list(ie_entries)[::-1]
ie_entries, 0, max(playlistitems)))) n_entries, entries = build_entries_list(ie_entries)
else: else:
entries = list(itertools.islice( if playlistitems:
ie_entries, playliststart, playlistend)) entries = make_playlistitems_entries(list(itertools.islice(
n_entries = len(entries) ie_entries, 0, max(playlistitems))))
report_download(n_entries) else:
entries = list(itertools.islice(
ie_entries, playliststart, playlistend))
n_entries = len(entries)
report_download(n_entries)
if self.params.get('playlistrandom', False): if self.params.get('playlistrandom', False):
random.shuffle(entries) random.shuffle(entries)