Added manga-py source
This commit is contained in:
82
manga-py-stable_1.x/manga_py/providers/exhentai_org.py
Normal file
82
manga-py-stable_1.x/manga_py/providers/exhentai_org.py
Normal file
@@ -0,0 +1,82 @@
|
||||
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
|
||||
Reference in New Issue
Block a user