diff options
Diffstat (limited to 'gallery_dl/extractor/imagechest.py')
| -rw-r--r-- | gallery_dl/extractor/imagechest.py | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/gallery_dl/extractor/imagechest.py b/gallery_dl/extractor/imagechest.py index 9199d12..115fff3 100644 --- a/gallery_dl/extractor/imagechest.py +++ b/gallery_dl/extractor/imagechest.py @@ -9,15 +9,17 @@ """Extractors for https://imgchest.com/""" -from .common import GalleryExtractor +from .common import GalleryExtractor, Extractor, Message from .. import text, exception +BASE_PATTERN = r"(?:https?://)?(?:www\.)?imgchest\.com" + class ImagechestGalleryExtractor(GalleryExtractor): """Extractor for image galleries from imgchest.com""" category = "imagechest" root = "https://imgchest.com" - pattern = r"(?:https?://)?(?:www\.)?imgchest\.com/p/([A-Za-z0-9]{11})" + pattern = BASE_PATTERN + r"/p/([A-Za-z0-9]{11})" example = "https://imgchest.com/p/abcdefghijk" def __init__(self, match): @@ -83,6 +85,42 @@ class ImagechestGalleryExtractor(GalleryExtractor): ] +class ImagechestUserExtractor(Extractor): + """Extractor for imgchest.com user profiles""" + category = "imagechest" + subcategory = "user" + root = "https://imgchest.com" + pattern = BASE_PATTERN + r"/u/([^/?#]+)" + example = "https://imgchest.com/u/USER" + + def __init__(self, match): + Extractor.__init__(self, match) + self.user = match.group(1) + + def items(self): + url = self.root + "/api/posts" + params = { + "page" : 1, + "sort" : "new", + "tag" : "", + "q" : "", + "username": text.unquote(self.user), + "nsfw" : "true", + } + + while True: + try: + data = self.request(url, params=params).json()["data"] + except (TypeError, KeyError): + return + + for gallery in data: + gallery["_extractor"] = ImagechestGalleryExtractor + yield Message.Queue, gallery["link"], gallery + + params["page"] += 1 + + class ImagechestAPI(): """Interface for the Image Chest API |
