diff options
Diffstat (limited to 'gallery_dl/extractor/picazor.py')
| -rw-r--r-- | gallery_dl/extractor/picazor.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/gallery_dl/extractor/picazor.py b/gallery_dl/extractor/picazor.py new file mode 100644 index 0000000..df1f436 --- /dev/null +++ b/gallery_dl/extractor/picazor.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. + +"""Extractors for https://picazor.com/""" + +from .common import Extractor, Message +from .. import text + + +class PicazorUserExtractor(Extractor): + """Extractor for picazor users""" + category = "picazor" + subcategory = "user" + root = "https://picazor.com" + browser = "firefox" + directory_fmt = ("{category}", "{user}") + filename_fmt = "{id}_{num:>03}.{extension}" + archive_fmt = "{id}_{num}" + pattern = r"(?:https?://)?(?:www\.)?picazor\.com/[a-z]{2}/([^/?#]+)" + example = "https://picazor.com/en/USERNAME" + + def items(self): + user = self.groups[0] + first = True + + url = f"{self.root}/api/files/{user}/sfiles" + params = {"page": 1} + headers = {"Referer": f"{self.root}/en/{user}"} + + while True: + data = self.request_json(url, params=params, headers=headers) + if not data: + break + + for item in data: + path = item.get("path") + if not path: + continue + + if first: + first = False + self.kwdict["user"] = user + self.kwdict["count"] = item.get("order") + yield Message.Directory, "", { + "subject": item.get("subject"), + "user" : user, + } + + item.pop("blurDataURL", None) + item["num"] = item["order"] + + file_url = self.root + path + text.nameext_from_url(file_url, item) + yield Message.Url, file_url, item + + params["page"] += 1 |
