Fixed --playlist-start feature
This commit is contained in:
parent
068629da73
commit
f2c22d9f3f
@ -548,7 +548,6 @@ class YoutubeDL(object):
|
|||||||
if not ie.working():
|
if not ie.working():
|
||||||
self.report_warning('The program functionality for this site has been marked as broken, '
|
self.report_warning('The program functionality for this site has been marked as broken, '
|
||||||
'and will probably not work.')
|
'and will probably not work.')
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ie_result = ie.extract(url)
|
ie_result = ie.extract(url)
|
||||||
if ie_result is None: # Finished already (backwards compatibility; listformats and friends should be moved here)
|
if ie_result is None: # Finished already (backwards compatibility; listformats and friends should be moved here)
|
||||||
@ -668,16 +667,20 @@ class YoutubeDL(object):
|
|||||||
(ie_result['extractor'], playlist, n_all_entries, n_entries))
|
(ie_result['extractor'], playlist, n_all_entries, n_entries))
|
||||||
else:
|
else:
|
||||||
assert isinstance(ie_result['entries'], PagedList)
|
assert isinstance(ie_result['entries'], PagedList)
|
||||||
entries = ie_result['entries'].getslice(
|
entries = ie_result['entries']
|
||||||
|
if reverse:
|
||||||
|
entries = entries.getslice(0, None)
|
||||||
|
entries = entries[::-1]
|
||||||
|
entries = entries[playliststart:playlistend]
|
||||||
|
else:
|
||||||
|
entries = entries.getslice(
|
||||||
playliststart, playlistend)
|
playliststart, playlistend)
|
||||||
|
|
||||||
n_entries = len(entries)
|
n_entries = len(entries)
|
||||||
self.to_screen(
|
self.to_screen(
|
||||||
"[%s] playlist %s: Downloading %d videos" %
|
"[%s] playlist %s: Downloading %d videos" %
|
||||||
(ie_result['extractor'], playlist, n_entries))
|
(ie_result['extractor'], playlist, n_entries))
|
||||||
|
|
||||||
if reverse:
|
|
||||||
entries = reversed(entries)
|
|
||||||
|
|
||||||
for i, entry in enumerate(entries, 1):
|
for i, entry in enumerate(entries, 1):
|
||||||
self.to_screen('[download] Downloading video #%s of %s' % (i, n_entries))
|
self.to_screen('[download] Downloading video #%s of %s' % (i, n_entries))
|
||||||
extra = {
|
extra = {
|
||||||
|
@ -1265,16 +1265,19 @@ class OnDemandPagedList(PagedList):
|
|||||||
self._pagefunc = pagefunc
|
self._pagefunc = pagefunc
|
||||||
self._pagesize = pagesize
|
self._pagesize = pagesize
|
||||||
|
|
||||||
def getslice(self, start=0, end=None):
|
def getslice(self, start=0, end=None, reverse=False):
|
||||||
res = []
|
res = []
|
||||||
|
|
||||||
|
# r = list(itertools.count(start // self._pagesize))
|
||||||
|
# for pagenum in r:
|
||||||
for pagenum in itertools.count(start // self._pagesize):
|
for pagenum in itertools.count(start // self._pagesize):
|
||||||
|
# absolute videos before current page; page 2 * 50 v/p = 100
|
||||||
firstid = pagenum * self._pagesize
|
firstid = pagenum * self._pagesize
|
||||||
nextfirstid = pagenum * self._pagesize + self._pagesize
|
nextfirstid = pagenum * self._pagesize + self._pagesize
|
||||||
if start >= nextfirstid:
|
if start >= nextfirstid:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
page_results = list(self._pagefunc(pagenum))
|
page_results = list(self._pagefunc(pagenum))
|
||||||
|
|
||||||
startv = (
|
startv = (
|
||||||
start % self._pagesize
|
start % self._pagesize
|
||||||
if firstid <= start < nextfirstid
|
if firstid <= start < nextfirstid
|
||||||
|
Loading…
x
Reference in New Issue
Block a user