diff --git a/plugin.video.alfa/channels/animeflv_me.py b/plugin.video.alfa/channels/animeflv_me.py index b73b174f..52ba1639 100755 --- a/plugin.video.alfa/channels/animeflv_me.py +++ b/plugin.video.alfa/channels/animeflv_me.py @@ -58,10 +58,9 @@ def get_cookie_value(): return cookies_value -header_string = "|User-Agent=Mozilla/5.0&Referer=http://animeflv.me&Cookie=" + \ +header_string = "|User-Agent=Mozilla/5.0&Referer=http://animeflv.co&Cookie=" + \ get_cookie_value() - def __find_next_page(html): """ Busca el enlace a la pagina siguiente @@ -71,12 +70,6 @@ def __find_next_page(html): def __extract_info_from_serie(html): - """ - Extrae la información de una serie o pelicula desde su página - Util para cuando una busqueda devuelve un solo resultado y animeflv.me - redirecciona a la página de este. - """ - title = scrapertools.find_single_match(html, REGEX_TITLE) title = clean_title(title) url = scrapertools.find_single_match(html, REGEX_URL) @@ -156,7 +149,7 @@ def mainlist(item): def letras(item): logger.info() - base_url = 'http://animeflv.me/ListadeAnime?c=' + base_url = 'http://animeflv.co/ListadeAnime?c=' itemlist = list() itemlist.append(Item(channel=item.channel, action="series", title="#", url=base_url + "#")) @@ -305,18 +298,20 @@ def episodios(item): def findvideos(item): logger.info() - itemlist = [] - + encontrados = [] page_html = get_url_contents(item.url) regex_api = r'http://player\.animeflv\.co/[^\"]+' iframe_url = scrapertools.find_single_match(page_html, regex_api) iframe_html = get_url_contents(iframe_url) itemlist.extend(servertools.find_video_items(data=iframe_html)) - + qualities = ["360", "480", "720", "1080"] for videoitem in itemlist: + if videoitem.url in encontrados: + continue + encontrados.append(videoitem.url) videoitem.fulltitle = item.fulltitle videoitem.title = "%s en calidad [%s]" % (videoitem.server, qualities[1]) videoitem.channel = item.channel @@ -326,10 +321,11 @@ def findvideos(item): videos_html = scrapertools.find_single_match(iframe_html, regex_video_list) videos = re.findall('"([^"]+)"', videos_html, re.DOTALL) - for quality_id, video_url in enumerate(videos): + if video_url in encontrados: + continue + encontrados.append(video_url) itemlist.append(Item(channel=item.channel, action="play", url=video_url, show=re.escape(item.show), title="Ver en calidad [%s]" % (qualities[quality_id]), plot=item.plot, fulltitle=item.title)) - return __sort_by_quality(itemlist) diff --git a/plugin.video.alfa/channels/newpct1.py b/plugin.video.alfa/channels/newpct1.py index d64b241b..ae393d51 100644 --- a/plugin.video.alfa/channels/newpct1.py +++ b/plugin.video.alfa/channels/newpct1.py @@ -98,10 +98,10 @@ def listado(item): fichas = data page_extra = item.extra - patron = '
  • ([^<]+)<') + st = scrapertools.find_single_match(scrapedtitle, '(?i)Online.*') + scrapedtitle = scrapedtitle.replace(st, "") + st = scrapertools.find_single_match(scrapedtitle, '\(.*?\)') + scrapedtitle = scrapedtitle.replace(st, "") + title = scrapedtitle + if year: + title += " (" + year + ")" + if scrapedquality: + title += " (" + scrapedquality + ")" + patronidiomas = '' + idiomas_disponibles = [] + matchidioma = scrapertools.find_single_match(scrapedlanguages, 'Castellano') + if matchidioma: + idiomas_disponibles.append("ESP") + matchidioma = scrapertools.find_single_match(scrapedlanguages, 'Subtitulado') + if matchidioma: + idiomas_disponibles.append("VOSE") + matchidioma = scrapertools.find_single_match(scrapedlanguages, 'Latino') + if matchidioma: + idiomas_disponibles.append("LAT") + idiomas_disponibles1 = "" + if idiomas_disponibles: + idiomas_disponibles1 = "[" + "/".join(idiomas_disponibles) + "]" + title += " %s" %idiomas_disponibles1 + itemlist.append(Item(channel = item.channel, + action = "findvideos", + title = title, + contentTitle = scrapedtitle, + thumbnail = scrapedthumbnail, + quality = scrapedquality, + language = idiomas_disponibles, + infoLabels={"year": year}, + url = scrapedurl + )) + tmdb.set_infoLabels(itemlist) + url_pagina = scrapertools.find_single_match(data, 'next" href="([^"]+)') + if url_pagina != "": + pagina = "Pagina: " + scrapertools.find_single_match(url_pagina, "page/([0-9]+)") + itemlist.append(Item(channel = item.channel, action = "peliculas", title = pagina, url = url_pagina)) + return itemlist + + +def filtro(item): + logger.info() + itemlist = [] + data = httptools.downloadpage(item.url).data + patron = 'class="sbi-header">%s.*?' %item.filtro + bloque = scrapertools.find_single_match(data, patron) + patron = '(?s)href="([^"]+)".*?' + patron += '([^<]+)' + matches = scrapertools.find_multiple_matches(bloque, patron) + for url, title in matches: + if "eroti33cas" in title and config.get_setting("adult_mode") == 0: + continue + itemlist.append(item.clone(action = "peliculas", + title = title.title(), + url = url + )) + return itemlist + +def peliculas(item): + logger.info() + itemlist = [] + data = httptools.downloadpage(item.url).data + patron = 'movie-list" class="clearfix.*?pagination movie-pagination clearfix' + bloque = scrapertools.find_single_match(data, patron) + patron = '(?s)href="([^"]+)".*?' + patron += 'title="([^"]+)".*?' + patron += 'class="mq([^"]+)".*?' + patron += 'src="([^"]+)".*?' + patron += '_audio(.*?)class.*?' + patron += 'label_year">([^<]+)<' + match = scrapertools.find_multiple_matches(bloque, patron) + for scrapedurl, scrapedtitle, scrapedquality, scrapedthumbnail, scrapedlanguages, year in match: + year = scrapertools.find_single_match(year, '[0-9]{4}') + st = scrapertools.find_single_match(scrapedtitle, '(?i)Online.*') + scrapedtitle = scrapedtitle.replace(st, "").strip() + st = scrapertools.find_single_match(scrapedtitle, '\(.*?\)') + scrapedtitle = scrapedtitle.replace(st, "") + title = scrapedtitle + if year: + title += " (" + year + ")" + if scrapedquality: + title += " (" + scrapedquality + ")" + patronidiomas = '' + idiomas_disponibles = [] + matchidioma = scrapertools.find_single_match(scrapedlanguages, 'Castellano') + if matchidioma: + idiomas_disponibles.append("ESP") + matchidioma = scrapertools.find_single_match(scrapedlanguages, 'Subtitulado') + if matchidioma: + idiomas_disponibles.append("VOSE") + matchidioma = scrapertools.find_single_match(scrapedlanguages, 'Latino') + if matchidioma: + idiomas_disponibles.append("LAT") + idiomas_disponibles1 = "" + if idiomas_disponibles: + idiomas_disponibles1 = "[" + "/".join(idiomas_disponibles) + "]" + title += " %s" %idiomas_disponibles1 + itemlist.append(Item(channel = item.channel, + action = "findvideos", + title = title, + contentTitle = scrapedtitle, + thumbnail = scrapedthumbnail, + quality = scrapedquality, + language = idiomas_disponibles, + infoLabels={"year": year}, + url = scrapedurl + )) + tmdb.set_infoLabels(itemlist) + url_pagina = scrapertools.find_single_match(data, 'next" href="([^"]+)') + if url_pagina != "": + pagina = "Pagina: " + scrapertools.find_single_match(url_pagina, "page/([0-9]+)") + itemlist.append(Item(channel = item.channel, action = "peliculas", title = pagina, url = url_pagina)) + return itemlist + + +def findvideos(item): + logger.info() + itemlist = [] + data = httptools.downloadpage(item.url).data + patron = 'SegundaParte.*?ventana-flotante' + bloque = scrapertools.find_single_match(data, patron) + patron = 'hand" rel="([^"]+)".*?' + patron += 'optxt">([^<]+).*?' + matches = scrapertools.find_multiple_matches(bloque, patron) + for scrapedurl, scrapedlanguage in matches: + if "youtube" in scrapedurl: + scrapedurl += "&" + title = "Ver en: %s " + "(" + scrapedlanguage + ")" + itemlist.append(item.clone(action = "play", + title = title, + language = item.language, + quality = item.quality, + url = scrapedurl + )) + tmdb.set_infoLabels(itemlist) + itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) + if itemlist: + itemlist.append(Item(channel = item.channel)) + itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", context="", + text_color="magenta")) + # Opción "Añadir esta película a la biblioteca de KODI" + if item.extra != "library": + if config.get_videolibrary_support(): + itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green", + action="add_pelicula_to_library", url=item.url, thumbnail = item.thumbnail, + fulltitle = item.contentTitle + )) + return itemlist + + +def play(item): + item.thumbnail = item.contentThumbnail + return [item] diff --git a/plugin.video.alfa/channels/wopelis.py b/plugin.video.alfa/channels/wopelis.py index 3f3f8785..99fd1111 100755 --- a/plugin.video.alfa/channels/wopelis.py +++ b/plugin.video.alfa/channels/wopelis.py @@ -255,10 +255,10 @@ def findvideos(item): dic_servers = {'ntfof': 'Servidor Desconocido', 'stramango': 'streamango', 'flasht': 'flashx'} data1 = downloadpage(item.url) - patron = 'onclick="redir\(([^\)]+).*?' + patron = '(?s)onclick="redir\(([^\)]+).*?' patron += '" in data1: list_showlinks = [('Online:', 'Online:(.*?)Descarga:'), diff --git a/plugin.video.alfa/servers/gvideo.json b/plugin.video.alfa/servers/gvideo.json index a5d78fe4..24bf7661 100644 --- a/plugin.video.alfa/servers/gvideo.json +++ b/plugin.video.alfa/servers/gvideo.json @@ -10,7 +10,7 @@ "ignore_urls": [], "patterns": [ { - "pattern": "(?s)https://youtube.googleapis.com.*?docid=([^(?:&|\")]+)", + "pattern": "(?s)https://youtube.googleapis.com.*?docid=([0-9a-zA-Z-_]+)", "url": "http://docs.google.com/get_video_info?docid=\\1" }, { @@ -18,7 +18,7 @@ "url": "http://docs.google.com/get_video_info?docid=\\1" }, { - "pattern": "(?s)\"https://(?!docs)(.*?).googleusercontent.com/([^\"]+)", + "pattern": "(?s)\"https://(lh.*?).googleusercontent.com/([^\"]+)", "url": "https://\\1.googleusercontent.com/\\2" } ] diff --git a/plugin.video.alfa/servers/powvideo.py b/plugin.video.alfa/servers/powvideo.py index 9f75449d..f21cdacf 100755 --- a/plugin.video.alfa/servers/powvideo.py +++ b/plugin.video.alfa/servers/powvideo.py @@ -58,7 +58,7 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= matches = scrapertools.find_multiple_matches(data, "[src|file]:'([^']+)'") video_urls = [] for video_url in matches: - _hash = scrapertools.find_single_match(video_url, '[A-z0-9\_\-]{40,}') + _hash = scrapertools.find_single_match(video_url, '[A-z0-9\_\-]{78,}') hash = decrypt(_hash, key) video_url = video_url.replace(_hash, hash)