diff --git a/docs/supportedsites.md b/docs/supportedsites.md
index 07aff3d9..1865f82e 100644
--- a/docs/supportedsites.md
+++ b/docs/supportedsites.md
@@ -352,7 +352,7 @@ Consider all listed sites to potentially be NSFW.
ImageChest |
https://imgchest.com/ |
- Galleries |
+ Galleries, User Profiles |
|
diff --git a/gallery_dl/extractor/imagechest.py b/gallery_dl/extractor/imagechest.py
index 9199d125..115fff32 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
diff --git a/test/results/imagechest.py b/test/results/imagechest.py
index 4b6a2ba3..41254a39 100644
--- a/test/results/imagechest.py
+++ b/test/results/imagechest.py
@@ -41,4 +41,12 @@ __tests__ = (
"#exception": exception.NotFoundError,
},
+{
+ "#url" : "https://imgchest.com/u/LunarLandr",
+ "#category": ("", "imagechest", "user"),
+ "#class" : imagechest.ImagechestUserExtractor,
+ "#pattern" : imagechest.ImagechestGalleryExtractor.pattern,
+ "#count" : 279,
+},
+
)