diff --git a/plugin.video.alfa/channels/allcalidad.json b/plugin.video.alfa/channels/allcalidad.json index 0caed17c..fb51190c 100755 --- a/plugin.video.alfa/channels/allcalidad.json +++ b/plugin.video.alfa/channels/allcalidad.json @@ -4,7 +4,7 @@ "active": true, "adult": false, "language": ["lat"], - "thumbnail": "https://s22.postimg.org/irnlwuizh/allcalidad1.png", + "thumbnail": "https://s22.postimg.cc/9wmrmbu75/allcalidad1.png", "banner": "https://s22.postimg.org/9y1athlep/allcalidad2.png", "categories": [ "movie", diff --git a/plugin.video.alfa/channels/kbagi.py b/plugin.video.alfa/channels/kbagi.py index d3fedc41..a43fb282 100644 --- a/plugin.video.alfa/channels/kbagi.py +++ b/plugin.video.alfa/channels/kbagi.py @@ -2,12 +2,17 @@ import re import threading +import urllib +import xbmc +from core import downloadtools from core import filetools from core import httptools +from core import jsontools from core import scrapertools from core.item import Item from platformcode import config, logger +from platformcode import platformtools __perfil__ = config.get_setting('perfil', "kbagi") @@ -26,23 +31,15 @@ adult_content = config.get_setting("adult_content", "kbagi") def login(pagina): logger.info() - try: - user = config.get_setting("%suser" % pagina.split(".")[0], "kbagi") - password = config.get_setting("%spassword" % pagina.split(".")[0], "kbagi") - if pagina == "kbagi.com": - if user == "" and password == "": - return False, "Para ver los enlaces de kbagi es necesario registrarse en kbagi.com" - elif user == "" or password == "": - return False, "kbagi: Usuario o contraseña en blanco. Revisa tus credenciales" - else: - if user == "" or password == "": - return False, "DiskoKosmiko: Usuario o contraseña en blanco. Revisa tus credenciales" - + dom = pagina.split(".")[0] + user = config.get_setting("%suser" %dom, "kbagi") + password = config.get_setting("%spassword" %dom, "kbagi") + if not user: + return False, "Para ver los enlaces de %s es necesario registrarse en %s" %(dom, pagina) data = httptools.downloadpage("http://%s" % pagina).data if re.search(r'(?i)%s' % user, data): return True, "" - token = scrapertools.find_single_match(data, 'name="__RequestVerificationToken".*?value="([^"]+)"') post = "__RequestVerificationToken=%s&UserName=%s&Password=%s" % (token, user, password) headers = {'X-Requested-With': 'XMLHttpRequest'} @@ -64,9 +61,7 @@ def mainlist(item): logger.info() itemlist = [] item.text_color = color1 - logueado, error_message = login("kbagi.com") - if not logueado: itemlist.append(item.clone(title=error_message, action="configuracion", folder=False)) else: @@ -79,24 +74,25 @@ def mainlist(item): itemlist.append(item.clone(title=" Búsqueda personalizada", action="filtro", url="http://kbagi.com/action/SearchFiles")) itemlist.append(item.clone(title=" Mi cuenta", action="cuenta")) - - item.extra = "http://diskokosmiko.mx/" - itemlist.append(item.clone(title="DiskoKosmiko", action="", text_color=color2)) - itemlist.append(item.clone(title=" Búsqueda", action="search", url="http://diskokosmiko.mx/action/SearchFiles")) - itemlist.append(item.clone(title=" Colecciones", action="colecciones", - url="http://diskokosmiko.mx/action/home/MoreNewestCollections?pageNumber=1")) - itemlist.append(item.clone(title=" Búsqueda personalizada", action="filtro", - url="http://diskokosmiko.mx/action/SearchFiles")) - itemlist.append(item.clone(title=" Mi cuenta", action="cuenta")) - itemlist.append(item.clone(action="", title="")) - + logueado, error_message = login("diskokosmiko.mx") + if not logueado: + itemlist.append(item.clone(title=error_message, action="configuracion", folder=False)) + else: + item.extra = "http://diskokosmiko.mx/" + itemlist.append(item.clone(title="DiskoKosmiko", action="", text_color=color2)) + itemlist.append(item.clone(title=" Búsqueda", action="search", url="http://diskokosmiko.mx/action/SearchFiles")) + itemlist.append(item.clone(title=" Colecciones", action="colecciones", + url="http://diskokosmiko.mx/action/home/MoreNewestCollections?pageNumber=1")) + itemlist.append(item.clone(title=" Búsqueda personalizada", action="filtro", + url="http://diskokosmiko.mx/action/SearchFiles")) + itemlist.append(item.clone(title=" Mi cuenta", action="cuenta")) + itemlist.append(item.clone(action="", title="")) folder_thumb = filetools.join(config.get_data_path(), 'thumbs_kbagi') files = filetools.listdir(folder_thumb) if files: itemlist.append( item.clone(title="Eliminar caché de imágenes (%s)" % len(files), action="delete_cache", text_color="red")) itemlist.append(item.clone(title="Configuración del canal", action="configuracion", text_color="gold")) - return itemlist @@ -115,7 +111,6 @@ def search(item, texto): def configuracion(item): - from platformcode import platformtools ret = platformtools.show_channel_settings() platformtools.itemlist_refresh() return ret @@ -124,12 +119,10 @@ def configuracion(item): def listado(item): logger.info() itemlist = [] - data_thumb = httptools.downloadpage(item.url, item.post.replace("Mode=List", "Mode=Gallery")).data if not item.post: data_thumb = "" item.url = item.url.replace("/gallery,", "/list,") - data = httptools.downloadpage(item.url, item.post).data data = re.sub(r"\n|\r|\t|\s{2}| |
", "", data) @@ -153,12 +146,10 @@ def listado(item): scrapedthumbnail = filetools.join(folder, "%s.jpg" % url_thumb.split("e=", 1)[1][-20:]) except: scrapedthumbnail = "" - if scrapedthumbnail: t = threading.Thread(target=download_thumb, args=[scrapedthumbnail, url_thumb]) t.setDaemon(True) t.start() - else: scrapedthumbnail = item.extra + "/img/file_types/gallery/movie.png" scrapedurl = item.extra + scrapedurl @@ -168,7 +159,6 @@ def listado(item): plot = scrapertools.find_single_match(block, '
(.*?)
') if plot: plot = scrapertools.decodeHtmlentities(plot) - new_item = Item(channel=item.channel, action="findvideos", title=title, url=scrapedurl, thumbnail=scrapedthumbnail, contentTitle=scrapedtitle, text_color=color2, extra=item.extra, infoLabels={'plot': plot}, post=item.post) @@ -182,7 +172,6 @@ def listado(item): new_item.folderurl = item.url.rsplit("/", 1)[0] new_item.foldername = item.foldername new_item.fanart = item.thumbnail - itemlist.append(new_item) next_page = scrapertools.find_single_match(data, 'class="pageSplitter.*?" data-nextpage-number="([^"]+)"') if next_page: @@ -194,27 +183,23 @@ def listado(item): post = "" itemlist.append(Item(channel=item.channel, action="listado", title=">> Página Siguiente (%s)" % next_page, url=url, post=post, extra=item.extra)) - return itemlist def findvideos(item): logger.info() itemlist = [] - itemlist.append(item.clone(action="play", title="Reproducir/Descargar", server="kbagi")) usuario = scrapertools.find_single_match(item.url, '%s/([^/]+)/' % item.extra) url_usuario = item.extra + "/" + usuario - if item.folderurl and not item.folderurl.startswith(item.extra): item.folderurl = item.extra + item.folderurl if item.post: itemlist.append(item.clone(action="listado", title="Ver colección: %s" % item.foldername, url=item.folderurl + "/gallery,1,1?ref=pager", post="")) - data = httptools.downloadpage(item.folderurl).data token = scrapertools.find_single_match(data, - 'data-action="followChanged.*?name="__RequestVerificationToken".*?value="([^"]+)"') + 'data-action="followChanged.*?name="__RequestVerificationToken".*?value="([^"]+)"') collection_id = item.folderurl.rsplit("-", 1)[1] post = "__RequestVerificationToken=%s&collectionId=%s" % (token, collection_id) url = "%s/action/Follow/Follow" % item.extra @@ -223,18 +208,14 @@ def findvideos(item): title = "Dejar de seguir la colección: %s" % item.foldername url = "%s/action/Follow/UnFollow" % item.extra itemlist.append(item.clone(action="seguir", title=title, url=url, post=post, text_color=color5, folder=False)) - itemlist.append( item.clone(action="colecciones", title="Ver colecciones del usuario: %s" % usuario, url=url_usuario)) - return itemlist def colecciones(item): logger.info() - from core import jsontools itemlist = [] - usuario = False data = httptools.downloadpage(item.url).data if "Ver colecciones del usuario" not in item.title and not item.index: @@ -250,10 +231,8 @@ def colecciones(item): content = scrapertools.find_single_match(data, '
", "", content) - patron = '([^<]+)<.*?src="([^"]+)".*?

(.*?)

' matches = scrapertools.find_multiple_matches(content, patron) - index = "" if item.index and item.index != "0": matches = matches[item.index:item.index + 20] @@ -262,7 +241,6 @@ def colecciones(item): elif len(matches) > 20: matches = matches[:20] index = 20 - folder = filetools.join(config.get_data_path(), 'thumbs_kbagi') for url, scrapedtitle, thumb, info in matches: url = item.extra + url + "/gallery,1,1?ref=pager" @@ -285,13 +263,11 @@ def colecciones(item): itemlist.append(Item(channel=item.channel, action="listado", title=title, url=url, thumbnail=scrapedthumbnail, text_color=color2, extra=item.extra, foldername=scrapedtitle)) - if not usuario and data.get("NextPageUrl"): url = item.extra + data["NextPageUrl"] itemlist.append(item.clone(title=">> Página Siguiente", url=url, text_color="")) elif index: itemlist.append(item.clone(title=">> Página Siguiente", url=item.url, index=index, text_color="")) - return itemlist @@ -302,15 +278,12 @@ def seguir(item): if "Dejar" in item.title: message = "La colección ya no se sigue" if data.sucess and config.get_platform() != "plex": - from platformcode import platformtools platformtools.dialog_notification("Acción correcta", message) def cuenta(item): logger.info() - import urllib itemlist = [] - web = "kbagi" if "diskokosmiko" in item.extra: web = "diskokosmiko" @@ -318,7 +291,6 @@ def cuenta(item): if not logueado: itemlist.append(item.clone(title=error_message, action="configuracion", folder=False)) return itemlist - user = config.get_setting("%suser" % web, "kbagi") user = unicode(user, "utf8").lower().encode("utf8") url = item.extra + "/" + urllib.quote(user) @@ -336,16 +308,13 @@ def cuenta(item): text_color=color5, follow=True)) else: itemlist.append(item.clone(action="", title="No sigues ninguna colección", text_color=color4)) - return itemlist def filtro(item): logger.info() - list_controls = [] valores = {} - dict_values = None list_controls.append({'id': 'search', 'label': 'Texto a buscar', 'enabled': True, 'color': '0xFFC52020', 'type': 'text', 'default': '', 'visible': True}) @@ -353,14 +322,12 @@ def filtro(item): 'type': 'list', 'default': -1, 'visible': True}) list_controls[1]['lvalues'] = ['Aplicación', 'Archivo', 'Documento', 'Imagen', 'Música', 'Vídeo', 'Todos'] valores['tipo'] = ['Application', 'Archive', 'Document', 'Image', 'Music', 'Video', ''] - list_controls.append({'id': 'ext', 'label': 'Extensión', 'enabled': True, 'color': '0xFFF4FA58', 'type': 'text', 'default': '', 'visible': True}) list_controls.append({'id': 'tmin', 'label': 'Tamaño mínimo (MB)', 'enabled': True, 'color': '0xFFCC2EFA', 'type': 'text', 'default': '0', 'visible': True}) list_controls.append({'id': 'tmax', 'label': 'Tamaño máximo (MB)', 'enabled': True, 'color': '0xFF2ECCFA', 'type': 'text', 'default': '0', 'visible': True}) - # Se utilizan los valores por defecto/guardados web = "kbagi" if "diskokosmiko" in item.extra: @@ -369,7 +336,6 @@ def filtro(item): if valores_guardados: dict_values = valores_guardados item.valores = valores - from platformcode import platformtools return platformtools.show_channel_settings(list_controls=list_controls, dict_values=dict_values, caption="Filtra la búsqueda", item=item, callback='filtrado') @@ -381,18 +347,15 @@ def filtrado(item, values): web = "diskokosmiko" # Guarda el filtro para que sea el que se cargue por defecto config.set_setting("filtro_defecto_" + web, values_copy, item.channel) - tipo = item.valores["tipo"][values["tipo"]] search = values["search"] ext = values["ext"] tmin = values["tmin"] tmax = values["tmax"] - if not tmin.isdigit(): tmin = "0" if not tmax.isdigit(): tmax = "0" - item.valores = "" item.post = "Mode=List&Type=%s&Phrase=%s&SizeFrom=%s&SizeTo=%s&Extension=%s&ref=pager&pageNumber=1" \ % (tipo, search, tmin, tmax, ext) @@ -401,18 +364,14 @@ def filtrado(item, values): def download_thumb(filename, url): - from core import downloadtools - lock = threading.Lock() lock.acquire() folder = filetools.join(config.get_data_path(), 'thumbs_kbagi') if not filetools.exists(folder): filetools.mkdir(folder) lock.release() - if not filetools.exists(filename): downloadtools.downloadfile(url, filename, silent=True) - return filename @@ -420,5 +379,4 @@ def delete_cache(url): folder = filetools.join(config.get_data_path(), 'thumbs_kbagi') filetools.rmdirtree(folder) if config.is_xbmc(): - import xbmc xbmc.executebuiltin("Container.Refresh") diff --git a/plugin.video.alfa/channels/plusdede.py b/plugin.video.alfa/channels/plusdede.py index 729b16a3..b345e7b0 100644 --- a/plugin.video.alfa/channels/plusdede.py +++ b/plugin.video.alfa/channels/plusdede.py @@ -29,8 +29,7 @@ def login(): data = httptools.downloadpage(url_origen).data except: data = httptools.downloadpage(url_origen, follow_redirects=False).data - - if re.search(r'(?i)%s' % config.get_setting("plusdedeuser", "plusdede"), data): + if '' in data: return True token = scrapertools.find_single_match(data, '
Siguiente<\/a>') + next_page = scrapertools.find_single_match(data, '') if next_page != '': itemlist.append(Item(channel=item.channel, action="lista", title='Siguiente >>>', url=next_page, thumbnail='https://s16.postimg.org/9okdu7hhx/siguiente.png')) @@ -222,7 +222,7 @@ def findvideos(item): for video_url in matches: logger.debug('video_url: %s' % video_url) - if 'stream' in video_url: + if 'stream' in video_url and 'streamango' not in video_url: data = httptools.downloadpage('https:'+video_url).data logger.debug(data) if not 'iframe' in video_url: diff --git a/plugin.video.alfa/platformcode/launcher.py b/plugin.video.alfa/platformcode/launcher.py index 49652dae..9c86a2b5 100644 --- a/plugin.video.alfa/platformcode/launcher.py +++ b/plugin.video.alfa/platformcode/launcher.py @@ -24,7 +24,7 @@ def start(): funciones que deseamos que se ejecuten nada mas abrir el plugin. """ logger.info() - config.set_setting('show_once', True) + #config.set_setting('show_once', True) # Test if all the required directories are created config.verify_directories_created() @@ -51,10 +51,10 @@ def run(item=None): item.start = True; else: item = Item(channel="channelselector", action="getmainlist", viewmode="movie") - if config.get_setting('show_once'): + if not config.get_setting('show_once'): platformtools.dialog_ok('Alfa', 'Alfa recomienda para mejorar tu experiencia:', 'Palomitas, relajate y disfruta.') - config.set_setting('show_once', False) + config.set_setting('show_once', True) logger.info(item.tostring()) diff --git a/plugin.video.alfa/servers/flashx.py b/plugin.video.alfa/servers/flashx.py index e657ab05..800d2ad1 100644 --- a/plugin.video.alfa/servers/flashx.py +++ b/plugin.video.alfa/servers/flashx.py @@ -21,11 +21,11 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= pfxfx = "" data = httptools.downloadpage(page_url, cookies=False).data data = data.replace("\n","") - cgi_counter = scrapertools.find_single_match(data, """(?is)src=.(https://www.flashx.bz/counter.cgi.*?[^(?:'|")]+)""") + cgi_counter = scrapertools.find_single_match(data, """(?is)src=.(https://www.flashx.cc/counter.cgi.*?[^(?:'|")]+)""") cgi_counter = cgi_counter.replace("%0A","").replace("%22","") - playnow = scrapertools.find_single_match(data, 'https://www.flashx.bz/dl[^"]+') + playnow = scrapertools.find_single_match(data, 'https://www.flashx.cc/dl[^"]+') # Para obtener el f y el fxfx - js_fxfx = "https://www." + scrapertools.find_single_match(data.replace("//","/"), """(?is)(flashx.bz/js\w+/c\w+.*?[^(?:'|")]+)""") + js_fxfx = "https://www." + scrapertools.find_single_match(data.replace("//","/"), """(?is)(flashx.cc/js\w+/c\w+.*?[^(?:'|")]+)""") data_fxfx = httptools.downloadpage(js_fxfx).data mfxfx = scrapertools.find_single_match(data_fxfx, 'get.*?({.*?})').replace("'","").replace(" ","") matches = scrapertools.find_multiple_matches(mfxfx, '(\w+):(\w+)') @@ -35,7 +35,7 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= logger.info("mfxfxfx2= %s" %pfxfx) if pfxfx == "": pfxfx = "ss=yes&f=fail&fxfx=6" - coding_url = 'https://www.flashx.bz/flashx.php?%s' %pfxfx + coding_url = 'https://www.flashx.cc/flashx.php?%s' %pfxfx # {f: 'y', fxfx: '6'} bloque = scrapertools.find_single_match(data, '(?s)Form method="POST" action(.*?)span') flashx_id = scrapertools.find_single_match(bloque, 'name="id" value="([^"]+)"')