[blogger] add search extractor (#925)
This commit is contained in:
@@ -20,7 +20,7 @@ Archived.Moe https://archived.moe/ Threads
|
|||||||
ArtStation https://www.artstation.com/ |artstation-C|
|
ArtStation https://www.artstation.com/ |artstation-C|
|
||||||
baraag https://baraag.net/ Images from Statuses, User Profiles Optional (`OAuth <https://github.com/mikf/gallery-dl#oauth>`__)
|
baraag https://baraag.net/ Images from Statuses, User Profiles Optional (`OAuth <https://github.com/mikf/gallery-dl#oauth>`__)
|
||||||
Behance https://www.behance.net/ Collections, Galleries, User Profiles
|
Behance https://www.behance.net/ Collections, Galleries, User Profiles
|
||||||
Blogger https://www.blogger.com/ Blogs, Posts
|
Blogger https://www.blogger.com/ Blogs, Posts, Search Results
|
||||||
Danbooru https://danbooru.donmai.us/ Pools, Popular Images, Posts, Tag Searches Optional
|
Danbooru https://danbooru.donmai.us/ Pools, Popular Images, Posts, Tag Searches Optional
|
||||||
Desuarchive https://desuarchive.org/ Threads
|
Desuarchive https://desuarchive.org/ Threads
|
||||||
DeviantArt https://www.deviantart.com/ |deviantart-C| Optional (`OAuth <https://github.com/mikf/gallery-dl#oauth>`__)
|
DeviantArt https://www.deviantart.com/ |deviantart-C| Optional (`OAuth <https://github.com/mikf/gallery-dl#oauth>`__)
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ class BloggerPostExtractor(BloggerExtractor):
|
|||||||
class BloggerBlogExtractor(BloggerExtractor):
|
class BloggerBlogExtractor(BloggerExtractor):
|
||||||
"""Extractor for an entire Blogger blog"""
|
"""Extractor for an entire Blogger blog"""
|
||||||
subcategory = "blog"
|
subcategory = "blog"
|
||||||
pattern = BASE_PATTERN + "(?:/search/label/([^/?&#]+))?/?$"
|
pattern = BASE_PATTERN + r"/?$"
|
||||||
test = (
|
test = (
|
||||||
("https://julianbphotography.blogspot.com/", {
|
("https://julianbphotography.blogspot.com/", {
|
||||||
"range": "1-25",
|
"range": "1-25",
|
||||||
@@ -160,13 +160,36 @@ class BloggerBlogExtractor(BloggerExtractor):
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def posts(self, blog):
|
||||||
|
return self.api.blog_posts(blog["id"])
|
||||||
|
|
||||||
|
|
||||||
|
class BloggerSearchExtractor(BloggerExtractor):
|
||||||
|
"""Extractor for search resuls and labels"""
|
||||||
|
subcategory = "search"
|
||||||
|
pattern = BASE_PATTERN + r"/search(?:/?\?q=([^/?&#]+)|/label/([^/?&#]+))"
|
||||||
|
test = (
|
||||||
|
("https://julianbphotography.blogspot.com/search?q=400mm", {
|
||||||
|
"count": "< 10"
|
||||||
|
}),
|
||||||
|
("https://dmmagazine.blogspot.com/search/label/D%26D", {
|
||||||
|
"range": "1-25",
|
||||||
|
"count": 25,
|
||||||
|
}),
|
||||||
|
)
|
||||||
|
|
||||||
def __init__(self, match):
|
def __init__(self, match):
|
||||||
BloggerExtractor.__init__(self, match)
|
BloggerExtractor.__init__(self, match)
|
||||||
label = match.group(3)
|
query = match.group(3)
|
||||||
self.label = text.unquote(label) if label else None
|
if query:
|
||||||
|
self.query, self.label = query, None
|
||||||
|
else:
|
||||||
|
self.query, self.label = None, match.group(4)
|
||||||
|
|
||||||
def posts(self, blog):
|
def posts(self, blog):
|
||||||
return self.api.blog_posts(blog["id"], self.label)
|
if self.query:
|
||||||
|
return self.api.blog_search(blog["id"], text.unquote(self.query))
|
||||||
|
return self.api.blog_posts(blog["id"], text.unquote(self.label))
|
||||||
|
|
||||||
|
|
||||||
class BloggerAPI():
|
class BloggerAPI():
|
||||||
@@ -188,6 +211,11 @@ class BloggerAPI():
|
|||||||
params = {"labels": label}
|
params = {"labels": label}
|
||||||
return self._pagination(endpoint, params)
|
return self._pagination(endpoint, params)
|
||||||
|
|
||||||
|
def blog_search(self, blog_id, query):
|
||||||
|
endpoint = "blogs/{}/posts/search".format(blog_id)
|
||||||
|
params = {"q": query}
|
||||||
|
return self._pagination(endpoint, params)
|
||||||
|
|
||||||
def post_by_path(self, blog_id, path):
|
def post_by_path(self, blog_id, path):
|
||||||
endpoint = "blogs/{}/posts/bypath".format(blog_id)
|
endpoint = "blogs/{}/posts/bypath".format(blog_id)
|
||||||
return self._call(endpoint, {"path": path}, "post")
|
return self._call(endpoint, {"path": path}, "post")
|
||||||
|
|||||||
Reference in New Issue
Block a user