youtube-dl

Another place where youtube-dl lives on
git clone git://git.oshgnacknak.de/youtube-dl.git
Log | Files | Refs | README | LICENSE

commit b95dc034ca96fbb19995c54a8c75b5d46116a1e1
parent 86a7dbe66e9aed051daa8c19a1ba8b860959a30a
Author: Yen Chi Hsuan <yan12125@gmail.com>
Date:   Tue, 23 Feb 2016 12:17:02 +0800

[utils] Implement cache for OnDemandPagedList

Diffstat:
Myoutube_dl/utils.py | 13+++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py @@ -1570,9 +1570,12 @@ class PagedList(object): class OnDemandPagedList(PagedList): - def __init__(self, pagefunc, pagesize): + def __init__(self, pagefunc, pagesize, use_cache=False): self._pagefunc = pagefunc self._pagesize = pagesize + self._use_cache = use_cache + if use_cache: + self._cache = {} def getslice(self, start=0, end=None): res = [] @@ -1582,7 +1585,13 @@ class OnDemandPagedList(PagedList): if start >= nextfirstid: continue - page_results = list(self._pagefunc(pagenum)) + page_results = None + if self._use_cache: + page_results = self._cache.get(pagenum) + if page_results is None: + page_results = list(self._pagefunc(pagenum)) + if self._use_cache: + self._cache[pagenum] = page_results startv = ( start % self._pagesize