HDmario: aggiornamento registrazione automatica

This commit is contained in:
marco
2020-10-06 23:22:43 +02:00
parent e753c343be
commit 7cef26be19
2 changed files with 45 additions and 29 deletions
+3 -3
View File
@@ -26,7 +26,7 @@ class Mailbox:
def waitForMail(self, timeout=50): def waitForMail(self, timeout=50):
info = 'verifica tramite mail richiesta dal sito, sono in attesa di nuove mail sulla casella ' + self.address info = 'verifica tramite mail richiesta dal sito, sono in attesa di nuove mail sulla casella ' + self.address
info += '\nTimeout tra ' + str(timeout) + ' secondi' # info += '\nTimeout tra ' + str(timeout) + ' secondi'
dialog = platformtools.dialog_progress(config.get_localized_string(20000), info) dialog = platformtools.dialog_progress(config.get_localized_string(20000), info)
secs = 0 secs = 0
while secs < timeout: while secs < timeout:
@@ -73,7 +73,6 @@ class OneSecMailbox(Mailbox):
def inbox(self): def inbox(self):
""" """
:param user: user@1secmail.com
:return: json containing inbox id and subjects :return: json containing inbox id and subjects
""" """
apiUrl = self.baseUrl + '?action=getMessages&login=' + self.user + '&domain=' + self.domain apiUrl = self.baseUrl + '?action=getMessages&login=' + self.user + '&domain=' + self.domain
@@ -124,8 +123,9 @@ class Gmailnator(Mailbox):
self.user, id = support.match(inbox[0]['content'], patron='([^\/]+)\/messageid\/#([a-z0-9]+)').match self.user, id = support.match(inbox[0]['content'], patron='([^\/]+)\/messageid\/#([a-z0-9]+)').match
#<b>subject</b><div>2 minutes ago</div><hr /><div dir="ltr">body</div> #<b>subject</b><div>2 minutes ago</div><hr /><div dir="ltr">body</div>
html = httptools.downloadpage(self.baseUrl + 'mailbox/get_single_message/', post={'csrf_gmailnator_token': self.csrf, 'action': 'get_message', 'message_id': id, 'email': self.user}).data html = httptools.downloadpage(self.baseUrl + 'mailbox/get_single_message/', post={'csrf_gmailnator_token': self.csrf, 'action': 'get_message', 'message_id': id, 'email': self.user}).data
logger.debug(html)
m = Email() m = Email()
m.subject, m.date, m.body = support.match(html, patron='<b>([^<]+)<\/b><div>([^<]+)<\/div><hr \/><div dir="ltr">(.*)').match m.subject, m.date, m.body = support.match(html, patron='<b>([^<]+)<\/b><div>([^<]+)<\/div><hr \/>(.*)').match
return m return m
return inbox return inbox
+41 -25
View File
@@ -3,6 +3,7 @@ import xbmc
from core import httptools, scrapertools, filetools from core import httptools, scrapertools, filetools
from platformcode import logger, config, platformtools from platformcode import logger, config, platformtools
from lib.fakeMail import Gmailnator
baseUrl = 'https://hdmario.live' baseUrl = 'https://hdmario.live'
@@ -37,60 +38,75 @@ def registerOrLogin(page_url, forced=False):
setting.server_config(Item(config='hdmario')) setting.server_config(Item(config='hdmario'))
login() login()
else: else:
logger.info('Registrazione automatica in corso')
import random import random
import string import string
randEmail = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(random.randint(9, 14))) + '@gmail.com' logger.info('Registrazione automatica in corso')
mailbox = Gmailnator()
randPsw = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(10)) randPsw = ''.join(random.choice(string.ascii_letters + string.digits) for i in range(10))
logger.info('email: ' + randEmail) captcha = httptools.downloadpage(baseUrl + '/captchaInfo').json
logger.info('email: ' + mailbox.address)
logger.info('pass: ' + randPsw) logger.info('pass: ' + randPsw)
nTry = 0 reg = platformtools.dialog_register(baseUrl + '/register/', email=True, password=True, email_default=mailbox.address, password_default=randPsw, captcha_img=captcha['captchaUrl'])
while nTry < 5: if not reg:
nTry += 1 return False
rq = 'loggedin' in httptools.downloadpage(baseUrl + '/register/', regPost = httptools.downloadpage(baseUrl + '/register/',
post={'email': randEmail, 'email_confirmation': randEmail, post={'email': reg['email'], 'email_confirmation': reg['email'],
'password': randPsw, 'password': reg['password'],
'password_confirmation': randPsw}).url 'password_confirmation': reg['password'],
if rq: 'captchaUuid': captcha['captchaUuid'],
config.set_setting('username', randEmail, server='hdmario') 'captcha': reg['captcha']})
if reg['email'] == mailbox.address:
mail = mailbox.waitForMail()
if mail:
checkUrl = scrapertools.find_single_match(mail.body, "https://ilcontrollore\.com/article\.php\?[^\s]+")
httptools.downloadpage(checkUrl)
config.set_setting('username', mailbox.address, server='hdmario')
config.set_setting('password', randPsw, server='hdmario') config.set_setting('password', randPsw, server='hdmario')
platformtools.dialog_ok('HDmario', platformtools.dialog_ok('HDmario',
'Registrato automaticamente con queste credenziali:\nemail:' + randEmail + '\npass: ' + randPsw) 'Registrato automaticamente con queste credenziali:\nemail:' + mailbox.address + '\npass: ' + randPsw)
break
else: else:
platformtools.dialog_ok('HDmario', 'Impossibile registrarsi automaticamente') platformtools.dialog_ok('HDmario', 'Impossibile registrarsi automaticamente')
return False
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']
+ ' e clicca sul link. Premi ok quando fatto')
logger.info('Registrazione completata') logger.info('Registrazione completata')
global page, data global page, data
page = httptools.downloadpage(page_url) page = httptools.downloadpage(page_url)
data = page.data data = page.data
return True
def get_video_url(page_url, premium=False, user="", password="", video_password=""): def get_video_url(page_url, premium=False, user="", password="", video_password=""):
global page, data global page, data
page_url = page_url.replace('?', '') page_url = page_url.replace('?', '')
logger.info("url=" + page_url) logger.info("url=" + page_url)
if 'unconfirmed' in page.url: if 'unconfirmed' in page.url:
from lib import onesecmail
id = page_url.split('/')[-1] id = page_url.split('/')[-1]
mail = onesecmail.getRandom() mailbox = Gmailnator()
postData = { postData = {
'email': mail, 'email': mailbox.address,
'hls_video_id': id 'hls_video_id': id
} }
httptools.downloadpage(page.url, post=postData) httptools.downloadpage(page.url, post=postData)
jsonMail = onesecmail.waitForMail(mail) mail = mailbox.waitForMail()
logger.info(jsonMail) logger.info(mail)
if jsonMail: if mail:
code = jsonMail['subject'].split(' - ')[0] code = mail.subject.split(' - ')[0]
page = httptools.downloadpage(page_url + '?code=' + code) page = httptools.downloadpage(page_url + '?code=' + code)
data = page.data data = page.data
if '/unauthorized' in page.url: if '/unauthorized' in page.url or '/not-active' in page.url:
registerOrLogin(page_url) httptools.set_cookies({}, True) # clear cookies
if not registerOrLogin(page_url):
return []
if 'Registrati' in data: elif 'Registrati' in data:
platformtools.dialog_ok('HDmario', 'Username/password non validi') platformtools.dialog_ok('HDmario', 'Username/password non validi')
registerOrLogin(page_url, True) 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.*)'))