Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Kingbox
2018-04-08 20:46:22 +02:00
3 changed files with 43 additions and 16 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.alfa" name="Alfa" version="2.5.7" provider-name="Alfa Addon">
<addon id="plugin.video.alfa" name="Alfa" version="2.5.8" provider-name="Alfa Addon">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.libtorrent" optional="true"/>
@@ -19,13 +19,8 @@
</assets>
<news>[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

View File

@@ -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

View File

@@ -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,