From eef50c1f286e5d6d872b3773ac6ed0e791ad7393 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Mon, 19 Sep 2022 20:45:58 +0200 Subject: [PATCH] [blogger] split 'search' extractor (#2930) --- docs/supportedsites.md | 2 +- gallery_dl/extractor/blogger.py | 29 +++++++++++++++++++---------- gallery_dl/version.py | 2 +- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 1fa89288..68cd4b16 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -100,7 +100,7 @@ Consider all sites to be NSFW unless otherwise known. Blogger https://www.blogger.com/ - Blogs, Posts, Search Results + Blogs, Labels, Posts, Search Results diff --git a/gallery_dl/extractor/blogger.py b/gallery_dl/extractor/blogger.py index e0885d29..84f9dae3 100644 --- a/gallery_dl/extractor/blogger.py +++ b/gallery_dl/extractor/blogger.py @@ -173,13 +173,28 @@ class BloggerBlogExtractor(BloggerExtractor): class BloggerSearchExtractor(BloggerExtractor): - """Extractor for search resuls and labels""" + """Extractor for Blogger search resuls""" subcategory = "search" - pattern = BASE_PATTERN + r"/search(?:/?\?q=([^/?#]+)|/label/([^/?#]+))" + pattern = BASE_PATTERN + r"/search/?\?q=([^&#]+)" test = ( ("https://julianbphotography.blogspot.com/search?q=400mm", { "count": "< 10" }), + ) + + def __init__(self, match): + BloggerExtractor.__init__(self, match) + self.query = text.unquote(match.group(3)) + + def posts(self, blog): + return self.api.blog_search(blog["id"], self.query) + + +class BloggerLabelExtractor(BloggerExtractor): + """Extractor for Blogger posts by label""" + subcategory = "label" + pattern = BASE_PATTERN + r"/search/label/([^/?#]+)" + test = ( ("https://dmmagazine.blogspot.com/search/label/D%26D", { "range": "1-25", "count": 25, @@ -188,16 +203,10 @@ class BloggerSearchExtractor(BloggerExtractor): def __init__(self, match): BloggerExtractor.__init__(self, match) - query = match.group(3) - if query: - self.query, self.label = query, None - else: - self.query, self.label = None, match.group(4) + self.label = text.unquote(match.group(3)) def posts(self, blog): - 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)) + return self.api.blog_posts(blog["id"], self.label) class BloggerAPI(): diff --git a/gallery_dl/version.py b/gallery_dl/version.py index ce018feb..a04cd0cb 100644 --- a/gallery_dl/version.py +++ b/gallery_dl/version.py @@ -6,4 +6,4 @@ # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. -__version__ = "1.23.1" +__version__ = "1.23.2-dev"