diff options
| author | 2025-12-20 05:49:11 -0500 | |
|---|---|---|
| committer | 2025-12-20 05:49:11 -0500 | |
| commit | c586ea4b3c871f5696626f9820e8c88a4e78f4a6 (patch) | |
| tree | e6d7bae96282c3d147159f091d451e53bdaa2efe /gallery_dl/extractor/pornpics.py | |
| parent | 01a2bf622c31072d1322884584404b9bd59b28cc (diff) | |
| parent | a24ec1647aeac35a63b744ea856011ad6e06be3b (diff) | |
Update upstream source from tag 'upstream/1.31.1'
Update to upstream version '1.31.1'
with Debian dir b5d91c25143175f933b1c69c7e82249cd7e145ab
Diffstat (limited to 'gallery_dl/extractor/pornpics.py')
| -rw-r--r-- | gallery_dl/extractor/pornpics.py | 38 |
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) |
