Skip to content

Commit

Permalink
[zerochan] download webp and gif files, add 'extensions' option (#6576)
Browse files Browse the repository at this point in the history
  • Loading branch information
mikf committed Dec 5, 2024
1 parent 624dc7f commit 34e157e
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
16 changes: 16 additions & 0 deletions docs/configuration.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5190,6 +5190,22 @@ Description
`youtube-dl's docstrings <https://github.com/ytdl-org/youtube-dl/blob/0153b387e57e0bb8e580f1869f85596d2767fb0d/youtube_dl/YoutubeDL.py#L157>`__


extractor.zerochan.extensions
-----------------------------
Type
* ``string``
* ``list`` of ``strings``
Default
``["jpg", "png", "webp", "gif"]``
Example
* ``"gif"``
* ``["webp", "gif", "jpg"}``
Description
List of filename extensions to try when dynamically building download URLs
(`"pagination": "api" <extractor.zerochan.pagination_>`__ +
`"metadata": false <extractor.zerochan.metadata_>`__)


extractor.zerochan.metadata
---------------------------
Type
Expand Down
21 changes: 16 additions & 5 deletions gallery_dl/extractor/zerochan.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,14 @@ def _init(self):
self.posts = self.posts_api
self.session.headers["User-Agent"] = util.USERAGENT

exts = self.config("extensions")
if exts:
if isinstance(exts, str):
exts = exts.split(",")
self.exts = exts
else:
self.exts = ("jpg", "png", "webp", "gif")

def metadata(self):
return {"search_tags": text.unquote(
self.search_tag.replace("+", " "))}
Expand Down Expand Up @@ -194,8 +202,6 @@ def posts_api(self):
"p" : self.page_start,
}

static = "https://static.zerochan.net/.full."

while True:
response = self.request(url, params=params, allow_redirects=False)

Expand All @@ -221,15 +227,20 @@ def posts_api(self):
yield post
else:
for post in posts:
base = static + str(post["id"])
post["file_url"] = base + ".jpg"
post["_fallback"] = (base + ".png",)
urls = self._urls(post)
post["file_url"] = next(urls)
post["_fallback"] = urls
yield post

if not data.get("next"):
return
params["p"] += 1

def _urls(self, post, static="https://static.zerochan.net/.full."):
base = static + str(post["id"]) + "."
for ext in self.exts:
yield base + ext


class ZerochanImageExtractor(ZerochanExtractor):
subcategory = "image"
Expand Down

0 comments on commit 34e157e

Please sign in to comment.