aboutsummaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/pornpics.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2025-12-20 05:49:04 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2025-12-20 05:49:04 -0500
commita24ec1647aeac35a63b744ea856011ad6e06be3b (patch)
treeae94416de786aeddd05d99559098f7f16bb103a6 /gallery_dl/extractor/pornpics.py
parent33f8a8a37a9cba738ef25fb99955f0730da9eb48 (diff)
New upstream version 1.31.1.upstream/1.31.1
Diffstat (limited to 'gallery_dl/extractor/pornpics.py')
-rw-r--r--gallery_dl/extractor/pornpics.py38
1 files changed, 35 insertions, 3 deletions
diff --git a/gallery_dl/extractor/pornpics.py b/gallery_dl/extractor/pornpics.py
index 34a0111..9c926e8 100644
--- a/gallery_dl/extractor/pornpics.py
+++ b/gallery_dl/extractor/pornpics.py
@@ -58,7 +58,7 @@ class PornpicsExtractor(Extractor):
class PornpicsGalleryExtractor(PornpicsExtractor, GalleryExtractor):
"""Extractor for pornpics galleries"""
- pattern = BASE_PATTERN + r"/galleries/((?:[^/?#]+-)?(\d+))"
+ pattern = rf"{BASE_PATTERN}/galleries/((?:[^/?#]+-)?(\d+))"
example = "https://www.pornpics.com/galleries/TITLE-12345/"
def __init__(self, match):
@@ -94,7 +94,7 @@ class PornpicsGalleryExtractor(PornpicsExtractor, GalleryExtractor):
class PornpicsTagExtractor(PornpicsExtractor):
"""Extractor for galleries from pornpics tag searches"""
subcategory = "tag"
- pattern = BASE_PATTERN + r"/tags/([^/?#]+)"
+ pattern = rf"{BASE_PATTERN}/tags/([^/?#]+)"
example = "https://www.pornpics.com/tags/TAGS/"
def galleries(self):
@@ -105,7 +105,7 @@ class PornpicsTagExtractor(PornpicsExtractor):
class PornpicsSearchExtractor(PornpicsExtractor):
"""Extractor for galleries from pornpics search results"""
subcategory = "search"
- pattern = BASE_PATTERN + r"/(?:\?q=|pornstars/|channels/)([^/&#]+)"
+ pattern = rf"{BASE_PATTERN}/(?:\?q=|pornstars/|channels/)([^/&#]+)"
example = "https://www.pornpics.com/?q=QUERY"
def galleries(self):
@@ -116,3 +116,35 @@ class PornpicsSearchExtractor(PornpicsExtractor):
"offset": 0,
}
return self._pagination(url, params)
+
+
+class PornpicsListingExtractor(PornpicsExtractor):
+ """Extractor for galleries from pornpics listing pages
+
+ These pages (popular, recent, etc.) don't support JSON pagination
+ and use single quotes in HTML, unlike category pages.
+ """
+ subcategory = "listing"
+ pattern = (rf"{BASE_PATTERN}"
+ rf"/(popular|recent|rating|likes|views|comments)/?$")
+ example = "https://www.pornpics.com/popular/"
+
+ def galleries(self):
+ url = f"{self.root}/{self.groups[0]}/"
+ page = self.request(url).text
+ return [
+ {"g_url": href}
+ for href in text.extract_iter(
+ page, "class='rel-link' href='", "'")
+ ]
+
+
+class PornpicsCategoryExtractor(PornpicsExtractor):
+ """Extractor for galleries from pornpics categories"""
+ subcategory = "category"
+ pattern = rf"{BASE_PATTERN}/([^/?#]+)/?$"
+ example = "https://www.pornpics.com/ass/"
+
+ def galleries(self):
+ url = f"{self.root}/{self.groups[0]}/"
+ return self._pagination(url)