From 65fbd3972d7673b8ede5a9efa3c3bd3eb36902d0 Mon Sep 17 00:00:00 2001
From: Marcus Minhorst <136136617+the-phinet@users.noreply.github.com>
Date: Fri, 1 Aug 2025 01:48:00 -0400
Subject: [PATCH] [picstate] add 'image' extractor (#7946)
---
docs/supportedsites.md | 6 ++++++
gallery_dl/extractor/imagehosts.py | 13 ++++++++++++
test/results/picstate.py | 34 ++++++++++++++++++++++++++++++
3 files changed, 53 insertions(+)
create mode 100644 test/results/picstate.py
diff --git a/docs/supportedsites.md b/docs/supportedsites.md
index 2118af66..f311e82e 100644
--- a/docs/supportedsites.md
+++ b/docs/supportedsites.md
@@ -733,6 +733,12 @@ Consider all listed sites to potentially be NSFW.
Galleries |
|
+
+ | Picstate |
+ https://picstate.com/ |
+ individual Images |
+ |
+
| Pictoa |
https://pictoa.com/ |
diff --git a/gallery_dl/extractor/imagehosts.py b/gallery_dl/extractor/imagehosts.py
index 0e5ce7ef..5209d35d 100644
--- a/gallery_dl/extractor/imagehosts.py
+++ b/gallery_dl/extractor/imagehosts.py
@@ -383,3 +383,16 @@ class FappicImageExtractor(ImagehostImageExtractor):
filename = filename[13:]
return url, filename
+
+
+class PicstateImageExtractor(ImagehostImageExtractor):
+ """Extractor for single images from picstate.com"""
+ category = "picstate"
+ pattern = r"(?:https?://)?((?:www\.)?picstate\.com/view/full/([^/?#]+))"
+ example = "https://picstate.com/view/full/123"
+
+ def get_info(self, page):
+ pos = page.index(' id="image_container"')
+ url , pos = text.extract(page, '