[unsplash] implement 'skip()'
This commit is contained in:
@@ -21,6 +21,8 @@ class UnsplashExtractor(Extractor):
|
|||||||
filename_fmt = "{id}.{extension}"
|
filename_fmt = "{id}.{extension}"
|
||||||
archive_fmt = "{id}"
|
archive_fmt = "{id}"
|
||||||
root = "https://unsplash.com"
|
root = "https://unsplash.com"
|
||||||
|
page_start = 1
|
||||||
|
per_page = 20
|
||||||
|
|
||||||
def __init__(self, match):
|
def __init__(self, match):
|
||||||
Extractor.__init__(self, match)
|
Extractor.__init__(self, match)
|
||||||
@@ -42,9 +44,14 @@ class UnsplashExtractor(Extractor):
|
|||||||
yield Message.Directory, photo
|
yield Message.Directory, photo
|
||||||
yield Message.Url, url, photo
|
yield Message.Url, url, photo
|
||||||
|
|
||||||
|
def skip(self, num):
|
||||||
|
pages = num // self.per_page
|
||||||
|
self.page_start += pages
|
||||||
|
return pages * self.per_page
|
||||||
|
|
||||||
def _pagination(self, url, params, results=False):
|
def _pagination(self, url, params, results=False):
|
||||||
params["per_page"] = "20"
|
params["per_page"] = self.per_page
|
||||||
params["page"] = 1
|
params["page"] = self.page_start
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
photos = self.request(url, params=params).json()
|
photos = self.request(url, params=params).json()
|
||||||
@@ -52,7 +59,7 @@ class UnsplashExtractor(Extractor):
|
|||||||
photos = photos["results"]
|
photos = photos["results"]
|
||||||
yield from photos
|
yield from photos
|
||||||
|
|
||||||
if len(photos) < 20:
|
if len(photos) < self.per_page:
|
||||||
return
|
return
|
||||||
params["page"] += 1
|
params["page"] += 1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user