diff --git a/gallery_dl/extractor/__init__.py b/gallery_dl/extractor/__init__.py index 396de05e..2098dc45 100644 --- a/gallery_dl/extractor/__init__.py +++ b/gallery_dl/extractor/__init__.py @@ -70,6 +70,7 @@ modules = [ "piczel", "pinterest", "pixiv", + "pornreactor", "powermanga", "readcomiconline", "rebeccablacktech", diff --git a/gallery_dl/extractor/joyreactor.py b/gallery_dl/extractor/joyreactor.py index d87a07c0..75a0d03d 100644 --- a/gallery_dl/extractor/joyreactor.py +++ b/gallery_dl/extractor/joyreactor.py @@ -6,13 +6,16 @@ # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. -"""Extractors for http://joyreactor.com/""" +"""Extractors for http://joyreactor.cc/""" from .common import Extractor, Message from .. import text import json +BASE_PATTERN = r"(?:https?://)?(?:www\.)?(joyreactor\.c(?:c|om))" + + class JoyreactorExtractor(Extractor): """Base class for joyreactor extractors""" category = "joyreactor" @@ -23,7 +26,7 @@ class JoyreactorExtractor(Extractor): def __init__(self, match): Extractor.__init__(self) self.url = match.group(0) - self.root = "http://joyreactor." + match.group(1) + self.root = "http://" + match.group(1) self.session.headers["Referer"] = self.root def items(self): @@ -112,11 +115,11 @@ class JoyreactorExtractor(Extractor): class JoyreactorTagExtractor(JoyreactorExtractor): - """Extractor for tag searches on joyreactor.com""" + """Extractor for tag searches on joyreactor.cc""" subcategory = "tag" directory_fmt = ["{category}", "{search_tags}"] archive_fmt = "{search_tags}_{post_id}_{num}" - pattern = [r"(?:https?://)?(?:www\.)?joyreactor\.(com|cc)/tag/([^/?&#]+)"] + pattern = [BASE_PATTERN + r"/tag/([^/?&#]+)"] test = [ ("http://joyreactor.com/tag/Cirno", { "url": "a81382a3146da50b647c475f87427a6ca1d737df", @@ -137,10 +140,10 @@ class JoyreactorTagExtractor(JoyreactorExtractor): class JoyreactorUserExtractor(JoyreactorExtractor): - """Extractor for all posts of a user on joyreactor.com""" + """Extractor for all posts of a user on joyreactor.cc""" subcategory = "user" directory_fmt = ["{category}", "user", "{user}"] - pattern = [r"(?:https?://)?(?:www\.)?joyreactor\.(com|cc)/user/([^/?&#]+)"] + pattern = [BASE_PATTERN + r"/user/([^/?&#]+)"] test = [ ("http://joyreactor.com/user/Tacoman123", { "url": "0444158f17c22f08515ad4e7abf69ad2f3a63b35", @@ -161,9 +164,9 @@ class JoyreactorUserExtractor(JoyreactorExtractor): class JoyreactorPostExtractor(JoyreactorExtractor): - """Extractor for single posts on joyreactor.com""" + """Extractor for single posts on joyreactor.cc""" subcategory = "post" - pattern = [r"(?:https?://)?(?:www\.)?joyreactor\.(com|cc)/post/(\d+)"] + pattern = [BASE_PATTERN + r"/post/(\d+)"] test = [ ("http://joyreactor.com/post/3721876", { # single image "url": "904779f6571436f3d5adbce30c2c272f6401e14a", diff --git a/gallery_dl/extractor/pornreactor.py b/gallery_dl/extractor/pornreactor.py new file mode 100644 index 00000000..c1209d66 --- /dev/null +++ b/gallery_dl/extractor/pornreactor.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- + +# Copyright 2018 Mike Fährmann +# +# 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 http://pornreactor.cc/""" + +from .joyreactor import ( + JoyreactorTagExtractor, + JoyreactorUserExtractor, + JoyreactorPostExtractor, +) + + +BASE_PATTERN = r"(?:https?://)?(?:www\.)?(pornreactor\.cc|fapreactor.com)" + + +class PornreactorTagExtractor(JoyreactorTagExtractor): + """Extractor for tag searches on pornreactor.cc""" + category = "pornreactor" + pattern = [BASE_PATTERN + r"/tag/([^/?&#]+)"] + test = [ + ("http://pornreactor.cc/tag/RiceGnat", { + "count": ">= 120", + }), + ("http://fapreactor.com/tag/RiceGnat", None), + ] + + +class PornreactorUserExtractor(JoyreactorUserExtractor): + """Extractor for all posts of a user on pornreactor.cc""" + category = "pornreactor" + pattern = [BASE_PATTERN + r"/user/([^/?&#]+)"] + test = [ + ("http://pornreactor.cc/user/Disillusion", { + "url": "7e06f87f8dcce3fc7851b6d13aa55712ab45fb04", + "keyword": "edfefb54ea4863e3731c508ae6caeb4140be0d31", + }), + ("http://fapreactor.com/user/Disillusion", None), + ] + + +class PornreactorPostExtractor(JoyreactorPostExtractor): + """Extractor for single posts on pornreactor.cc""" + category = "pornreactor" + subcategory = "post" + pattern = [BASE_PATTERN + r"/post/(\d+)"] + test = [ + ("http://pornreactor.cc/post/863166", { + "url": "9e5f7b374605cbbd413f4f4babb9d1af6f95b843", + "keyword": "6e9e4bd4e2d4f3f2c7936340ec71f8693129f809", + "content": "3e2a09f8b5e5ed7722f51c5f423ff4c9260fb23e", + }), + ("http://fapreactor.com/post/863166", { + "url": "83ff7c87741c05bcf1de6825e2b4739afeb87ed5", + "keyword": "cf8159224fde59c1dab86677514b4aedeb533d66", + }), + ]