diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index 5bd05fdc..12ee44df 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@ - + @@ -19,13 +19,8 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Canales agregados y arreglos[/B][/COLOR] - » diskokosmiko » gamovideo - » mispelisyseries » pelisplus - » seriespapaya » descargas2020 - » openload » torrentlocura - » torrentrapid » streamcloud - » danimados » animemovil - » serieslan + » torrentrapid » torrentlocura + » mispelisyseries » descargas2020 ¤ arreglos internos ¤ Gracias a la colaboración de @pipcat y @lopezvg en ésta versión diff --git a/plugin.video.alfa/core/cloudflare.py b/plugin.video.alfa/core/cloudflare.py index 356eb310..b4948b71 100755 --- a/plugin.video.alfa/core/cloudflare.py +++ b/plugin.video.alfa/core/cloudflare.py @@ -9,7 +9,7 @@ import urllib import urlparse from platformcode import logger - +from decimal import Decimal, ROUND_UP class Cloudflare: def __init__(self, response): @@ -62,12 +62,20 @@ class Cloudflare: def get_url(self): # Metodo #1 (javascript) if self.js_data.get("wait", 0): - jschl_answer = self.decode(self.js_data["value"]) + jschl_answer = self.decode2(self.js_data["value"]) for op, v in self.js_data["op"]: - jschl_answer = eval(str(jschl_answer) + op + str(self.decode(v))) + #jschl_answer = eval(str(jschl_answer) + op + str(self.decode2(v))) + if op == '+': + jschl_answer = jschl_answer + self.decode2(v) + elif op == '-': + jschl_answer = jschl_answer - self.decode2(v) + elif op == '*': + jschl_answer = jschl_answer * self.decode2(v) + elif op == '/': + jschl_answer = jschl_answer / self.decode2(v) - self.js_data["params"]["jschl_answer"] = jschl_answer + len(self.domain) + self.js_data["params"]["jschl_answer"] = round(jschl_answer, 10) + len(self.domain) response = "%s://%s%s?%s" % ( self.protocol, self.domain, self.js_data["auth_url"], urllib.urlencode(self.js_data["params"])) @@ -85,6 +93,29 @@ class Cloudflare: return response + def decode2(self, data): + data = re.sub("\!\+\[\]", "1", data) + data = re.sub("\!\!\[\]", "1", data) + data = re.sub("\[\]", "0", data) + + pos = data.find("/") + numerador = data[:pos] + denominador = data[pos+1:] + + aux = re.compile('\(([0-9\+]+)\)').findall(numerador) + num1 = "" + for n in aux: + num1 += str(eval(n)) + + aux = re.compile('\(([0-9\+]+)\)').findall(denominador) + num2 = "" + for n in aux: + num2 += str(eval(n)) + + #return float(num1) / float(num2) + #return Decimal(Decimal(num1) / Decimal(num2)).quantize(Decimal('.0000000000000001'), rounding=ROUND_UP) + return Decimal(Decimal(num1) / Decimal(num2)).quantize(Decimal('.0000000000000001')) + def decode(self, data): t = time.time() timeout = False diff --git a/plugin.video.alfa/core/httptools.py b/plugin.video.alfa/core/httptools.py index ffda92c4..460f4f37 100755 --- a/plugin.video.alfa/core/httptools.py +++ b/plugin.video.alfa/core/httptools.py @@ -68,7 +68,7 @@ load_cookies() def downloadpage(url, post=None, headers=None, timeout=None, follow_redirects=True, cookies=True, replace_headers=False, - add_referer=False, only_headers=False, bypass_cloudflare=True): + add_referer=False, only_headers=False, bypass_cloudflare=True, count_retries=0): """ Abre una url y retorna los datos obtenidos @@ -234,13 +234,14 @@ def downloadpage(url, post=None, headers=None, timeout=None, follow_redirects=Tr logger.info("No se ha podido descomprimir") # Anti Cloudflare - if bypass_cloudflare: + if bypass_cloudflare and count_retries < 5: cf = Cloudflare(response) if cf.is_cloudflare: + count_retries += 1 logger.info("cloudflare detectado, esperando %s segundos..." % cf.wait_time) auth_url = cf.get_url() - logger.info("Autorizando... url: %s" % auth_url) - if downloadpage(auth_url, headers=request_headers, replace_headers=True).sucess: + logger.info("Autorizando... intento %d url: %s" % (count_retries, auth_url)) + if downloadpage(auth_url, headers=request_headers, replace_headers=True, count_retries=count_retries).sucess: logger.info("Autorización correcta, descargando página") resp = downloadpage(url=response["url"], post=post, headers=headers, timeout=timeout, follow_redirects=follow_redirects,