From: RicterZ Date: Wed, 2 Jun 2021 15:20:56 +0000 (+0800) Subject: fix bug of proxy while downloading doujinshi X-Git-Tag: 0.4.16 X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=refs%2Ftags%2F0.4.16;p=nhentai.git fix bug of proxy while downloading doujinshi --- diff --git a/nhentai/constant.py b/nhentai/constant.py index ef2edb9..10feab8 100644 --- a/nhentai/constant.py +++ b/nhentai/constant.py @@ -29,7 +29,6 @@ NHENTAI_HOME = os.path.join(os.getenv('HOME', tempfile.gettempdir()), '.nhentai' NHENTAI_HISTORY = os.path.join(NHENTAI_HOME, 'history.sqlite3') NHENTAI_CONFIG_FILE = os.path.join(NHENTAI_HOME, 'config.json') - CONFIG = { 'proxy': {'http': '', 'https': ''}, 'cookie': '', diff --git a/nhentai/downloader.py b/nhentai/downloader.py index dd1e431..f0aa9fd 100644 --- a/nhentai/downloader.py +++ b/nhentai/downloader.py @@ -14,6 +14,7 @@ try: except ImportError: from urlparse import urlparse +from nhentai import constant from nhentai.logger import logger from nhentai.parser import request from nhentai.utils import Singleton @@ -34,7 +35,7 @@ class Downloader(Singleton): self.timeout = timeout self.delay = delay - def download_(self, url, folder='', filename='', retried=0): + def download_(self, url, folder='', filename='', retried=0, proxy=None): if self.delay: time.sleep(self.delay) logger.info('Starting to download {0} ...'.format(url)) @@ -51,7 +52,7 @@ class Downloader(Singleton): i = 0 while i < 10: try: - response = request('get', url, stream=True, timeout=self.timeout) + response = request('get', url, stream=True, timeout=self.timeout, proxies=proxy) if response.status_code != 200: raise NHentaiImageNotExistException @@ -77,7 +78,8 @@ class Downloader(Singleton): except (requests.HTTPError, requests.Timeout) as e: if retried < 3: logger.warning('Warning: {0}, retrying({1}) ...'.format(str(e), retried)) - return 0, self.download_(url=url, folder=folder, filename=filename, retried=retried+1) + return 0, self.download_(url=url, folder=folder, filename=filename, + retried=retried+1, proxy=proxy) else: return 0, None @@ -128,7 +130,7 @@ class Downloader(Singleton): else: logger.warning('Path \'{0}\' already exist.'.format(folder)) - queue = [(self, url, folder) for url in queue] + queue = [(self, url, folder, constant.CONFIG['proxy']) for url in queue] pool = multiprocessing.Pool(self.size, init_worker) [pool.apply_async(download_wrapper, args=item) for item in queue] @@ -137,9 +139,9 @@ class Downloader(Singleton): pool.join() -def download_wrapper(obj, url, folder=''): +def download_wrapper(obj, url, folder='', proxy=None): if sys.platform == 'darwin' or semaphore.get_value(): - return Downloader.download_(obj, url=url, folder=folder) + return Downloader.download_(obj, url=url, folder=folder, proxy=proxy) else: return -3, None diff --git a/nhentai/utils.py b/nhentai/utils.py index 6977297..4519048 100644 --- a/nhentai/utils.py +++ b/nhentai/utils.py @@ -20,7 +20,11 @@ def request(method, url, **kwargs): 'User-Agent': 'nhentai command line client (https://github.com/RicterZ/nhentai)', 'Cookie': constant.CONFIG['cookie'] }) - return getattr(session, method)(url, proxies=constant.CONFIG['proxy'], verify=False, **kwargs) + + if not kwargs.get('proxies', None): + kwargs['proxies'] = constant.CONFIG['proxy'] + + return getattr(session, method)(url, verify=False, **kwargs) def check_cookie():