Página 3 de 5

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 13:27
por robalo
Uno más completo para que lo adaptéis a Alfa o versiones anteriores o personalizada.
Sólo Kodi.
Para otras plataformas eliminar, filtrar o adaptar con 'platformtools' las líneas que se usan para 'DialogProgressBG()'

Código: Seleccionar todo

# -*- coding: utf-8 -*-

from re import sub, search, DOTALL
from urllib import urlencode

from core.httptools import downloadpage, default_headers
from core.logger import info
from core.scrapertools import find_single_match as find, \
                              find_multiple_matches as findall, \
                              get_filename_from_url as getFilename

ID = "streamplay"
DN = "streamplay.to"
HOST = "http://"+DN+"/"
USERAGENT = default_headers["User-Agent"]

def test_video_exists(page_url):
    info("["+ID+"] test_video_exists.page_url='%s'" % page_url)

    data = downloadpage(page_url).data
    if "<title>watch </title>" in data.lower():
        return False, "["+ID+"] El archivo no existe o ha sido borrado"
    return True, ""

def get_video_url(page_url, premium=False, user="", password="", video_password=""):
    info("["+ID+"] get_video_url.page_url='%s')" % page_url)

    data = downloadpage(page_url,cookies=False)
    cookie = find(data.headers['set-cookie'], '(__cfduid=[^;]+);')
    data = data.data

    file_id, aff = find(data, "'file_id', '(\d+)',[^']+'aff', '(\d+)',")
    _headers = {
        "Host": DN,
        "Content-Type": "application/x-www-form-urlencoded",
        "Cookie": cookie+";lang=4;file_id="+file_id+";aff="+aff+";"+urlencode({'ref_url':page_url}),
        "Referer": page_url,
    }

    post = urlencode(dict(findall(data, 'name="([^"]+)" value="([^"]*)"')))

    e = 10
    import xbmcgui
    p = xbmcgui.DialogProgressBG()
    p.create(ID)
    import time
    for t in range(e):
        p.update(t*100/e, ID+". Espera máxima: %s segundos." % e,"Intento %s/%s" % (t+1, e))
        time.sleep(1)
        data = downloadpage(page_url, post, headers=_headers).data
        l = findall(data, '(\w+=~\[\];.*?\)\(\)\)\(\);)')
        if len(l)>0:
            break
    if p:
        p.close()

    jj_encode = find(data, "(\w+=~\[\];.*?\)\(\)\)\(\);)")
    jj_decode = None;
    jj_patron = None;
    reverse = False;
    ## 'substring' existe en la actualidad pero no se usa
    #substring = False;
    splice = False
    if jj_encode:
        jj_decode = jjdecode(jj_encode)
    if jj_decode:
        jj_patron = find(jj_decode, "/([^/]+)/")
    if not "(" in jj_patron:
        jj_patron = "(" + jj_patron
    if not ")" in jj_patron:
        jj_patron+= ")"

    jhex_decode = jhexdecode(jj_decode)
    if "reverse" in jhex_decode:
        reverse = True
    ## 'substring' existe en la actualidad pero no se usa
    #if "substring" in jhex_decode:
    #    substring = True
    if "splice" in jhex_decode:
        splice = True

    data = find(data, "<script type=.text/javascript.>(eval\(function\(p,a,c,k,e,d.*?)</script>")
    data = unPack(data).replace("\\", "")

    data = find(data, "sources\s*=[^\[]*\[([^\]]+)\]")
    matches = findall(data.replace('"', "'"), "[src|file]:'([^']+)'")

    video_urls = []
    for video_url in matches:
        _hash = find(video_url, '\w{40,}')
        if splice:
            splice = eval(findall(jj_decode, "\((\d[^,]*),\d\);")[-1])
            if reverse:
                h = list(_hash);
                h.pop(-splice-1);
                _hash = "".join(h)
            else:
                h = list(_hash);
                h.pop(splice);
                _hash = "".join(h)
        ## 'substring' existe en la actualidad pero no se usa
        #if substring:
        #    substring = int(find(jj_decode, "_\w+.\d...(\d)...;"))
        #    if reverse:
        #        _hash = _hash[:-substring]
        #    else:
        #        _hash = _hash[substring:]
        if reverse:
            video_url = sub(r'\w{40,}', _hash[::-1], video_url)
        filename = getFilename(video_url)[-4:]
        if video_url.startswith("rtmp"):
            rtmp, playpath = video_url.split("vod/", 1)
            video_url = "%s playpath=%s swfUrl=%splayer6/jwplayer.flash.swf pageUrl=%s" % (rtmp+"vod/", playpath, HOST, page_url)
            filename = "RTMP"
        elif "m3u8" in video_url:
            video_url += "|User-Agent=" + USERAGENT
        elif video_url.endswith("/v.mp4"):
            video_url_flv = sub(r'/v.mp4$','/v.flv',video_url)
            video_urls.append([".flv ["+ID+"]", sub(r'%s' % jj_patron, r'\1', video_url_flv)])

        video_urls.append([filename+" ["+ID+"]", sub(r'%s' % jj_patron, r'\1', video_url)])

    for video_url in video_urls:
        info("["+ID+"] %s - %s" % (video_url[0], video_url[1]))

    return video_urls

def find_videos(data):
    encontrados = set()
    devuelve = []

    patronvideos  = DN+"/(?:embed-|iframe-|preview-|)([a-z0-9]+)(?:-\d+[xX]\d.html|.html|)"
    info("#"+patronvideos+"#")
    matches = findall(data, patronvideos)

    for match in matches:
        url = HOST+match
        if url not in encontrados:
            info("  url="+url)
            devuelve.append(["["+ID+"]", url, ID])
            encontrados.add(url)
        else:
            info("  url duplicada="+url)

    return devuelve

def unPack(packed):

    pattern = "}\('(.*)', *(\d+), *(\d+), *'(.*)'\.split\('([^']+)'\)"
    d = [ d for d in search(pattern, packed, DOTALL).groups() ]

    p = d[0]; a = int(d[1]); c = int(d[2]); k = d[3].split(d[4])

    if a <= 62: toString = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    else: toString = """ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"""

    def e(c):
        return toString[c] if c < a else toString[c // a] + toString[c % a]

    while c > 0:
        c-= 1
        if k[c]: x = e(c)
        else: x = k[c]
        y = k[c]
        p = sub(r"(\b%s\b)" % x, y, p)

    return p

def jjdecode(t):

    x = '0123456789abcdef'
    j = find(t, '^([^=]+)=')
    t = t.replace(j + '.', 'j.')

    t = sub(r'^.*?"\\""\+(.*?)\+"\\"".*?$', r'\1', t.replace('\\\\', '\\')) + '+""'
    t = sub('(\(!\[\]\+""\)\[j\._\$_\])', '"l"', t)
    t = sub(r'j\._\$\+', '"o"+', t)
    t = sub(r'j\.__\+', '"t"+', t)
    t = sub(r'j\._\+', '"u"+', t)

    p = findall(t, '(j\.[^\+]+\+)')
    for c in p:
        t = t.replace(c, c.replace('_', '0').replace('$', '1'))

    p = findall(t, 'j\.(\d{4})')
    for c in p:
        t = sub(r'j\.%s' % c, '"' + x[int(c, 2)] + '"', t)

    p = findall(t, '\\"\+j\.(001)\+j\.(\d{3})\+j\.(\d{3})\+')
    for c in p:
        t = sub(r'\\"\+j\.%s\+j\.%s\+j\.%s\+' % (c[0], c[1], c[2]), chr(int("".join(c), 2)) + '"+', t)

    p = findall(t, '\\"\+j\.(\d{3})\+j\.(\d{3})\+')
    for c in p:
        t = sub(r'\\"\+j\.%s\+j\.%s\+' % (c[0], c[1]), chr(int("".join(c),2)) + '"+', t)

    p = findall(t, 'j\.(\d{3})')
    for c in p:
        t = sub(r'j\.%s' % c, '"' + str(int(c, 2)) + '"', t)

    r = sub(r'"\+"|\\\\','',t[1:-1])

    return r

def jhexdecode(t):

    r = sub(r'_\d+x\w+x(\d+)', 'var_' + r'\1', t)
    r = sub(r'_\d+x\w+', 'var_0', r)

    def to_hx(c):
        h = int("%s" % c.groups(0),16)
        if 19 < h < 160:
            return chr(h)
        else:
            return ""

    r = sub(r'(?:\\|)x(\w{2})', to_hx, r).replace('var ','')

    f = eval(find(r, '\s*var_0\s*=\s*([^;]+);'))
    for i, v in enumerate(f):
        r = r.replace('[var_0[%s]]' % i, "." + f[i])
        if v == "": r = r.replace('var_0[%s]' % i, '""')

    return r

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 13:28
por bic
Delta escribió:
16 Ago 2017, 00:28
bic escribió:
15 Ago 2017, 23:24
Hola de nuevo a todos,siento mucho tener que seguir insistiendo,pero en esta nueva version 1.5.4 el arreglo al canal TVSeriesdk sigue sin mostrar resultados,ni capitulos ni enlaces de reproduccion en ninguna serie de la seccion Ultimos y sigue dando el mensaje no hay elementos que mostrar sin embargo en la secion Todas si que los muestra y funciona bien,a ver si a la siguiente hay suerte y ya va la vencida :lol:



- Version del plugin : version 1.5.4

- Version de kodi : kodi 17.3

- Sistema operativo : windows 10

- comprobar canal en su pagina web : esta vez no he vuelto a comprobar la web de nuevo,ya que lo hice en el anterior reporte





Aqui vuelvo a dejarlo reportado :?



Adjunto log detallado tras probar el canal en el plugin para reflejar el error y la causa en el log



Saludos y muchas gracias por vuestro trabajo ;)
Hola, Bic esta vez no voy a hablar en nombre del grupo, solo mia espero no te ofendas ni nada por el estilo, tengo que felicitarte por que eres uno de los poco que se toma el trabajo de poner un log para que podamos encontrar los problemas que aparecen dia a dia, ademas de que tambien eres uno de los que aconseja seguir la "Guia de como se debe reportar un problema".
Pero asi como te digo lo que haces bien tambien he de decirte lo que estas haciendo mal, o no tan bien, si existe esa guia que recomiendas usar es para que se utilice cada vez que se de un problema, en este caso tu omististe un paso escencial, comprobar la web... te dejo estas imagenes para que comprendas donde esta el error.

Imagen
Imagen

Imagen
Imagen

Si observas las imagenes veras que en el primer caso, no hay resultados, ya que el episodio esta disponible solo luego de su televisacion, claramente explicado en la web.

En el segundo caso, puedes ver 2 de los 3 enlaces disponibles para reproducir, esto se debe a que uno de los enlaces tiene un acortador de url, por lo que no se lista por el momento.

Espero que esta respuesta sea de tu satisfaccion, y resulte educativa e instrucitiva para ti, para de esta manera evites reportar errores que nos llevan a controlar cosas que estan en pleno funcionamiento quitandonos tiempo para resolver problemas reales, disculpa que te lo diga asi, pero lo has reportado mas de una vez y senti que merecias una respuesta directa y clara.

Saludos.


Bueno Delta muchas gracias por tu respuesta directa y clara,pero debo decirte que cuando reporte este canal por segunda vez realmente en la seccion ultimos no mostraba ningun resultado en ninguna serie no solamente en la del capitan,lo que me a parecido sorprendente es que funcione la seccion ultimos justo despues de leer este mensaje tuyo,no se si se tratara de otro error mio pero de momento no lo creo,ya que de ser asi no lo hubiese reportado por segunda vez




Gracias tambien por tus felicitaciones acompañadas de una especie de bronca o reproche no te preocupes no me ofendo mas bien intento tomarmelo como algo practico,aunque nunca es mi costumbre reportar cosas que ya esten a pleno funcionamiento esto es cosa de niños :lol: y mucho menos quitaros tiempo para resolver problemas reales,mas bien deseo que podais aprovechar vuestro tiempo para arreglar todo lo que no funcione





No es necesario felicitaciones por poner el log ni por aconsejar reportar correctamente por que esto es o deberia ser obligacion de todo el que reporte algo que no funcione en lugar de ir a lo comodo para que se puedan encontrar y detectar los problemas,poniendo ademas,version del plugin y de kodi y sistema operativo,sin olvidar comprobar si el problema tambien se da en la web




Con mis reportes lo que intento conseguir es que todo lo que hay en el plugin tanto canales como conectores funcione correctamente,es por eso que reporto imcluso canales que yo no uso como es el caso del canal TVSeriesdk entre otros pero al que intentare dar uso ya que parece un poco interesante




Por ultimo decir que no comprobe la web por que ya lo habia hecho hace muy pocos dias en un reporte anterior y no creo que la web cambie tan rapidamente de un dia para otro y de hecho acerte ya que de haber cambiado la web no estaria este canal a pleno funcionamiento





Muchas gracias por atender mi reporte,por el mantenimiento,los arreglos,mejoras y tu amabilidad y dar continuidad a este plugin que a tanta gente gusta,fascina y considera el mejor





Un saludo y un placer tener esta charla hasta otra posible futura ocasion :)

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 13:48
por Moyses37
Hola,puse esta misma pregunto en otro post,el de simplemente alfa,la pregunto aquí tb,alguno me podría ayudar?,la cuestión es la siguiente,suelo ver las películas en newpct1,bueno,el caso es que siempre que quiero ver una micro HD,me va a tirones y me tira la película para atrás,además le doy a descargar por torrent y no sale del 0%,decir que tengo fibra óptica y no creo que sea tema de la conexión, gracias de antemano

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 15:03
por franky
Moyses37 escribió:
17 Ago 2017, 13:48
Hola,puse esta misma pregunto en otro post,el de simplemente alfa,la pregunto aquí tb,alguno me podría ayudar?,la cuestión es la siguiente,suelo ver las películas en newpct1,bueno,el caso es que siempre que quiero ver una micro HD,me va a tirones y me tira la película para atrás,además le doy a descargar por torrent y no sale del 0%,decir que tengo fibra óptica y no creo que sea tema de la conexión, gracias de antemano

Yo uso newpct1 muchísimo.
Las pelis HD solo se pueden ver por torrent..ya que los demás link están en rar y en ese formato kodi no puede reproducirlos.

Por torrent.jamas me ha ido bien los clientes internos para ello.

Por eso debes instalar el addon torrenter o quasar

Una vez instalado debes entrar en ajustes del addon torrenter y seleccionar la ruta de descarga y decirle si quieres conservar la descarga o que la elimine nada más verla..


Con esto te aseguro que va de lujo newpct1
Te dejo el repo de torrenter

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 16:44
por Moyses37
Tengo el quasar instalado,y solo me fallan las micro HD ,las demás se ven perfectas,todo lo que sea micro HD o sin ripear,pelis que pesan entre 5-14 Gb,esas son las que me van a tirones

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 17:18
por franky
Pues no se..a mi me van perfecto .
Si alguno me va a tirones es porque tienen pocas semillas..y hay que esperar..pero por lo general las semillas de newpct van como un tiro

Que usas ...Android..Windows.
Que versión de kodi?

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 17:51
por Moyses37
franky escribió:
17 Ago 2017, 17:18
Pues no se..a mi me van perfecto .
Si alguno me va a tirones es porque tienen pocas semillas..y hay que esperar..pero por lo general las semillas de newpct van como un tiro

Que usas ...Android..Windows.
Que versión de kodi?
Android,krypton

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 17:56
por franky
Si el boxtv es amlogic..con kodi 17 no tienes los códecs de amlogic.

Yo tengo ftmc.o spmc.

Hice la prueba..con kodi 17 me iba a saltos ..con kodi 16.1 /ftmc/spmc (forks de kodi 16.1 con phyton 2.7.2 del krypton incluido) me va perfecto

Haz la prueba con alguno de esos forks
Son apk independientes...puedes tener instalado todos y probar el que mejor te funcione


FTMC
para CPU amlogic y rockchip

http://freaktab.com/forum/tv-player-sup ... tmc-jarvis

SPMC
para CPU amlogic

http://spmc.semperpax.com

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 20:06
por Moyses37
franky escribió:
17 Ago 2017, 17:56
Si el boxtv es amlogic..con kodi 17 no tienes los códecs de amlogic.

Yo tengo ftmc.o spmc.

Hice la prueba..con kodi 17 me iba a saltos ..con kodi 16.1 /ftmc/spmc (forks de kodi 16.1 con phyton 2.7.2 del krypton incluido) me va perfecto

Haz la prueba con alguno de esos forks

Ftmc para amlogic y rockchip http://freaktab.com/forum/tv-player-sup ... tmc-jarvis

Spmc para amlogic http://spmc.semperpax.com
Si que es amlogic

Re: Nuevo foro para Alfa

Publicado: 17 Ago 2017, 20:31
por Gamma
robalo escribió:
17 Ago 2017, 13:27
Uno más completo para que lo adaptéis a Alfa o versiones anteriores o personalizada.
Sólo Kodi.
Para otras plataformas eliminar, filtrar o adaptar con 'platformtools' las líneas que se usan para 'DialogProgressBG()'

Código: Seleccionar todo

# -*- coding: utf-8 -*-

from re import sub, search, DOTALL
from urllib import urlencode

from core.httptools import downloadpage, default_headers
from core.logger import info
from core.scrapertools import find_single_match as find, \
                              find_multiple_matches as findall, \
                              get_filename_from_url as getFilename

ID = "streamplay"
DN = "streamplay.to"
HOST = "http://"+DN+"/"
USERAGENT = default_headers["User-Agent"]

def test_video_exists(page_url):
    info("["+ID+"] test_video_exists.page_url='%s'" % page_url)

    data = downloadpage(page_url).data
    if "<title>watch </title>" in data.lower():
        return False, "["+ID+"] El archivo no existe o ha sido borrado"
    return True, ""

def get_video_url(page_url, premium=False, user="", password="", video_password=""):
    info("["+ID+"] get_video_url.page_url='%s')" % page_url)

    data = downloadpage(page_url,cookies=False)
    cookie = find(data.headers['set-cookie'], '(__cfduid=[^;]+);')
    data = data.data

    file_id, aff = find(data, "'file_id', '(\d+)',[^']+'aff', '(\d+)',")
    _headers = {
        "Host": DN,
        "Content-Type": "application/x-www-form-urlencoded",
        "Cookie": cookie+";lang=4;file_id="+file_id+";aff="+aff+";"+urlencode({'ref_url':page_url}),
        "Referer": page_url,
    }

    post = urlencode(dict(findall(data, 'name="([^"]+)" value="([^"]*)"')))

    e = 10
    import xbmcgui
    p = xbmcgui.DialogProgressBG()
    p.create(ID)
    import time
    for t in range(e):
        p.update(t*100/e, ID+". Espera máxima: %s segundos." % e,"Intento %s/%s" % (t+1, e))
        time.sleep(1)
        data = downloadpage(page_url, post, headers=_headers).data
        l = findall(data, '(\w+=~\[\];.*?\)\(\)\)\(\);)')
        if len(l)>0:
            break
    if p:
        p.close()

    jj_encode = find(data, "(\w+=~\[\];.*?\)\(\)\)\(\);)")
    jj_decode = None;
    jj_patron = None;
    reverse = False;
    ## 'substring' existe en la actualidad pero no se usa
    #substring = False;
    splice = False
    if jj_encode:
        jj_decode = jjdecode(jj_encode)
    if jj_decode:
        jj_patron = find(jj_decode, "/([^/]+)/")
    if not "(" in jj_patron:
        jj_patron = "(" + jj_patron
    if not ")" in jj_patron:
        jj_patron+= ")"

    jhex_decode = jhexdecode(jj_decode)
    if "reverse" in jhex_decode:
        reverse = True
    ## 'substring' existe en la actualidad pero no se usa
    #if "substring" in jhex_decode:
    #    substring = True
    if "splice" in jhex_decode:
        splice = True

    data = find(data, "<script type=.text/javascript.>(eval\(function\(p,a,c,k,e,d.*?)</script>")
    data = unPack(data).replace("\\", "")

    data = find(data, "sources\s*=[^\[]*\[([^\]]+)\]")
    matches = findall(data.replace('"', "'"), "[src|file]:'([^']+)'")

    video_urls = []
    for video_url in matches:
        _hash = find(video_url, '\w{40,}')
        if splice:
            splice = eval(findall(jj_decode, "\((\d[^,]*),\d\);")[-1])
            if reverse:
                h = list(_hash);
                h.pop(-splice-1);
                _hash = "".join(h)
            else:
                h = list(_hash);
                h.pop(splice);
                _hash = "".join(h)
        ## 'substring' existe en la actualidad pero no se usa
        #if substring:
        #    substring = int(find(jj_decode, "_\w+.\d...(\d)...;"))
        #    if reverse:
        #        _hash = _hash[:-substring]
        #    else:
        #        _hash = _hash[substring:]
        if reverse:
            video_url = sub(r'\w{40,}', _hash[::-1], video_url)
        filename = getFilename(video_url)[-4:]
        if video_url.startswith("rtmp"):
            rtmp, playpath = video_url.split("vod/", 1)
            video_url = "%s playpath=%s swfUrl=%splayer6/jwplayer.flash.swf pageUrl=%s" % (rtmp+"vod/", playpath, HOST, page_url)
            filename = "RTMP"
        elif "m3u8" in video_url:
            video_url += "|User-Agent=" + USERAGENT
        elif video_url.endswith("/v.mp4"):
            video_url_flv = sub(r'/v.mp4$','/v.flv',video_url)
            video_urls.append([".flv ["+ID+"]", sub(r'%s' % jj_patron, r'\1', video_url_flv)])

        video_urls.append([filename+" ["+ID+"]", sub(r'%s' % jj_patron, r'\1', video_url)])

    for video_url in video_urls:
        info("["+ID+"] %s - %s" % (video_url[0], video_url[1]))

    return video_urls

def find_videos(data):
    encontrados = set()
    devuelve = []

    patronvideos  = DN+"/(?:embed-|iframe-|preview-|)([a-z0-9]+)(?:-\d+[xX]\d.html|.html|)"
    info("#"+patronvideos+"#")
    matches = findall(data, patronvideos)

    for match in matches:
        url = HOST+match
        if url not in encontrados:
            info("  url="+url)
            devuelve.append(["["+ID+"]", url, ID])
            encontrados.add(url)
        else:
            info("  url duplicada="+url)

    return devuelve

def unPack(packed):

    pattern = "}\('(.*)', *(\d+), *(\d+), *'(.*)'\.split\('([^']+)'\)"
    d = [ d for d in search(pattern, packed, DOTALL).groups() ]

    p = d[0]; a = int(d[1]); c = int(d[2]); k = d[3].split(d[4])

    if a <= 62: toString = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
    else: toString = """ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"""

    def e(c):
        return toString[c] if c < a else toString[c // a] + toString[c % a]

    while c > 0:
        c-= 1
        if k[c]: x = e(c)
        else: x = k[c]
        y = k[c]
        p = sub(r"(\b%s\b)" % x, y, p)

    return p

def jjdecode(t):

    x = '0123456789abcdef'
    j = find(t, '^([^=]+)=')
    t = t.replace(j + '.', 'j.')

    t = sub(r'^.*?"\\""\+(.*?)\+"\\"".*?$', r'\1', t.replace('\\\\', '\\')) + '+""'
    t = sub('(\(!\[\]\+""\)\[j\._\$_\])', '"l"', t)
    t = sub(r'j\._\$\+', '"o"+', t)
    t = sub(r'j\.__\+', '"t"+', t)
    t = sub(r'j\._\+', '"u"+', t)

    p = findall(t, '(j\.[^\+]+\+)')
    for c in p:
        t = t.replace(c, c.replace('_', '0').replace('$', '1'))

    p = findall(t, 'j\.(\d{4})')
    for c in p:
        t = sub(r'j\.%s' % c, '"' + x[int(c, 2)] + '"', t)

    p = findall(t, '\\"\+j\.(001)\+j\.(\d{3})\+j\.(\d{3})\+')
    for c in p:
        t = sub(r'\\"\+j\.%s\+j\.%s\+j\.%s\+' % (c[0], c[1], c[2]), chr(int("".join(c), 2)) + '"+', t)

    p = findall(t, '\\"\+j\.(\d{3})\+j\.(\d{3})\+')
    for c in p:
        t = sub(r'\\"\+j\.%s\+j\.%s\+' % (c[0], c[1]), chr(int("".join(c),2)) + '"+', t)

    p = findall(t, 'j\.(\d{3})')
    for c in p:
        t = sub(r'j\.%s' % c, '"' + str(int(c, 2)) + '"', t)

    r = sub(r'"\+"|\\\\','',t[1:-1])

    return r

def jhexdecode(t):

    r = sub(r'_\d+x\w+x(\d+)', 'var_' + r'\1', t)
    r = sub(r'_\d+x\w+', 'var_0', r)

    def to_hx(c):
        h = int("%s" % c.groups(0),16)
        if 19 < h < 160:
            return chr(h)
        else:
            return ""

    r = sub(r'(?:\\|)x(\w{2})', to_hx, r).replace('var ','')

    f = eval(find(r, '\s*var_0\s*=\s*([^;]+);'))
    for i, v in enumerate(f):
        r = r.replace('[var_0[%s]]' % i, "." + f[i])
        if v == "": r = r.replace('var_0[%s]' % i, '""')

    return r
Gracias robalo lo revisaremos :)