[pixeldrain:album] add 'zip' option

This commit is contained in:
Mike Fährmann
2026-01-14 11:50:00 +01:00
parent 29e8440ec4
commit fea4f4c30b
3 changed files with 37 additions and 7 deletions

View File

@@ -4801,6 +4801,16 @@ Description
Recursively download files from subfolders.
extractor.pixeldrain.zip
------------------------
Type
``bool``
Default
``false``
Description
Download albums as a single `.zip` file.
extractor.pixiv.include
-----------------------
Type

View File

@@ -631,7 +631,8 @@
"pixeldrain":
{
"api-key" : null,
"recursive": false
"recursive": false,
"zip" : false
},
"pixiv":
{

View File

@@ -65,11 +65,33 @@ class PixeldrainAlbumExtractor(PixeldrainExtractor):
def items(self):
url = f"{self.root}/api/list/{self.album_id}"
album = self.request_json(url)
files = album["files"]
album["count"] = album["file_count"]
album["date"] = self.parse_datetime_iso(album["date_created"])
if self.config("zip", False):
self.directory_fmt = ("{category}",)
self.filename_fmt = "{filename[:230]} ({id}).{extension}"
del album["files"]
album["count"] = 1
url += "/zip"
file = {
"id" : album["id"],
"url" : url,
"num" : 0,
"count": 1,
"name" : album["title"] + ".zip",
"date" : album["date"],
"album": album,
"filename" : album["title"],
"extension": "zip",
}
yield Message.Directory, "", file
yield Message.Url, url, file
return
files = album.pop("files")
album["count"] = album.pop("file_count")
if self.file_index:
idx = text.parse_int(self.file_index)
try:
@@ -79,9 +101,6 @@ class PixeldrainAlbumExtractor(PixeldrainExtractor):
else:
idx = 0
del album["files"]
del album["file_count"]
yield Message.Directory, "", {"album": album}
for num, file in enumerate(files, idx+1):
file["album"] = album