diff options
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) |
