From 7cef26be1933a48c3f016b673851095bb7f0ad36 Mon Sep 17 00:00:00 2001 From: marco Date: Tue, 6 Oct 2020 23:22:43 +0200 Subject: [PATCH] HDmario: aggiornamento registrazione automatica --- lib/fakeMail.py | 6 ++-- servers/hdmario.py | 68 ++++++++++++++++++++++++++++------------------ 2 files changed, 45 insertions(+), 29 deletions(-) diff --git a/lib/fakeMail.py b/lib/fakeMail.py index 4e0ae738..4e5f7217 100644 --- a/lib/fakeMail.py +++ b/lib/fakeMail.py @@ -26,7 +26,7 @@ class Mailbox: def waitForMail(self, timeout=50): 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) secs = 0 while secs < timeout: @@ -73,7 +73,6 @@ class OneSecMailbox(Mailbox): def inbox(self): """ - :param user: user@1secmail.com :return: json containing inbox id and subjects """ 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 #subject
2 minutes ago

body
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.subject, m.date, m.body = support.match(html, patron='([^<]+)<\/b>
([^<]+)<\/div>
(.*)').match + m.subject, m.date, m.body = support.match(html, patron='([^<]+)<\/b>
([^<]+)<\/div>
(.*)').match return m return inbox diff --git a/servers/hdmario.py b/servers/hdmario.py index 27bb27e9..7879fe82 100644 --- a/servers/hdmario.py +++ b/servers/hdmario.py @@ -3,6 +3,7 @@ import xbmc from core import httptools, scrapertools, filetools from platformcode import logger, config, platformtools +from lib.fakeMail import Gmailnator baseUrl = 'https://hdmario.live' @@ -37,60 +38,75 @@ def registerOrLogin(page_url, forced=False): setting.server_config(Item(config='hdmario')) login() else: - logger.info('Registrazione automatica in corso') import random 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)) - logger.info('email: ' + randEmail) + captcha = httptools.downloadpage(baseUrl + '/captchaInfo').json + logger.info('email: ' + mailbox.address) logger.info('pass: ' + randPsw) - nTry = 0 - while nTry < 5: - nTry += 1 - rq = 'loggedin' in httptools.downloadpage(baseUrl + '/register/', - post={'email': randEmail, 'email_confirmation': randEmail, - 'password': randPsw, - 'password_confirmation': randPsw}).url - if rq: - config.set_setting('username', randEmail, server='hdmario') + reg = platformtools.dialog_register(baseUrl + '/register/', email=True, password=True, email_default=mailbox.address, password_default=randPsw, captcha_img=captcha['captchaUrl']) + if not reg: + return False + regPost = httptools.downloadpage(baseUrl + '/register/', + post={'email': reg['email'], 'email_confirmation': reg['email'], + 'password': reg['password'], + 'password_confirmation': reg['password'], + 'captchaUuid': captcha['captchaUuid'], + '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') platformtools.dialog_ok('HDmario', - 'Registrato automaticamente con queste credenziali:\nemail:' + randEmail + '\npass: ' + randPsw) - break + 'Registrato automaticamente con queste credenziali:\nemail:' + mailbox.address + '\npass: ' + randPsw) + else: + platformtools.dialog_ok('HDmario', 'Impossibile registrarsi automaticamente') + return False else: - platformtools.dialog_ok('HDmario', 'Impossibile registrarsi automaticamente') + 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') global page, data page = httptools.downloadpage(page_url) data = page.data + return True + + def get_video_url(page_url, premium=False, user="", password="", video_password=""): global page, data page_url = page_url.replace('?', '') logger.info("url=" + page_url) if 'unconfirmed' in page.url: - from lib import onesecmail id = page_url.split('/')[-1] - mail = onesecmail.getRandom() + mailbox = Gmailnator() postData = { - 'email': mail, + 'email': mailbox.address, 'hls_video_id': id } httptools.downloadpage(page.url, post=postData) - jsonMail = onesecmail.waitForMail(mail) - logger.info(jsonMail) - if jsonMail: - code = jsonMail['subject'].split(' - ')[0] + mail = mailbox.waitForMail() + logger.info(mail) + if mail: + code = mail.subject.split(' - ')[0] page = httptools.downloadpage(page_url + '?code=' + code) data = page.data - if '/unauthorized' in page.url: - registerOrLogin(page_url) + if '/unauthorized' in page.url or '/not-active' in 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') - registerOrLogin(page_url, True) + if not registerOrLogin(page_url, True): + return [] logger.info(data) from lib import jsunpack_js2py unpacked = jsunpack_js2py.unpack(scrapertools.find_single_match(data, '