Files
mangaDownloader/manga-py-stable_1.x/manga_py/providers/exhentai_org.py
2019-12-14 22:33:14 -05:00

83 lines
2.7 KiB
Python

from sys import exit
from time import sleep
from manga_py.fs import get_util_home_path, path_join, is_file, unlink
from .e_hentai_org import EHentaiOrg
from lxml.html import HtmlElement
class ExHentaiOrg(EHentaiOrg):
__uri = 'https://forums.e-hentai.org/index.php?act=Login&CODE={}'
cookie_file = None
def prepare_cookies(self):
super().prepare_cookies()
self.cookie_file = path_join(get_util_home_path(), 'cookies_exhentai.dat')
if is_file(self.cookie_file):
with open(self.cookie_file, 'r') as r:
self._storage['cookies'] = self.json.loads(r.read())
self.http().cookies = self._storage['cookies'].copy()
else:
action, method, form_data = self.prepare_form()
content = self.http().requests(action, data=form_data, method=method.lower())
if not ~content.text.find('You are now logged in as:'):
self.log('Wrong password?')
sleep(.1)
exit()
else:
with open(self.cookie_file, 'w') as w:
w.write(self.json.dumps(self._storage['cookies']))
sleep(5)
if not self.check_panda():
self.log('Panda detected. Please, try again')
exit(1)
def prepare_form(self):
# Login on e-hentai!
name = self.quest([], 'Request login on e-hentai.org')
password = self.quest_password('Request password on e-hentai.org\n')
selectors = [
'input[type="hidden"]',
'input[checked]',
'input[type="submit"]',
]
form_data = {
'UserName': name,
'PassWord': password,
}
prepare = self.http_get(self.__uri.format('00'))
parser = self.document_fromstring(prepare, 'form[name="LOGIN"]')[0] # type: HtmlElement
action = parser.get('action', self.__uri.format('01'))
method = parser.get('method', 'get')
for i in parser.cssselect(','.join(selectors)): # type: HtmlElement
form_data[i.get('name')] = i.get('value')
return action, method, form_data
def check_panda(self):
success = True
req = self.http().requests('https://exhentai.org/', method='head')
if ~req.headers['Content-Type'].find('image/'):
"""
if authorization was not successful
"""
self.log('Sad panda detected')
# self.log('Cookies:\n')
# self.log(self.http().cookies, '\n')
self.http().cookies = {}
unlink(self.cookie_file)
success = False
req.close()
return success
main = ExHentaiOrg