[blogger] support searching posts by labels (closes #925)

pull/960/head
Mike Fährmann 4 years ago
parent 60ba3cb946
commit aa64149583
No known key found for this signature in database
GPG Key ID: 5680CA389D365A88

@ -147,7 +147,7 @@ class BloggerPostExtractor(BloggerExtractor):
class BloggerBlogExtractor(BloggerExtractor):
"""Extractor for an entire Blogger blog"""
subcategory = "blog"
pattern = BASE_PATTERN + "/?$"
pattern = BASE_PATTERN + "(?:/search/label/([^/?&#]+))?/?$"
test = (
("https://julianbphotography.blogspot.com/", {
"range": "1-25",
@ -160,8 +160,13 @@ class BloggerBlogExtractor(BloggerExtractor):
}),
)
def __init__(self, match):
BloggerExtractor.__init__(self, match)
label = match.group(3)
self.label = text.unquote(label) if label else None
def posts(self, blog):
return self.api.blog_posts(blog["id"])
return self.api.blog_posts(blog["id"], self.label)
class BloggerAPI():
@ -178,8 +183,10 @@ class BloggerAPI():
def blog_by_url(self, url):
return self._call("blogs/byurl", {"url": url}, "blog")
def blog_posts(self, blog_id):
return self._pagination("blogs/{}/posts".format(blog_id), {})
def blog_posts(self, blog_id, label=None):
endpoint = "blogs/{}/posts".format(blog_id)
params = {"labels": label}
return self._pagination(endpoint, params)
def post_by_path(self, blog_id, path):
endpoint = "blogs/{}/posts/bypath".format(blog_id)

Loading…
Cancel
Save