X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=nhentai%2Fdownloader.py;h=f0aa9fde874f9c13c13273e3a1a7e458651ce5b7;hb=refs%2Ftags%2F0.4.16;hp=f11bb60b1682c1c046032864a99d86155703f7ef;hpb=ad86c49de945c25e1f87b1600cc48cccb12a6750;p=nhentai.git diff --git a/nhentai/downloader.py b/nhentai/downloader.py index f11bb60..f0aa9fd 100644 --- a/nhentai/downloader.py +++ b/nhentai/downloader.py @@ -1,5 +1,4 @@ # coding: utf- -from __future__ import unicode_literals, print_function import multiprocessing import signal @@ -15,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 @@ -35,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)) @@ -52,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 @@ -78,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 @@ -120,16 +121,16 @@ class Downloader(Singleton): folder = os.path.join(self.path, folder) if not os.path.exists(folder): - logger.warn('Path \'{0}\' does not exist, creating.'.format(folder)) + logger.warning('Path \'{0}\' does not exist, creating.'.format(folder)) try: os.makedirs(folder) except EnvironmentError as e: logger.critical('{0}'.format(str(e))) else: - logger.warn('Path \'{0}\' already exist.'.format(folder)) + 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] @@ -138,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