diff --git a/docs/configuration.rst b/docs/configuration.rst index 9258a61b..dce56d49 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -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 diff --git a/docs/gallery-dl.conf b/docs/gallery-dl.conf index b2a01554..3c9968c7 100644 --- a/docs/gallery-dl.conf +++ b/docs/gallery-dl.conf @@ -631,7 +631,8 @@ "pixeldrain": { "api-key" : null, - "recursive": false + "recursive": false, + "zip" : false }, "pixiv": { diff --git a/gallery_dl/extractor/pixeldrain.py b/gallery_dl/extractor/pixeldrain.py index f299db99..51e5125e 100644 --- a/gallery_dl/extractor/pixeldrain.py +++ b/gallery_dl/extractor/pixeldrain.py @@ -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