diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index 12ee44df..2cb10757 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@ - + @@ -20,10 +20,16 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Canales agregados y arreglos[/B][/COLOR] » torrentrapid » torrentlocura - » mispelisyseries » descargas2020 + » mispelisyseries » descargas2020 + » mejortorrent » tvsinpagar + » cinefox » newpct + » peliculasdk » netutv + » pepecine » seriespapaya + » doomtv » dostream + » pelisgratis » estream + » plusdede ¤ arreglos internos - - ¤ Gracias a la colaboración de @pipcat y @lopezvg en ésta versión + ¤ Gracias a @pipcat,@Rhinox117,@lopezvg por colaborar en ésta versión Navega con Kodi por páginas web para ver sus videos de manera fácil. Browse web pages using Kodi diff --git a/plugin.video.alfa/channels/cinefox.json b/plugin.video.alfa/channels/cinefox.json index 17b3228f..2edcc04a 100755 --- a/plugin.video.alfa/channels/cinefox.json +++ b/plugin.video.alfa/channels/cinefox.json @@ -67,6 +67,23 @@ "enabled": true, "visible": true }, + { + "id": "comprueba_enlaces", + "type": "bool", + "label": "Verificar si los enlaces existen", + "default": false, + "enabled": true, + "visible": true + }, + { + "id": "comprueba_enlaces_num", + "type": "list", + "label": "Número de enlaces a verificar", + "default": 1, + "enabled": true, + "visible": "eq(-1,true)", + "lvalues": [ "5", "10", "15", "20" ] + }, { "id": "perfil", "type": "list", diff --git a/plugin.video.alfa/channels/cinefox.py b/plugin.video.alfa/channels/cinefox.py index 115e5d89..264afbd2 100644 --- a/plugin.video.alfa/channels/cinefox.py +++ b/plugin.video.alfa/channels/cinefox.py @@ -25,6 +25,8 @@ list_servers = ['openload', 'powvideo', 'rapidvideo', 'streamango', 'streamcloud __modo_grafico__ = config.get_setting('modo_grafico', 'cinefox') __perfil__ = int(config.get_setting('perfil', "cinefox")) __menu_info__ = config.get_setting('menu_info', 'cinefox') +__comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'cinefox') +__comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'cinefox') # Fijar perfil de color perfil = [['0xFFFFE6CC', '0xFFFFCE9C', '0xFF994D00', '0xFFFE2E2E', '0xFF088A08'], @@ -685,8 +687,23 @@ def findvideos(item): autoplay.start(itemlist, item) + if __comprueba_enlaces__: + for it in itemlist: + if it.server != '' and it.url != '': + it.url = normalizar_url(it.url, it.server) + itemlist = servertools.check_list_links(itemlist, __comprueba_enlaces_num__) + return itemlist +def normalizar_url(url, server): + # Pasar por findvideosbyserver para para obtener url a partir de los pattern/url de los json de servidores + # Excepciones copiadas de la funcion play + url = url.replace("http://miracine.tv/n/?etu=", "http://hqq.tv/player/embed_player.php?vid=") + url = url.replace("streamcloud.eu/embed-", "streamcloud.eu/") + enlaces = servertools.findvideosbyserver(url, server)[0] + if enlaces[1] != '': + return enlaces[1] + return url def get_enlaces(item, url, type): itemlist = [] diff --git a/plugin.video.alfa/channels/descargas2020.py b/plugin.video.alfa/channels/descargas2020.py index 7de30a6b..4008919a 100644 --- a/plugin.video.alfa/channels/descargas2020.py +++ b/plugin.video.alfa/channels/descargas2020.py @@ -133,7 +133,8 @@ def listado(item): for scrapedurl, scrapedtitle, scrapedthumbnail, title_alt, calidad in matches: url = scrapedurl - title = scrapedtitle + title = scrapedtitle.replace("�", "ñ").replace("ñ", "ñ").replace("Temp", " Temp").replace("Esp", " Esp").replace("Ing", " Ing").replace("Eng", " Eng").replace("Calidad", "") + title_alt = title_alt.replace("�", "ñ").replace("ñ", "ñ").replace("Temp", " Temp").replace("Esp", " Esp").replace("Ing", " Ing").replace("Eng", " Eng").replace("Calidad", "") thumbnail = scrapedthumbnail action = "findvideos" extra = "" @@ -209,10 +210,11 @@ def listado_busqueda(item): for url, thumb, title in matches: real_title = scrapertools.find_single_match(title, r'(.*?)Temporada.*?<\/strong>') #series - if real_title == "": + if not real_title: real_title = scrapertools.find_single_match(title, r'(.*?)\[.*?]') #movies real_title = scrapertools.remove_htmltags(real_title).decode('iso-8859-1').encode('utf-8') real_title = scrapertools.htmlclean(real_title) + real_title = real_title.replace("�", "ñ").replace("ñ", "ñ").replace("Temp", " Temp").replace("Esp", " Esp").replace("Ing", " Ing").replace("Eng", " Eng").replace("Calidad", "").replace("de la Serie", "") calidad = scrapertools.find_single_match(title, r'.*?\s*Calidad.*?]+>[\[]\s*(?P.*?)\s*[\]]<\/span>') #series if calidad == "": calidad = scrapertools.find_single_match(title, r'..*?(\[.*?.*\])') #movies @@ -220,9 +222,8 @@ def listado_busqueda(item): # fix encoding for title title = scrapertools.htmlclean(title) - title = title.replace("�", "ñ").replace("Temp", " Temp").replace("Esp", " Esp").replace("Ing", " Ing").replace("Eng", " Eng") title = re.sub(r'(Calidad.*?\])', '', title) - + title = title.replace("�", "ñ").replace("ñ", "ñ").replace("Temp", " Temp").replace("Esp", " Esp").replace("Ing", " Ing").replace("Eng", " Eng").replace("Calidad", "").replace("de la Serie", "") if real_title == "": real_title = title if calidad == "": @@ -236,18 +237,22 @@ def listado_busqueda(item): # Codigo para rescatar lo que se puede en pelisy.series.com de Series para la Videoteca. la URL apunta al capítulo y no a la Serie. Nombre de Serie frecuentemente en blanco. Se obtiene de Thumb, así como el id de la serie if ("/serie" in url or "-serie" in url) and "pelisyseries.com" in host: - calidad_mps = "series/" if "seriehd" in url: calidad_mps = "series-hd/" - if "serievo" in url: + elif "serievo" in url: calidad_mps = "series-vo/" - if "serie-vo" in url: + elif "serie-vo" in url: calidad_mps = "series-vo/" + else: + calidad_mps = "series/" - real_title_mps = re.sub(r'.*?\/\d+_', '', thumb) - real_title_mps = re.sub(r'\.\w+.*?', '', real_title_mps) + if "no_image" in thumb: + real_title_mps = title + else: + real_title_mps = re.sub(r'.*?\/\d+_', '', thumb) + real_title_mps = re.sub(r'\.\w+.*?', '', real_title_mps) - if "/0_" not in thumb: + if "/0_" not in thumb and not "no_image" in thumb: serieid = scrapertools.find_single_match(thumb, r'.*?\/\w\/(?P\d+).*?.*') if len(serieid) > 5: serieid = "" @@ -507,6 +512,11 @@ def episodios(item): "[\[]\s*(?P.*?)?\s*[\]]<\/span>" if "Especial" in info: # Capitulos Especiales pattern = ".*?[^>]+>.*?Temporada.*?\[.*?(?P\d+).*?\].*?Capitulo.*?\[\s*(?P\d+).*?\]?(?:.*?(?P\d+)?)<.+?]+>(?P.*?)?<\/span>\s*Calidad\s*]+>[\[]\s*(?P.*?)?\s*[\]]<\/span>" + + if not scrapertools.find_single_match(info, pattern): #en caso de error de formato, creo uno básico + logger.debug("patron episodioNEW: " + pattern) + logger.debug(info) + info = '>%sTemporada %s Capitulo 0 - Español Castellano Calidad [%s]' % (item.contentTitle, season, item.infoLabels['quality']) r = re.compile(pattern) match = [m.groupdict() for m in r.finditer(info)][0] @@ -540,11 +550,11 @@ def episodios(item): "(?P\d{2}))?.*?\].*?(?:\[(?P.*?)\])?" elif scrapertools.find_single_match(info, 'Cap.\d{2,3}'): pattern = ".*?Temp.*?\s(?P.*?)\s.*?Cap.(?P\d).*?(?P\d{2})(?:_(?P\d+)(?P\d{2}))?.*?\s(?P.*)?" - else: - logger.debug("patron episodio: " + pattern) + + if not scrapertools.find_single_match(info, pattern): #en caso de error de formato, creo uno básico + logger.debug("patron episodioOLD: " + pattern) logger.debug(info) - continue - + info = '%s [%s][Cap.%s00][Español]' % (item.contentTitle, item.infoLabels['quality'], season) r = re.compile(pattern) match = [m.groupdict() for m in r.finditer(info)][0] diff --git a/plugin.video.alfa/channels/doomtv.py b/plugin.video.alfa/channels/doomtv.py index c262503a..c57cd547 100644 --- a/plugin.video.alfa/channels/doomtv.py +++ b/plugin.video.alfa/channels/doomtv.py @@ -23,36 +23,6 @@ list_quality = CALIDADES.values() list_servers = ['directo', 'openload'] host = 'http://doomtv.net/' -headers = { - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 Chrome/58.0.3029.110', - 'Referer': host} - -tgenero = {"Comedia": "https://s7.postimg.org/ne9g9zgwb/comedia.png", - "Suspenso": "https://s13.postimg.org/wmw6vl1cn/suspenso.png", - "Drama": "https://s16.postimg.org/94sia332d/drama.png", - "Acción": "https://s3.postimg.org/y6o9puflv/accion.png", - "Aventura": "https://s10.postimg.org/6su40czih/aventura.png", - "Romance": "https://s15.postimg.org/fb5j8cl63/romance.png", - "Animación": "https://s13.postimg.org/5on877l87/animacion.png", - "Ciencia ficción": "https://s9.postimg.org/diu70s7j3/cienciaficcion.png", - "Terror": "https://s7.postimg.org/yi0gij3gb/terror.png", - "Documental": "https://s16.postimg.org/7xjj4bmol/documental.png", - "Música": "https://s29.postimg.org/bbxmdh9c7/musical.png", - "Fantasía": "https://s13.postimg.org/65ylohgvb/fantasia.png", - "Bélico Guerra": "https://s23.postimg.org/71itp9hcr/belica.png", - "Misterio": "https://s1.postimg.org/w7fdgf2vj/misterio.png", - "Crimen": "https://s4.postimg.org/6z27zhirx/crimen.png", - "Biográfia": "https://s15.postimg.org/5lrpbx323/biografia.png", - "Familia": "https://s7.postimg.org/6s7vdhqrf/familiar.png", - "Familiar": "https://s7.postimg.org/6s7vdhqrf/familiar.png", - "Intriga": "https://s27.postimg.org/v9og43u2b/intriga.png", - "Thriller": "https://s22.postimg.org/5y9g0jsu9/thriller.png", - "Guerra": "https://s4.postimg.org/n1h2jp2jh/guerra.png", - "Estrenos": "https://s21.postimg.org/fy69wzm93/estrenos.png", - "Peleas": "https://s14.postimg.org/we1oyg05t/peleas.png", - "Policiales": "https://s21.postimg.org/n9e0ci31z/policial.png", - "Uncategorized": "https://s30.postimg.org/uj5tslenl/otros.png", - "LGBT": "https://s30.postimg.org/uj5tslenl/otros.png"} def mainlist(item): @@ -177,15 +147,13 @@ def seccion(item): url = scrapedurl title = scrapedtitle thumbnail = '' - if title in tgenero: - thumbnail = tgenero[title] if url not in duplicado: itemlist.append( Item(channel=item.channel, action='lista', title=title, url=url, - thumbnail = thumbnail + thumbnail=thumbnail )) return itemlist @@ -221,64 +189,25 @@ def newest(categoria): return itemlist -def get_vip(item, url): - logger.info() - itemlist = [] - data = httptools.downloadpage(url+'/videocontent').data - data = re.sub(r'"|\n|\r|\t| |
|\s{2,}', "", data) - video_id = scrapertools.find_single_match(data, 'id=videoInfo >(.*?)') - new_url = 'https://v.d0stream.com/api/videoinfo/%s?src-url=https://Fv.d0stream.com' % video_id - json_data = httptools.downloadpage(new_url).data - dict_data = jsontools.load(json_data) - sources = dict_data['sources'] - - for vip_item in sources['mp4_cdn']: - vip_url= vip_item['url'] - vip_quality = vip_item['label'] - title ='%s [%s]' % (item.title, vip_quality) - itemlist.append(item.clone(title = title, url=vip_url, action='play', quality=vip_quality, server='directo')) - - return itemlist - def findvideos(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url).data data = re.sub(r'"|\n|\r|\t| |
|\s{2,}', "", data) - player_vip = scrapertools.find_single_match(data, 'class=movieplay>