mirror of
				https://github.com/RicterZ/nhentai.git
				synced 2025-10-31 01:29:34 +01:00 
			
		
		
		
	| @@ -5,7 +5,7 @@ import signal | |||||||
| import platform | import platform | ||||||
|  |  | ||||||
| from nhentai.cmdline import cmd_parser, banner | from nhentai.cmdline import cmd_parser, banner | ||||||
| from nhentai.parser import doujinshi_parser, search_parser, print_doujinshi, login_parser, tag_parser | from nhentai.parser import doujinshi_parser, search_parser, print_doujinshi, login_parser, tag_parser, login | ||||||
| from nhentai.doujinshi import Doujinshi | from nhentai.doujinshi import Doujinshi | ||||||
| from nhentai.downloader import Downloader | from nhentai.downloader import Downloader | ||||||
| from nhentai.logger import logger | from nhentai.logger import logger | ||||||
| @@ -24,7 +24,10 @@ def main(): | |||||||
|     if options.login: |     if options.login: | ||||||
|         username, password = options.login.split(':', 1) |         username, password = options.login.split(':', 1) | ||||||
|         logger.info('Logging in to nhentai using credential pair \'%s:%s\'' % (username, '*' * len(password))) |         logger.info('Logging in to nhentai using credential pair \'%s:%s\'' % (username, '*' * len(password))) | ||||||
|         for doujinshi_info in login_parser(username=username, password=password): |         login(username, password) | ||||||
|  |  | ||||||
|  |         if options.is_download: | ||||||
|  |             for doujinshi_info in login_parser(): | ||||||
|                 doujinshi_list.append(Doujinshi(**doujinshi_info)) |                 doujinshi_list.append(Doujinshi(**doujinshi_info)) | ||||||
|  |  | ||||||
|     if options.tag: |     if options.tag: | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ import os | |||||||
| import re | import re | ||||||
| import threadpool | import threadpool | ||||||
| import requests | import requests | ||||||
| import time |  | ||||||
| from bs4 import BeautifulSoup | from bs4 import BeautifulSoup | ||||||
| from tabulate import tabulate | from tabulate import tabulate | ||||||
|  |  | ||||||
| @@ -13,21 +12,22 @@ import nhentai.constant as constant | |||||||
| from nhentai.logger import logger | from nhentai.logger import logger | ||||||
|  |  | ||||||
|  |  | ||||||
|  | session = requests.Session() | ||||||
|  |  | ||||||
|  |  | ||||||
| def request(method, url, **kwargs): | def request(method, url, **kwargs): | ||||||
|     if not hasattr(requests, method): |     global session | ||||||
|         raise AttributeError('\'requests\' object has no attribute \'{0}\''.format(method)) |     if not hasattr(session, method): | ||||||
|  |         raise AttributeError('\'requests.Session\' object has no attribute \'{0}\''.format(method)) | ||||||
|  |  | ||||||
|     return requests.__dict__[method](url, proxies=constant.PROXY, verify=False, **kwargs) |     return getattr(session, method)(url, proxies=constant.PROXY, verify=False, **kwargs) | ||||||
|  |  | ||||||
|  |  | ||||||
| def login_parser(username, password): | def login(username, password): | ||||||
|     s = requests.Session() |     global session | ||||||
|     s.proxies = constant.PROXY |     request('get', url=constant.LOGIN_URL) | ||||||
|     s.verify = False |     session.headers.update({'Referer': constant.LOGIN_URL}) | ||||||
|     s.headers.update({'Referer': constant.LOGIN_URL}) |     content = request('get', url=constant.LOGIN_URL).content | ||||||
|  |  | ||||||
|     s.get(constant.LOGIN_URL) |  | ||||||
|     content = s.get(constant.LOGIN_URL).content |  | ||||||
|     html = BeautifulSoup(content, 'html.parser') |     html = BeautifulSoup(content, 'html.parser') | ||||||
|     csrf_token_elem = html.find('input', attrs={'name': 'csrfmiddlewaretoken'}) |     csrf_token_elem = html.find('input', attrs={'name': 'csrfmiddlewaretoken'}) | ||||||
|  |  | ||||||
| @@ -40,12 +40,14 @@ def login_parser(username, password): | |||||||
|         'username_or_email': username, |         'username_or_email': username, | ||||||
|         'password': password, |         'password': password, | ||||||
|     } |     } | ||||||
|     resp = s.post(constant.LOGIN_URL, data=login_dict) |     resp = request('post', url=constant.LOGIN_URL, data=login_dict) | ||||||
|     if 'Invalid username/email or password' in resp.text: |     if 'Invalid username/email or password' in resp.text: | ||||||
|         logger.error('Login failed, please check your username and password') |         logger.error('Login failed, please check your username and password') | ||||||
|         exit(1) |         exit(1) | ||||||
|  |  | ||||||
|     html = BeautifulSoup(s.get(constant.FAV_URL).content, 'html.parser') |  | ||||||
|  | def login_parser(): | ||||||
|  |     html = BeautifulSoup(request('get', constant.FAV_URL).content, 'html.parser') | ||||||
|     count = html.find('span', attrs={'class': 'count'}) |     count = html.find('span', attrs={'class': 'count'}) | ||||||
|     if not count: |     if not count: | ||||||
|         logger.error("Can't get your number of favorited doujins. Did the login failed?") |         logger.error("Can't get your number of favorited doujins. Did the login failed?") | ||||||
| @@ -77,7 +79,7 @@ def login_parser(username, password): | |||||||
|     for page in range(1, pages + 1): |     for page in range(1, pages + 1): | ||||||
|         try: |         try: | ||||||
|             logger.info('Getting doujinshi ids of page %d' % page) |             logger.info('Getting doujinshi ids of page %d' % page) | ||||||
|             resp = s.get(constant.FAV_URL + '?page=%d' % page).text |             resp = request('get', constant.FAV_URL + '?page=%d' % page).text | ||||||
|             ids = doujinshi_id.findall(resp) |             ids = doujinshi_id.findall(resp) | ||||||
|             requests_ = threadpool.makeRequests(doujinshi_parser, ids, _callback) |             requests_ = threadpool.makeRequests(doujinshi_parser, ids, _callback) | ||||||
|             [thread_pool.putRequest(req) for req in requests_] |             [thread_pool.putRequest(req) for req in requests_] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user