migliorie hdmario login

This commit is contained in:
marco
2020-10-07 20:43:47 +02:00
parent 7cef26be19
commit fde6d7e0de
+65 -51
View File
@@ -21,59 +21,75 @@ def test_video_exists(page_url):
def login(): def login():
httptools.downloadpage(page.url.replace('/unauthorized', '/login'), r = httptools.downloadpage(page.url.replace('/unauthorized', '/login'),
post={'email': config.get_setting('username', server='hdmario'), post={'email': config.get_setting('username', server='hdmario'),
'password': config.get_setting('password', server='hdmario')}) 'password': config.get_setting('password', server='hdmario')})
if not r.success or 'Email o Password non validi' in r.data:
platformtools.dialog_ok('HDmario', 'Username/password non validi')
return False
return True
def registerOrLogin(page_url, forced=False): def registerOrLogin(page_url):
if not forced and config.get_setting('username', server='hdmario') and config.get_setting('password', server='hdmario'): if config.get_setting('username', server='hdmario') and config.get_setting('password', server='hdmario'):
login() if login():
else: return True
if platformtools.dialog_yesno('HDmario',
'Questo server necessita di un account, ne hai già uno oppure vuoi tentare una registrazione automatica?', if platformtools.dialog_yesno('HDmario',
yeslabel='Accedi', nolabel='Tenta registrazione'): 'Questo server necessita di un account, ne hai già uno oppure vuoi tentare una registrazione automatica?',
from specials import setting yeslabel='Accedi', nolabel='Tenta registrazione'):
from core.item import Item from specials import setting
setting.server_config(Item(config='hdmario')) from core.item import Item
login() user_pre = config.get_setting('username', server='hdmario')
password_pre = config.get_setting('password', server='hdmario')
setting.server_config(Item(config='hdmario'))
user_post = config.get_setting('username', server='hdmario')
password_post = config.get_setting('password', server='hdmario')
if user_pre != user_post or password_pre != password_post:
return registerOrLogin(page_url)
else: else:
import random return False
import string else:
logger.info('Registrazione automatica in corso') import random
mailbox = Gmailnator() import string
randPsw = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(10)) logger.info('Registrazione automatica in corso')
captcha = httptools.downloadpage(baseUrl + '/captchaInfo').json mailbox = Gmailnator()
logger.info('email: ' + mailbox.address) randPsw = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(10))
logger.info('pass: ' + randPsw) captcha = httptools.downloadpage(baseUrl + '/captchaInfo').json
reg = platformtools.dialog_register(baseUrl + '/register/', email=True, password=True, email_default=mailbox.address, password_default=randPsw, captcha_img=captcha['captchaUrl']) logger.info('email: ' + mailbox.address)
if not reg: logger.info('pass: ' + randPsw)
return False reg = platformtools.dialog_register(baseUrl + '/register/', email=True, password=True, email_default=mailbox.address, password_default=randPsw, captcha_img=captcha['captchaUrl'])
regPost = httptools.downloadpage(baseUrl + '/register/', if not reg:
post={'email': reg['email'], 'email_confirmation': reg['email'], return False
'password': reg['password'], regPost = httptools.downloadpage(baseUrl + '/register/',
'password_confirmation': reg['password'], post={'email': reg['email'], 'email_confirmation': reg['email'],
'captchaUuid': captcha['captchaUuid'], 'password': reg['password'],
'captcha': reg['captcha']}) 'password_confirmation': reg['password'],
if reg['email'] == mailbox.address: 'captchaUuid': captcha['captchaUuid'],
mail = mailbox.waitForMail() 'captcha': reg['captcha']})
if mail: if '/register' in regPost.url:
checkUrl = scrapertools.find_single_match(mail.body, "https://ilcontrollore\.com/article\.php\?[^\s]+") error = scrapertools.htmlclean(scrapertools.find_single_match(regPost.data, 'Impossibile proseguire.*?</div>'))
httptools.downloadpage(checkUrl) error = scrapertools.unescape(scrapertools.re.sub('\n\s+', ' ', error))
config.set_setting('username', mailbox.address, server='hdmario') platformtools.dialog_ok('HDmario', error)
config.set_setting('password', randPsw, server='hdmario') return False
platformtools.dialog_ok('HDmario', if reg['email'] == mailbox.address:
'Registrato automaticamente con queste credenziali:\nemail:' + mailbox.address + '\npass: ' + randPsw) mail = mailbox.waitForMail()
else: if mail:
platformtools.dialog_ok('HDmario', 'Impossibile registrarsi automaticamente') checkUrl = scrapertools.find_single_match(mail.body, 'href="([^"]+)">Premi qui')
return False httptools.downloadpage(checkUrl)
config.set_setting('username', mailbox.address, server='hdmario')
config.set_setting('password', randPsw, server='hdmario')
platformtools.dialog_ok('HDmario',
'Registrato automaticamente con queste credenziali:\nemail:' + mailbox.address + '\npass: ' + randPsw)
else: else:
platformtools.dialog_ok('HDmario', 'Hai modificato la mail quindi KoD non sarà in grado di effettuare la verifica in autonomia, apri la casella ' + reg['email'] platformtools.dialog_ok('HDmario', 'Impossibile registrarsi automaticamente')
+ ' e clicca sul link. Premi ok quando fatto') return False
logger.info('Registrazione completata') else:
global page, data platformtools.dialog_ok('HDmario', 'Hai modificato la mail quindi KoD non sarà in grado di effettuare la verifica in autonomia, apri la casella ' + reg['email']
page = httptools.downloadpage(page_url) + ' e clicca sul link. Premi ok quando fatto')
data = page.data logger.info('Registrazione completata')
return True return True
@@ -102,11 +118,9 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
httptools.set_cookies({}, True) # clear cookies httptools.set_cookies({}, True) # clear cookies
if not registerOrLogin(page_url): if not registerOrLogin(page_url):
return [] return []
page = httptools.downloadpage(page_url)
data = page.data
elif 'Registrati' in data:
platformtools.dialog_ok('HDmario', 'Username/password non validi')
if not registerOrLogin(page_url, True):
return []
logger.info(data) logger.info(data)
from lib import jsunpack_js2py from lib import jsunpack_js2py
unpacked = jsunpack_js2py.unpack(scrapertools.find_single_match(data, '<script type="text/javascript">\n*\s*\n*(eval.*)')) unpacked = jsunpack_js2py.unpack(scrapertools.find_single_match(data, '<script type="text/javascript">\n*\s*\n*(eval.*)'))