From 580a821d0e7ed34e59cff4acb68ca5604f38e8bf Mon Sep 17 00:00:00 2001 From: alfa-addon Date: Thu, 3 Aug 2017 16:17:00 -0400 Subject: [PATCH] minor fix --- plugin.video.alfa/channels/cinetux.py | 17 ++-- plugin.video.alfa/channels/playmax.py | 119 ++++++++++++++++++++------ plugin.video.alfa/core/servertools.py | 2 +- 3 files changed, 104 insertions(+), 34 deletions(-) mode change 100755 => 100644 plugin.video.alfa/channels/cinetux.py mode change 100755 => 100644 plugin.video.alfa/channels/playmax.py mode change 100755 => 100644 plugin.video.alfa/core/servertools.py diff --git a/plugin.video.alfa/channels/cinetux.py b/plugin.video.alfa/channels/cinetux.py old mode 100755 new mode 100644 index c0d0b3c3..afe793c5 --- a/plugin.video.alfa/channels/cinetux.py +++ b/plugin.video.alfa/channels/cinetux.py @@ -211,7 +211,7 @@ def generos(item): data = httptools.downloadpage(item.url).data bloque = scrapertools.find_single_match(data, '(?s)dos_columnas">(.*?)') # Extrae las entradas - patron = '
  • (.*?)
  • ' + patron = '
  • (.*?)
  • ' matches = scrapertools.find_multiple_matches(bloque, patron) for scrapedurl, scrapedtitle in matches: scrapedurl = CHANNEL_HOST + scrapedurl @@ -312,11 +312,13 @@ def bloque_enlaces(data, filtro_idioma, dict_idiomas, type, item): if "lazy" in bloque1: lazy = "lazy-" patron = '(?s)id="%s".*?metaframe.*?%ssrc="([^"]+)' %(scrapedoption, lazy) - #logger.info("Intel22 %s" %patron) url = scrapertools.find_single_match(bloque1, patron) if "goo.gl" in url: url = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers.get("location","") - server = servertools.get_server_from_url(url) + if "www.cinetux.me" in url: + server = scrapertools.find_single_match(url, "player/(.*?)\.") + else: + server = servertools.get_server_from_url(url) matches.append([url, server, "", language.strip(), t_tipo]) bloque2 = scrapertools.find_single_match(data, '(?s)box_links.*?dt_social_single') bloque2 = bloque2.replace("\t","").replace("\r","") @@ -367,12 +369,17 @@ def play(item): id = scrapertools.find_single_match(data, 'img src="[^#]+#(.*?)"') item.url = "https://youtube.googleapis.com/embed/?status=ok&hl=es&allow_embed=1&ps=docs&partnerid=30&hd=1&autoplay=0&cc_load_policy=1&showinfo=0&docid=" + id itemlist = servertools.find_video_items(data = item.url) - elif "links" in item.url: + elif "links" in item.url or "www.cinetux.me" in item.url: data = httptools.downloadpage(item.url).data scrapedurl = scrapertools.find_single_match(data, '
    (?:
    ([^<]+)
    |)([^<]+)' matches = scrapertools.find_multiple_matches(data, patron) + for scrapedurl, scrapedthumbnail, marca, serie, episodio, scrapedtitle in matches: tipo = "movie" scrapedurl = host + scrapedurl.rsplit("-dc=")[0] @@ -472,7 +474,7 @@ def findvideos(item): url = "https://playmax.mx/c_enlaces_n.php?apikey=%s&sid=%s&ficha=%s&cid=%s" % (apikey, sid, ficha, cid) data = httptools.downloadpage(url).data - data = json.Xml2Json(data).result + data = xml2dict(data) for k, v in data["Data"].items(): try: @@ -490,31 +492,34 @@ def findvideos(item): elif type(v["Item"]) is dict: v["Item"] = [v["Item"]] for it in v["Item"]: - thumbnail = "%s/styles/prosilver/imageset/%s.png" % (host, it['Host']) - title = " %s - %s/%s" % (it['Host'].capitalize(), it['Quality'], it['Lang']) - calidad = int(scrapertools.find_single_match(it['Quality'], '(\d+)p')) - calidadaudio = it['QualityA'].replace("...", "") - subtitulos = it['Subtitles'].replace("Sin subtítulos", "") - if subtitulos: - title += " (%s)" % subtitulos - if calidadaudio: - title += " [Audio:%s]" % calidadaudio + try: + thumbnail = "%s/styles/prosilver/imageset/%s.png" % (host, it['Host']) + title = " %s - %s/%s" % (it['Host'].capitalize(), it['Quality'], it['Lang']) + calidad = int(scrapertools.find_single_match(it['Quality'], '(\d+)p')) + calidadaudio = it['QualityA'].replace("...", "") + subtitulos = it['Subtitles'].replace("Sin subtítulos", "") + if subtitulos: + title += " (%s)" % subtitulos + if calidadaudio: + title += " [Audio:%s]" % calidadaudio - likes = 0 - if it["Likes"] != "0" or it["Dislikes"] != "0": - likes = int(it["Likes"]) - int(it["Dislikes"]) - title += " (%s ok, %s ko)" % (it["Likes"], it["Dislikes"]) - if type(it["Url"]) is dict: - for i, enlace in enumerate(it["Url"]["Item"]): - titulo = title + " (Parte %s)" % (i + 1) - itemlist.append(item.clone(title=titulo, url=enlace, action="play", calidad=calidad, + likes = 0 + if it["Likes"] != "0" or it["Dislikes"] != "0": + likes = int(it["Likes"]) - int(it["Dislikes"]) + title += " (%s ok, %s ko)" % (it["Likes"], it["Dislikes"]) + if type(it["Url"]) is dict: + for i, enlace in enumerate(it["Url"]["Item"]): + titulo = title + " (Parte %s)" % (i + 1) + itemlist.append(item.clone(title=titulo, url=enlace, action="play", calidad=calidad, + thumbnail=thumbnail, order=order, like=likes, ficha=ficha, + cid=cid, folder=False)) + else: + url = it["Url"] + itemlist.append(item.clone(title=title, url=url, action="play", calidad=calidad, thumbnail=thumbnail, order=order, like=likes, ficha=ficha, cid=cid, folder=False)) - else: - url = it["Url"] - itemlist.append(item.clone(title=title, url=url, action="play", calidad=calidad, - thumbnail=thumbnail, order=order, like=likes, ficha=ficha, - cid=cid, folder=False)) + except: + pass except: pass @@ -632,7 +637,7 @@ def acciones_fichas(item, sid, ficha, season=False): estados = [{'following': 'seguir'}, {'favorite': 'favorita'}, {'view': 'vista'}, {'slope': 'pendiente'}] url = "https://playmax.mx/ficha.php?apikey=%s&sid=%s&f=%s" % (apikey, sid, ficha) data = httptools.downloadpage(url).data - data = json.Xml2Json(data).result + data = xml2dict(data) try: marked = data["Data"]["User"]["Marked"] @@ -716,7 +721,7 @@ def acciones_cuenta(item): return itemlist elif "Añadir a una lista" in item.title: data = httptools.downloadpage(host + "/c_listas.php?apikey=%s&sid=%s" % (apikey, sid)).data - data = json.Xml2Json(data).result + data = xml2dict(data) itemlist.append(item.clone(title="Crear nueva lista", folder=False)) if data["Data"]["TusListas"] != "\t": import random @@ -845,7 +850,7 @@ def listas(item): itemlist = [] data = httptools.downloadpage(item.url).data - data = json.Xml2Json(data).result + data = xml2dict(data) if item.extra == "listas": itemlist.append(Item(channel=item.channel, title="Listas más seguidas", action="listas", text_color=color1, url=item.url + "&orden=1", extra="listas_plus")) @@ -921,3 +926,61 @@ def select_page(item): item.url = re.sub(r'start=(\d+)', "start=%s" % number, item.url) return fichas(item) + + +def xml2dict(xmldata): + """ + Lee un fichero o texto XML y retorna un diccionario json + + Parametros: + file (str) -- Ruta completa al archivo XML que se desea convertir en JSON. + xmldata (str) -- Texto XML que se desea convertir en JSON. + + Retorna: + Un diccionario construido a partir de los campos del XML. + + """ + from core import filetools + import sys + parse = globals().get(sys._getframe().f_code.co_name) + + # if xmldata is None and file is None: + # raise Exception("No hay nada que convertir!") + # elif xmldata is None: + # if not filetools.exists(file): + # raise Exception("El archivo no existe!") + # xmldata = open(file, "rb").read() + + matches = re.compile("<(?P[^>]+)>[\n]*[\s]*[\t]*(?P.*?)[\n]*[\s]*[\t]*<\/(?P=tag)\s*>", + re.DOTALL).findall(xmldata) + + return_dict = {} + for tag, value in matches: + # Si tiene elementos + if "<" and "