]> jfr.im git - yt-dlp.git/commitdiff
Fix/improve `InAdvancePagedList`
authorpukkandan <redacted>
Sun, 23 Jan 2022 17:55:17 +0000 (23:25 +0530)
committerpukkandan <redacted>
Sun, 23 Jan 2022 19:37:14 +0000 (01:07 +0530)
yt_dlp/YoutubeDL.py
yt_dlp/utils.py

index baf54cd2e42da219c14d56b3f2a7990156ff19b7..d3bcd84a7a6015d3524401ef9ce5f67ac6189628 100644 (file)
@@ -72,6 +72,7 @@
     GeoRestrictedError,
     get_domain,
     HEADRequest,
+    InAdvancePagedList,
     int_or_none,
     iri_to_uri,
     ISO3166Utils,
@@ -1662,6 +1663,9 @@ def get_entry(i):
             msg = 'Downloading %d videos'
             if not isinstance(ie_entries, (PagedList, LazyList)):
                 ie_entries = LazyList(ie_entries)
+            elif isinstance(ie_entries, InAdvancePagedList):
+                if ie_entries._pagesize == 1:
+                    playlist_count = ie_entries._pagecount
 
             def get_entry(i):
                 return YoutubeDL.__handle_extraction_exceptions(
index 55bd67ea2f5bcafa345f9d8e0fd8778c96b1a73c..2b33e1ec9e6fa2397a09e3f17e97d3470669374c 100644 (file)
@@ -2845,8 +2845,7 @@ def __init__(self, pagefunc, pagecount, pagesize):
 
     def _getslice(self, start, end):
         start_page = start // self._pagesize
-        end_page = (
-            self._pagecount if end is None else (end // self._pagesize + 1))
+        end_page = self._pagecount if end is None else min(self._pagecount, end // self._pagesize + 1)
         skip_elems = start - start_page * self._pagesize
         only_more = None if end is None else end - start
         for pagenum in range(start_page, end_page):