Skip to content

Commit

Permalink
[blogger] add 'label' or 'query' metadata fields (#2930)
Browse files Browse the repository at this point in the history
for '/search/label/…' or '/search?q=…' URLs
  • Loading branch information
mikf committed Sep 20, 2022
1 parent eef50c1 commit d699310
Showing 1 changed file with 21 additions and 9 deletions.
30 changes: 21 additions & 9 deletions gallery_dl/extractor/blogger.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ def items(self):
r'\d+\.bp\.blogspot\.com)/[^"]+)').findall
findall_video = re.compile(
r'src="(https?://www\.blogger\.com/video\.g\?token=[^"]+)').findall
metadata = self.metadata()

for post in self.posts(blog):
content = post["content"]
Expand All @@ -74,18 +75,21 @@ def items(self):
del post["selfLink"]
del post["blog"]

yield Message.Directory, {"blog": blog, "post": post}
for num, url in enumerate(files, 1):
yield Message.Url, url, text.nameext_from_url(url, {
"blog": blog,
"post": post,
"url" : url,
"num" : num,
})
data = {"blog": blog, "post": post}
if metadata:
data.update(metadata)
yield Message.Directory, data

for data["num"], url in enumerate(files, 1):
data["url"] = url
yield Message.Url, url, text.nameext_from_url(url, data)

def posts(self, blog):
"""Return an iterable with all relevant post objects"""

def metadata(self):
"""Return additional metadata"""


class BloggerPostExtractor(BloggerExtractor):
"""Extractor for a single blog post"""
Expand Down Expand Up @@ -178,7 +182,8 @@ class BloggerSearchExtractor(BloggerExtractor):
pattern = BASE_PATTERN + r"/search/?\?q=([^&#]+)"
test = (
("https://julianbphotography.blogspot.com/search?q=400mm", {
"count": "< 10"
"count": "< 10",
"keyword": {"query": "400mm"},
}),
)

Expand All @@ -189,6 +194,9 @@ def __init__(self, match):
def posts(self, blog):
return self.api.blog_search(blog["id"], self.query)

def metadata(self):
return {"query": self.query}


class BloggerLabelExtractor(BloggerExtractor):
"""Extractor for Blogger posts by label"""
Expand All @@ -198,6 +206,7 @@ class BloggerLabelExtractor(BloggerExtractor):
("https://dmmagazine.blogspot.com/search/label/D%26D", {
"range": "1-25",
"count": 25,
"keyword": {"label": "D&D"},
}),
)

Expand All @@ -208,6 +217,9 @@ def __init__(self, match):
def posts(self, blog):
return self.api.blog_posts(blog["id"], self.label)

def metadata(self):
return {"label": self.label}


class BloggerAPI():
"""Minimal interface for the Blogger v3 API
Expand Down

0 comments on commit d699310

Please sign in to comment.