diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 4cea8548..b676e27c 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -283,6 +283,12 @@ Consider all listed sites to potentially be NSFW. Favorites, Galleries, Posts, Search Results, Tag Searches Supported + + EPORNER + https://www.eporner.com/ + Galleries + + EroMe https://www.erome.com/ diff --git a/gallery_dl/extractor/__init__.py b/gallery_dl/extractor/__init__.py index dcc211f2..1fdf2d70 100644 --- a/gallery_dl/extractor/__init__.py +++ b/gallery_dl/extractor/__init__.py @@ -56,6 +56,7 @@ modules = [ "discord", "dynastyscans", "e621", + "eporner", "erome", "everia", "exhentai", diff --git a/gallery_dl/extractor/eporner.py b/gallery_dl/extractor/eporner.py new file mode 100644 index 00000000..307f14b4 --- /dev/null +++ b/gallery_dl/extractor/eporner.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. + +"""Extractors for https://www.eporner.com/""" + +from .common import GalleryExtractor +from .. import text + + +class EpornerGalleryExtractor(GalleryExtractor): + """Extractor for image galleries from eporner.com""" + category = "eporner" + root = "https://eporner.com" + pattern = (r"(?:https?://)?(?:www\.)?eporner\.com" + r"/gallery/(\w+)(?:/([\w-]+))?") + example = "https://www.eporner.com/gallery/GID/SLUG/" + + def __init__(self, match): + url = f"{self.root}/gallery/{match[1]}/{match[2]}/" + GalleryExtractor.__init__(self, match, url) + + def metadata(self, page): + title = text.extr(page, "", " - EPORNER") + if title.endswith(" Photo Gallery"): + title = title[:-14] + + return { + "gallery_id": self.groups[0], + "title" : text.unescape(title), + "slug" : text.extr( + page, "/gallery/", '/"').rpartition("/")[2], + "description": text.unescape(text.extr( + page, 'name="description" content="', '"')), + "tags": text.extr( + page, 'EP.ads.keywords = "', '"').split(","), + } + + def images(self, page): + album = text.extr( + page, 'class="photosgrid gallerygrid"', "id='gallerySlideBox'") + + results = [] + for url in text.extract_iter(album, ' src="', '"'): + url, _, ext = url.rpartition(".") + # Preview images have a resolution suffix. + # E.g. "11208293-image-3_296x1000.jpg". + # The same name, but without the suffix, leads to the full image. + url = url[:url.rfind("_")] + name = url[url.rfind("/")+1:] + results.append((f"{url}.{ext}", {"id": name[:name.find("-")]})) + return results diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py index b520a397..056b8d54 100755 --- a/scripts/supportedsites.py +++ b/scripts/supportedsites.py @@ -53,6 +53,7 @@ CATEGORY_MAP = { "e926" : "e926", "e6ai" : "e6AI", "erome" : "EroMe", + "eporner" : "EPORNER", "everia" : "EVERIA.CLUB", "e-hentai" : "E-Hentai", "exhentai" : "ExHentai", diff --git a/test/results/eporner.py b/test/results/eporner.py new file mode 100644 index 00000000..d3cfa3b9 --- /dev/null +++ b/test/results/eporner.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. + +from gallery_dl.extractor import eporner + + +__tests__ = ( +{ + "#url" : "https://www.eporner.com/gallery/mHNhErACQFE/NaughtyAmerica-Lolly-Dames-My-Wife-s-Hot-Friend-Big-Booty-Big-Tits-Lolly-Dames-Gets-Her-Pussy-Slammed-Hard/", + "#class" : eporner.EpornerGalleryExtractor, + "#pattern" : r"https://static\-eu\-cdn\.eporner\.com/gallery/FE/CQ/mHNhErACQFE/\d+\-image\-\d+\.jpg", + "#count" : 261, + + "count" : 261, + "num" : range(1, 261), + "description": "NaughtyAmerica Lolly Dames - My Wife's Hot Friend - Big Booty Big Tits Lolly Dames Gets Her Pussy Slammed Hard sexy gallery with 261 pics. Eporner is the largest hd porn source.", + "extension" : "jpg", + "filename" : r"re:^\d+\-image\-\d+$", + "gallery_id" : "mHNhErACQFE", + "id" : r"re:^\d+$", + "slug" : "NaughtyAmerica-Lolly-Dames-My-Wife-s-Hot-Friend-Big-Booty-Big-Tits-Lolly-Dames-Gets-Her-Pussy-Slammed-Hard", + "title" : "NaughtyAmerica Lolly Dames - My Wife's Hot Friend - Big Booty Big Tits Lolly Dames Gets Her Pussy Slammed Hard", + "tags" : [ + "cumshot", + "hardcore", + "blowjob", + "mature", + "housewives", + "big tits", + "blonde", + "big ass", + "milf", + ], +}, + +{ + "#url" : "https://www.eporner.com/gallery/mHNhErACQFE", + "#class" : eporner.EpornerGalleryExtractor, +}, + +)