From bb4baa1509987bd5f543d23898f3180df7c4b2a5 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:04:04 -0500 Subject: [PATCH 01/19] Update seriesblanco.py --- plugin.video.alfa/channels/seriesblanco.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/seriesblanco.py b/plugin.video.alfa/channels/seriesblanco.py index e4ba57cc..fc770bf6 100644 --- a/plugin.video.alfa/channels/seriesblanco.py +++ b/plugin.video.alfa/channels/seriesblanco.py @@ -10,16 +10,21 @@ from core import scrapertoolsV2 from core import servertools from core.item import Item from platformcode import config, logger +from channels import autoplay HOST = "http://seriesblanco.com/" IDIOMAS = {'es': 'Español', 'en': 'Inglés', 'la': 'Latino', 'vo': 'VO', 'vos': 'VOS', 'vosi': 'VOSI', 'otro': 'OVOS'} list_idiomas = IDIOMAS.values() CALIDADES = ['SD', 'HDiTunes', 'Micro-HD-720p', 'Micro-HD-1080p', '1080p', '720p'] +list_servers =['youwatch','powvideo', 'openload', 'streamplay', 'streaminto', 'flashx', 'gamovideo', 'nowvideo', + 'rockfile'] def mainlist(item): logger.info() + autoplay.init(item.channel, list_servers, CALIDADES) + thumb_series = get_thumb("channels_tvshow.png") thumb_series_az = get_thumb("channels_tvshow_az.png") thumb_buscar = get_thumb("search.png") @@ -44,6 +49,7 @@ def mainlist(item): thumbnail=thumb_buscar)) itemlist = filtertools.show_option(itemlist, item.channel, list_idiomas, CALIDADES) + autoplay.show_option(item.channel, itemlist) return itemlist @@ -199,7 +205,8 @@ def episodios(item): display_title = "%s - %s %s" % (item.show, title, idiomas) # logger.debug("Episode found %s: %s" % (display_title, urlparse.urljoin(HOST, url))) itemlist.append(item.clone(title=display_title, url=urlparse.urljoin(HOST, url), - action="findvideos", plot=plot, fanart=fanart, language=filter_lang)) + action="findvideos", plot=plot, fanart=fanart, language=filter_lang, + context = autoplay.context)) itemlist = filtertools.get_links(itemlist, item, list_idiomas, CALIDADES) @@ -248,7 +255,7 @@ def parse_videos(item, type_str, data): itemlist.append( item.clone(title=title, fulltitle=item.title, url=urlparse.urljoin(HOST, v_fields.get("link")), action="play", language=IDIOMAS.get(v_fields.get("language"), "OVOS"), - quality=quality)) + quality=quality, server= v_fields.get("server"))) if len(itemlist) > 0: return itemlist @@ -284,6 +291,14 @@ def findvideos(item): list_links = filtertools.get_links(list_links, item, list_idiomas, CALIDADES) + # Requerido para FilterTools + + itemlist = filtertools.get_links(list_links, item, list_idiomas) + + # Requerido para AutoPlay + + autoplay.start(list_links, item) + return list_links From 4e1d2dd7d6d1365da52cc9b55387e526903cf187 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:05:22 -0500 Subject: [PATCH 02/19] Update hentaiid.py --- plugin.video.alfa/channels/hentaiid.py | 91 ++++++++------------------ 1 file changed, 29 insertions(+), 62 deletions(-) diff --git a/plugin.video.alfa/channels/hentaiid.py b/plugin.video.alfa/channels/hentaiid.py index fd2f6c07..f6cb51aa 100755 --- a/plugin.video.alfa/channels/hentaiid.py +++ b/plugin.video.alfa/channels/hentaiid.py @@ -17,7 +17,6 @@ def mainlist(item): itemlist = list() itemlist.append(Item(channel=item.channel, action="series", title="Novedades", url=urlparse.urljoin(CHANNEL_HOST, "archivos/h2/"), extra="novedades")) - itemlist.append(Item(channel=item.channel, action="letras", title="Por orden alfabético")) itemlist.append(Item(channel=item.channel, action="generos", title="Por géneros", url=CHANNEL_HOST)) itemlist.append(Item(channel=item.channel, action="series", title="Sin Censura", url=urlparse.urljoin(CHANNEL_HOST, "archivos/sin-censura/"))) @@ -25,20 +24,6 @@ def mainlist(item): url=urlparse.urljoin(CHANNEL_HOST, "archivos/hight-definition/"))) itemlist.append(Item(channel=item.channel, action="series", title="Mejores Hentais", url=urlparse.urljoin(CHANNEL_HOST, "archivos/ranking-hentai/"))) - itemlist.append(Item(channel=item.channel, action="search", title="Buscar", - url=urlparse.urljoin(CHANNEL_HOST, "?s="))) - - return itemlist - - -def letras(item): - logger.info() - - itemlist = [] - - for letra in '0ABCDEFGHIJKLMNOPQRSTUVWXYZ': - itemlist.append(Item(channel=item.channel, action="series", title=letra, - url=urlparse.urljoin(CHANNEL_HOST, "/?s=letra-%s" % letra.replace("0", "num")))) return itemlist @@ -47,49 +32,34 @@ def generos(item): logger.info() itemlist = [] - data = httptools.downloadpage(item.url).data - data = re.sub(r"\n|\r|\t|\s{2}", "", data) + data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(item.url).data) - data = scrapertools.get_match(data, "
(.*?)
") - patron = "(.*?)" + pattern = 'id="hentai2">]+>(.*?)
' + data = scrapertools.find_single_match(data, pattern) + + patron = 'href="([^"]+)"[^>]+>(.*?)' matches = re.compile(patron, re.DOTALL).findall(data) - for scrapedurl, scrapedtitle in matches: - title = scrapertools.entityunescape(scrapedtitle) - url = urlparse.urljoin(item.url, scrapedurl) + for url, title in matches: # logger.debug("title=[{0}], url=[{1}]".format(title, url)) - itemlist.append(Item(channel=item.channel, action="series", title=title, url=url)) return itemlist -def search(item, texto): - logger.info() - if item.url == "": - item.url = urlparse.urljoin(CHANNEL_HOST, "animes/?buscar=") - texto = texto.replace(" ", "+") - item.url = "%s%s" % (item.url, texto) - - try: - return series(item) - # Se captura la excepción, para no interrumpir al buscador global si un canal falla - except: - import sys - for line in sys.exc_info(): - logger.error("%s" % line) - return [] - - def series(item): logger.info() - data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(item.url).data) - patron = '

' \ - '(.*?)[^<]+

[^<]+[^<]+ 0: - scrapedurl = match - scrapedtitle = ">> Pagina Siguiente" + if pagination: + page = scrapertools.find_single_match(pagination, '>Página\s*(\d+)\s*de\s*\d+<') + pattern = 'href="([^"]+)">%s<' % (int(page) + 1) + url_page = scrapertools.find_single_match(pagination, pattern) - itemlist.append(Item(channel=item.channel, action="series", title=scrapedtitle, url=scrapedurl, - folder=True, viewmode="movies_with_plot")) + if url_page: + itemlist.append(Item(channel=item.channel, action="series", title=">> Página Siguiente", url=url_page)) return itemlist @@ -124,9 +89,11 @@ def episodios(item): logger.info() itemlist = [] - data = httptools.downloadpage(item.url).data - data = scrapertools.find_single_match(data, '
(.*?)
') - patron = '([^<]+)' + data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(item.url).data) + pattern = '
Lista de Capítulos
(.*?)
' + + data = scrapertools.find_single_match(data, pattern) + patron = ']+>([^<]+)' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle in matches: @@ -136,10 +103,9 @@ def episodios(item): plot = item.plot # logger.debug("title=[{0}], url=[{1}], thumbnail=[{2}]".format(title, url, thumbnail)) - itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=url, thumbnail=thumbnail, plot=plot, show=item.show, fulltitle="%s %s" % (item.show, title), - fanart=thumbnail, viewmode="movies_with_plot", folder=True)) + fanart=thumbnail)) return itemlist @@ -148,7 +114,8 @@ def findvideos(item): logger.info() data = httptools.downloadpage(item.url).data - patron = '
[^<]+<[iframe|IFRAME].*?[src|SRC]="([^"]+)"' + + patron = '<(?:iframe)?(?:IFRAME)?\s*(?:src)?(?:SRC)?="([^"]+)"' matches = re.compile(patron, re.DOTALL).findall(data) for url in matches: From 073f39a523b80fe13a35a9f8d0cbce8f3b63dad5 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:07:45 -0500 Subject: [PATCH 03/19] Update hentaienespanol.py --- plugin.video.alfa/channels/hentaienespanol.py | 27 ------------------- 1 file changed, 27 deletions(-) diff --git a/plugin.video.alfa/channels/hentaienespanol.py b/plugin.video.alfa/channels/hentaienespanol.py index c329affe..4551f015 100755 --- a/plugin.video.alfa/channels/hentaienespanol.py +++ b/plugin.video.alfa/channels/hentaienespanol.py @@ -61,30 +61,3 @@ def search(item, texto): return todas(item) else: return [] - - -def findvideos(item): - logger.info() - - itemlist = [] - - data = httptools.downloadpage(item.url).data - patron = '<\/i>Ver.*?<\/span><\/a> <\/li>' - matches = re.compile(patron, re.DOTALL).findall(data) - for scrapedurl in matches: - title = item.title - url = scrapedurl - itemlist.append(item.clone(title=title, url=url, action="play")) - - return itemlist - - -def play(item): - logger.info() - itemlist = [] - item.url = item.url.replace(' ', '%20') - data = httptools.downloadpage(item.url, add_referer=True).data - url = scrapertools.find_single_match(data, ' Date: Sat, 19 Aug 2017 11:08:29 -0500 Subject: [PATCH 04/19] Update hdfull.py --- plugin.video.alfa/channels/hdfull.py | 29 ++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/plugin.video.alfa/channels/hdfull.py b/plugin.video.alfa/channels/hdfull.py index 5156104b..19d1b90c 100755 --- a/plugin.video.alfa/channels/hdfull.py +++ b/plugin.video.alfa/channels/hdfull.py @@ -12,6 +12,20 @@ from core import servertools from core.item import Item from platformcode import config, logger from platformcode import platformtools +from channels import filtertools +from channels import autoplay + +IDIOMAS = {'LAT': 'Latino', 'ESP': 'Español', 'ESPSUB': 'VOS', 'ENGSUB' : 'VOSE'} +list_language = IDIOMAS.values() +list_quality = ['RHDTV', 'HD0180M', 'HD720M', 'TS'] +list_servers = [ + 'openload', + 'powvideo', + 'streamplay', + 'streamcloud', + 'nowvideo' + +] host = "http://hdfull.tv" @@ -42,7 +56,7 @@ def login(): def mainlist(item): logger.info() - + autoplay.init(item.channel, list_servers, list_quality) itemlist = [] itemlist.append(Item(channel=item.channel, action="menupeliculas", title="Películas", url=host, folder=True)) @@ -56,6 +70,7 @@ def mainlist(item): login() itemlist.append(Item(channel=item.channel, action="settingCanal", title="Configuración...", url="")) + autoplay.show_option(item.channel, itemlist) return itemlist @@ -465,7 +480,8 @@ def episodios(item): 'id'] + ";3" itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=title, url=url, - thumbnail=thumbnail, show=item.show, folder=True, contentType="episode")) + thumbnail=thumbnail, show=item.show, folder=True, contentType="episode", + context =autoplay.context)) if config.get_videolibrary_support() and len(itemlist) > 0: itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", url=url_targets, @@ -696,11 +712,13 @@ def findvideos(item): fanart = scrapertools.find_single_match(data, '
Date: Sat, 19 Aug 2017 11:09:04 -0500 Subject: [PATCH 05/19] Update hdfull.json --- plugin.video.alfa/channels/hdfull.json | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/hdfull.json b/plugin.video.alfa/channels/hdfull.json index c1512fa4..f0e4b9f1 100755 --- a/plugin.video.alfa/channels/hdfull.json +++ b/plugin.video.alfa/channels/hdfull.json @@ -49,6 +49,21 @@ "enabled": "!eq(-1,'')", "visible": true }, + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "Latino", + "Español", + "VOS", + "VOSE" + ] + }, { "id": "include_in_global_search", "type": "bool", @@ -58,4 +73,4 @@ "visible": true } ] -} \ No newline at end of file +} From ac364bcea39155e8217106c43e487b5bfcfc6428 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:09:41 -0500 Subject: [PATCH 06/19] Update animeshd.py --- plugin.video.alfa/channels/animeshd.py | 34 ++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/animeshd.py b/plugin.video.alfa/channels/animeshd.py index 3fd34f84..99e51916 100755 --- a/plugin.video.alfa/channels/animeshd.py +++ b/plugin.video.alfa/channels/animeshd.py @@ -8,6 +8,19 @@ from core import scrapertools from core import servertools from core.item import Item from platformcode import logger +from channels import autoplay +from channels import filtertools + +IDIOMAS = {'Latino': 'LAT', 'Castellano':'CAST','Subtitulado': 'VOS'} +list_language = IDIOMAS.values() +logger.debug('lista_language: %s' % list_language) + +list_quality = ['default'] +list_servers = [ + 'rapidvideo', + 'downace', + 'openload' +] tgenero = {"Comedia": "https://s7.postimg.org/ne9g9zgwb/comedia.png", "Drama": "https://s16.postimg.org/94sia332d/drama.png", @@ -35,6 +48,8 @@ headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/ def mainlist(item): logger.info() + + autoplay.init(item.channel, list_servers, list_quality) itemlist = [] itemlist.append(item.clone(title="Ultimas", @@ -65,6 +80,8 @@ def mainlist(item): fanart='https://s30.postimg.org/pei7txpa9/buscar.png' )) + autoplay.show_option(item.channel, itemlist) + return itemlist @@ -161,10 +178,16 @@ def episodios(item): matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedlang, scrapedtitle in matches: - language = scrapedlang + language = IDIOMAS[scrapedlang] + title = scrapedtitle + ' (%s)' % language url = scrapedurl - itemlist.append(item.clone(title=title, url=url, action='findvideos', language=language)) + itemlist.append(item.clone(title=title, + url=url, + action='findvideos', + language=language, + quality ='default' + )) return itemlist @@ -180,6 +203,13 @@ def findvideos(item): videoitem.channel = item.channel videoitem.title = title videoitem.action = 'play' + videoitem.language = item.language + # Requerido para FilterTools + itemlist = filtertools.get_links(itemlist, item, list_language) + + # Requerido para AutoPlay + + autoplay.start(itemlist, item) return itemlist From b8598482ceefe3d724db6a95fc8d9254aa68fd84 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:10:02 -0500 Subject: [PATCH 07/19] Update animeshd.json --- plugin.video.alfa/channels/animeshd.json | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/animeshd.json b/plugin.video.alfa/channels/animeshd.json index fdf04e49..293ac85a 100755 --- a/plugin.video.alfa/channels/animeshd.json +++ b/plugin.video.alfa/channels/animeshd.json @@ -21,8 +21,24 @@ "description": "First release" } ], - "categories": [ + "categories": [ "latino", "anime" + ], + "settings": [ + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "LAT", + "CAST", + "SUB" + ] + } ] } From bf0682972cef5fdca9ff81e0fbcf7b1047d6d81b Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:24:26 -0500 Subject: [PATCH 08/19] Update animeflv.py --- plugin.video.alfa/channels/animeflv.py | 46 ++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 7 deletions(-) diff --git a/plugin.video.alfa/channels/animeflv.py b/plugin.video.alfa/channels/animeflv.py index 67ad3f07..c7d80f6c 100755 --- a/plugin.video.alfa/channels/animeflv.py +++ b/plugin.video.alfa/channels/animeflv.py @@ -9,6 +9,22 @@ from core import jsontools from core import scrapertools from core.item import Item from platformcode import logger +from channels import filtertools +from channels import autoplay + +list_language = ['No filtrar'] +logger.debug('lista_language: %s' % list_language) + +list_quality = ['default'] +list_servers = [ + 'izanagi', + 'yourupload', + 'okru', + 'netutv', + 'openload', + 'streamango', + 'mp4upload' +] HOST = "https://animeflv.net/" @@ -16,6 +32,8 @@ HOST = "https://animeflv.net/" def mainlist(item): logger.info() + autoplay.init(item.channel, list_servers, list_quality) + itemlist = list() itemlist.append(Item(channel=item.channel, action="novedades_episodios", title="Últimos episodios", url=HOST)) @@ -35,6 +53,8 @@ def mainlist(item): itemlist = renumbertools.show_option(item.channel, itemlist) + autoplay.show_option(item.channel, itemlist) + return itemlist @@ -131,7 +151,7 @@ def novedades_episodios(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="findvideos", title=title, url=url, show=show, thumbnail=thumbnail, - fulltitle=title) + fulltitle=title, context = autoplay.context) itemlist.append(new_item) @@ -155,7 +175,7 @@ def novedades_anime(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail, - fulltitle=title, plot=plot) + fulltitle=title, plot=plot, context = autoplay.context) if _type != "Película": new_item.show = title new_item.context = renumbertools.context(item) @@ -189,7 +209,7 @@ def listado(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail, - fulltitle=title, plot=plot) + fulltitle=title, plot=plot, context = autoplay.context) if _type == "Anime": new_item.show = title @@ -223,7 +243,7 @@ def episodios(item): item.plot = scrapertools.find_single_match(data, 'Description[^>]+>

(.*?)

') matches = re.compile('href="([^"]+)">
' - '

(.*?)

', re.DOTALL).findall(data) + '\s*

(.*?)

', re.DOTALL).findall(data) if matches: for url, thumb, title in matches: @@ -242,7 +262,7 @@ def episodios(item): title = "%s: %sx%s" % (item.title, season, str(episode).zfill(2)) itemlist.append(item.clone(action="findvideos", title=title, url=url, thumbnail=thumb, fulltitle=title, - fanart=item.thumbnail, contentType="episode")) + fanart=item.thumbnail, contentType="episode", context = autoplay.context)) else: # no hay thumbnail matches = re.compile(']+>(.*?)<', re.DOTALL).findall(data) @@ -299,11 +319,15 @@ def findvideos(item): if video_urls: video_urls.sort(key=lambda v: int(v[0])) itemlist.append(item.clone(title="Enlace encontrado en %s" % server, action="play", - video_urls=video_urls)) + video_urls=video_urls, language='No filtrar', quality ='default', + server=server)) else: url = scrapertools.find_single_match(data, '"file":"([^"]+)"') if url: - itemlist.append(item.clone(title="Enlace encontrado en %s" % server, url=url, action="play")) + if server == 'izanagi': + server = 'directo' + itemlist.append(item.clone(title="Enlace encontrado en %s" % server, url=url, action="play", + language='No filtrar', quality ='default', server=server)) else: aux_url.append(e) @@ -315,6 +339,14 @@ def findvideos(item): videoitem.channel = item.channel videoitem.thumbnail = item.thumbnail + # Requerido para FilterTools + + itemlist = filtertools.get_links(itemlist, item, list_language) + + # Requerido para AutoPlay + + autoplay.start(itemlist, item) + return itemlist From 68167a69deca1af56f19ebf2ba391ae98c492709 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:24:58 -0500 Subject: [PATCH 09/19] Update animeflv.json --- plugin.video.alfa/channels/animeflv.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/plugin.video.alfa/channels/animeflv.json b/plugin.video.alfa/channels/animeflv.json index 01ed328b..81e1416a 100755 --- a/plugin.video.alfa/channels/animeflv.json +++ b/plugin.video.alfa/channels/animeflv.json @@ -37,6 +37,17 @@ "enabled": true, "visible": true }, + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar" + ] + }, { "id": "include_in_newest_anime", "type": "bool", From b157c6185e8bfbaf16a11d21ff2b382616adb858 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:25:49 -0500 Subject: [PATCH 10/19] Update x18hentai.py --- plugin.video.alfa/channels/x18hentai.py | 64 ++++++++++++++++++++----- 1 file changed, 53 insertions(+), 11 deletions(-) diff --git a/plugin.video.alfa/channels/x18hentai.py b/plugin.video.alfa/channels/x18hentai.py index 5ed87510..b76e8605 100755 --- a/plugin.video.alfa/channels/x18hentai.py +++ b/plugin.video.alfa/channels/x18hentai.py @@ -6,8 +6,9 @@ from core import httptools from core import scrapertools from core.item import Item from platformcode import logger +from core import servertools -host = 'http://www.18hentaionline.eu/' +host = 'http://www.18hentaionline.net/' headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'], ['Referer', host]] @@ -92,17 +93,58 @@ def episodios(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url, headers=headers).data - patron = '([^<]+)<\/td>.([^<]+)<\/td>.([^<]+)<\/td>.([^<]+)<\/td>.Ver Capitulo<\/a><\/td>' + old_mode = scrapertools.find_single_match(data, 'Censura<\/th>') + if old_mode: + patron = '(\d+)<\/td>(.*?)<\/td>(.*?)<\/td>(.*?)<\/td>Ver Capitulo<\/a><\/td>' - matches = re.compile(patron, re.DOTALL).findall(data) + matches = re.compile(patron, re.DOTALL).findall(data) - for scrapedcap, scrapedaud, scrapedsub, scrapedcen, scrapedurl in matches: - url = scrapedurl - title = 'CAPITULO ' + scrapedcap + ' AUDIO: ' + scrapedaud + ' SUB:' + scrapedsub + ' ' + censura[scrapedcen] - thumbnail = '' - plot = '' - fanart = '' - itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=item.fulltitle, url=url, - thumbnail=item.thumbnail, plot=plot)) + for scrapedcap, scrapedaud, scrapedsub, scrapedcen, scrapedurl in matches: + url = scrapedurl + title = 'CAPITULO ' + scrapedcap + ' AUDIO: ' + scrapedaud + ' SUB:' + scrapedsub + ' ' + censura[scrapedcen] + thumbnail = '' + plot = '' + fanart = '' + itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=item.fulltitle, url=url, + thumbnail=item.thumbnail, plot=plot)) + else: + patron = '<\/i>.*?(.\d+)<\/td>MP4<\/td>(.*?)<\/td>.*?' + patron +='' + + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedcap, scrapedsub, scrapedurl in matches: + url = scrapedurl + if scrapedsub !='': + subs= scrapedsub + else: + sub = 'No' + title = 'CAPITULO %s SUB %s'%(scrapedcap, subs) + thumbnail = '' + plot = '' + fanart = '' + itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=item.fulltitle, url=url, + thumbnail=item.thumbnail, plot=plot)) return itemlist + +def findvideos(item): + logger.info() + + itemlist = [] + data = httptools.downloadpage(item.url).data + gvideo = scrapertools.find_single_match(data,'
  • ') + headers = {'Host':'www.18hentaionline.net', 'Referer':item.url} + gvideo_data = httptools.downloadpage(gvideo, headers = headers).data + gvideo_url = scrapertools.find_single_match(gvideo_data, 'file: "(.*?)"') + server = 'directo' + new_item = (item.clone(url=gvideo_url, server=server)) + itemlist.append(new_item) + itemlist.extend(servertools.find_video_items(data=data)) + for videoitem in itemlist: + videoitem.channel = item.channel + videoitem.title = item.title+' (%s)'%videoitem.server + videoitem.action = 'play' + return itemlist + + From a466a9447b80c396bfcefec678b61cd9b4986b1d Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 11:29:48 -0500 Subject: [PATCH 11/19] Update mp4upload.py --- plugin.video.alfa/servers/mp4upload.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/plugin.video.alfa/servers/mp4upload.py b/plugin.video.alfa/servers/mp4upload.py index 39b27a56..2efbcf56 100755 --- a/plugin.video.alfa/servers/mp4upload.py +++ b/plugin.video.alfa/servers/mp4upload.py @@ -1,17 +1,23 @@ # -*- coding: utf-8 -*- +import re + +from core import httptools from core import scrapertools +from lib import jsunpack from platformcode import logger def get_video_url(page_url, premium=False, user="", password="", video_password=""): logger.info("(page_url='%s')" % page_url) - data = scrapertools.cache_page(page_url) - logger.info("data=" + data) - media_url = scrapertools.find_single_match(data, '"file": "(.+?)"') - logger.info("media_url=" + media_url) - media_url = media_url.replace("?start=0", "") + data = re.sub(r"\n|\r|\t|\s{2}", "", httptools.downloadpage(page_url).data) + + match = scrapertools.find_single_match(data, "") + data = jsunpack.unpack(match) + data = data.replace("\\'", "'") + + media_url = scrapertools.find_single_match(data, '{type:"video/mp4",src:"([^"]+)"}') logger.info("media_url=" + media_url) video_urls = list() From d59502e9ed73db065d659b716c10ea6d5d25f4c8 Mon Sep 17 00:00:00 2001 From: jvc99 Date: Sat, 19 Aug 2017 19:04:04 +0200 Subject: [PATCH 12/19] Fix Pagina Siguiente --- plugin.video.alfa/channels/datoporn.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/datoporn.py b/plugin.video.alfa/channels/datoporn.py index cdf9f300..1afb3615 100755 --- a/plugin.video.alfa/channels/datoporn.py +++ b/plugin.video.alfa/channels/datoporn.py @@ -40,7 +40,7 @@ def lista(item): server="datoporn", fanart=scrapedthumbnail.replace("_t.jpg", ".jpg"))) # Extrae la marca de siguiente página - next_page = scrapertools.find_single_match(data, "Next") + next_page = scrapertools.find_single_match(data, 'Next') if next_page and itemlist: itemlist.append(item.clone(action="lista", title=">> Página Siguiente", url=next_page)) From b2eebf2b80bde304c722fd3f0194a557cdd98a87 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Sat, 19 Aug 2017 12:49:20 -0500 Subject: [PATCH 13/19] Update autoplay.py --- plugin.video.alfa/channels/autoplay.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/autoplay.py b/plugin.video.alfa/channels/autoplay.py index f42a46d5..450b134e 100755 --- a/plugin.video.alfa/channels/autoplay.py +++ b/plugin.video.alfa/channels/autoplay.py @@ -381,10 +381,10 @@ def check_value(channel, itemlist): quality_list = channel_node['quality'] = list() for item in itemlist: - if item.server not in server_list: + if item.server not in server_list and item.server !='': server_list.append(item.server) change = True - if item.quality not in quality_list: + if item.quality not in quality_list and item.quality !='': quality_list.append(item.quality) change = True From e1bbc7eb583bb561acb786e1dcf16564979eac49 Mon Sep 17 00:00:00 2001 From: Inter95 Date: Sat, 19 Aug 2017 15:07:56 -0400 Subject: [PATCH 14/19] infolabels agregados --- plugin.video.alfa/channels/ver-peliculas.json | 13 +++++++++++- plugin.video.alfa/channels/ver-peliculas.py | 21 +++++++++++++++++-- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/plugin.video.alfa/channels/ver-peliculas.json b/plugin.video.alfa/channels/ver-peliculas.json index a2436e87..ba3889f4 100644 --- a/plugin.video.alfa/channels/ver-peliculas.json +++ b/plugin.video.alfa/channels/ver-peliculas.json @@ -10,5 +10,16 @@ "categories": [ "movie", "latino" + ], + "settings": [ + { + "id": "modo_grafico", + "type": "bool", + "label": "Buscar información extra", + "default": true, + "enabled": true, + "visible": true + } ] -} \ No newline at end of file + +} diff --git a/plugin.video.alfa/channels/ver-peliculas.py b/plugin.video.alfa/channels/ver-peliculas.py index f3fdfdee..fcbd3059 100644 --- a/plugin.video.alfa/channels/ver-peliculas.py +++ b/plugin.video.alfa/channels/ver-peliculas.py @@ -14,9 +14,16 @@ from core import scrapertools from core import servertools from core.item import Item from platformcode import config, logger +from core import tmdb + +__channel__ = "ver-peliculas" host = "http://ver-peliculas.org/" +try: + __modo_grafico__ = config.get_setting('modo_grafico', __channel__) +except: + __modo_grafico__ = True def mainlist(item): logger.info() @@ -115,19 +122,22 @@ def listado(item): logger.info() itemlist = [] data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data) - logger.debug(data) + # logger.debug(data) pattern = ']+>(.*?)') if pagination: @@ -140,6 +150,13 @@ def listado(item): url=url, thumbnail=get_thumb("next.png"))) + for item in itemlist: + if item.infoLabels['plot'] == '': + data = httptools.downloadpage(item.url).data + item.plot = scrapertools.find_single_match(data, '
    ([^<]+)
    ').strip() + item.fanart = scrapertools.find_single_match(data, '') + + return itemlist From 26e3ff8a19e413f0b0e50414097dfd0b12ac0a65 Mon Sep 17 00:00:00 2001 From: Inter95 Date: Sat, 19 Aug 2017 19:25:52 -0400 Subject: [PATCH 15/19] fix sintaxis --- plugin.video.alfa/channels/locopelis.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/locopelis.json b/plugin.video.alfa/channels/locopelis.json index 728a30dd..d5df7370 100755 --- a/plugin.video.alfa/channels/locopelis.json +++ b/plugin.video.alfa/channels/locopelis.json @@ -52,7 +52,7 @@ "default": 0, "enabled": true, "visible": true, - "llvalues": [ + "lvalues": [ "No filtrar", "Latino", "Español", @@ -76,4 +76,4 @@ "visible": true } ] -} \ No newline at end of file +} From 739ee1c3a340f8aff5a1edcda9c14a50e6c65a41 Mon Sep 17 00:00:00 2001 From: Inter95 Date: Sat, 19 Aug 2017 19:44:52 -0400 Subject: [PATCH 16/19] v1.5.6 --- plugin.video.alfa/addon.xml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index e55df21f..befa49d3 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@  - + @@ -19,12 +19,13 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Arreglos[/B][/COLOR] - [I]- streamplay, gracias a msdos - - allcalidad - - tvseriesdk - - mundoflv - - ver-peliculas - - fix internos[/I] + [I]- hentaiid + - hentaienespañol + - x18hentai + - mp4upload + - animeflv + - fixes internos[/I] + [COLOR green]Gracias a [COLOR yellow]jvc99[/COLOR] por su colaboración en esta versión[/COLOR] Navega con Kodi por páginas web para ver sus videos de manera fácil. Browse web pages using Kodi From ee7cfd5d9da28f33401f86cbd288957a016e1023 Mon Sep 17 00:00:00 2001 From: Inter95 Date: Sat, 19 Aug 2017 19:46:01 -0400 Subject: [PATCH 17/19] minor fix --- plugin.video.alfa/channels/animeflv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 plugin.video.alfa/channels/animeflv.py diff --git a/plugin.video.alfa/channels/animeflv.py b/plugin.video.alfa/channels/animeflv.py old mode 100755 new mode 100644 index 67ad3f07..ec68dd95 --- a/plugin.video.alfa/channels/animeflv.py +++ b/plugin.video.alfa/channels/animeflv.py @@ -223,7 +223,7 @@ def episodios(item): item.plot = scrapertools.find_single_match(data, 'Description[^>]+>

    (.*?)

    ') matches = re.compile('href="([^"]+)">
    ' - '

    (.*?)

    ', re.DOTALL).findall(data) + '\s*

    (.*?)

    ', re.DOTALL).findall(data) if matches: for url, thumb, title in matches: From b3ca96783b1d1fc3b1fa4c7e8b3ab95cd58a14a2 Mon Sep 17 00:00:00 2001 From: alfa-addon Date: Sat, 19 Aug 2017 20:50:14 -0400 Subject: [PATCH 18/19] arreglos de archivos --- plugin.video.alfa/channels/animeflv.json | 11 ------ plugin.video.alfa/channels/animeflv.py | 44 +++------------------- plugin.video.alfa/channels/animeshd.json | 18 +-------- plugin.video.alfa/channels/animeshd.py | 34 +---------------- plugin.video.alfa/channels/hdfull.json | 17 +-------- plugin.video.alfa/channels/hdfull.py | 29 ++------------ plugin.video.alfa/channels/seriesblanco.py | 19 +--------- plugin.video.alfa/servers/mp4upload.py | 0 plugin.video.alfa/servers/openload.py | 4 +- 9 files changed, 18 insertions(+), 158 deletions(-) mode change 100755 => 100644 plugin.video.alfa/servers/mp4upload.py mode change 100755 => 100644 plugin.video.alfa/servers/openload.py diff --git a/plugin.video.alfa/channels/animeflv.json b/plugin.video.alfa/channels/animeflv.json index 81e1416a..01ed328b 100755 --- a/plugin.video.alfa/channels/animeflv.json +++ b/plugin.video.alfa/channels/animeflv.json @@ -37,17 +37,6 @@ "enabled": true, "visible": true }, - { - "id": "filter_languages", - "type": "list", - "label": "Mostrar enlaces en idioma...", - "default": 0, - "enabled": true, - "visible": true, - "lvalues": [ - "No filtrar" - ] - }, { "id": "include_in_newest_anime", "type": "bool", diff --git a/plugin.video.alfa/channels/animeflv.py b/plugin.video.alfa/channels/animeflv.py index c7d80f6c..ec68dd95 100644 --- a/plugin.video.alfa/channels/animeflv.py +++ b/plugin.video.alfa/channels/animeflv.py @@ -9,22 +9,6 @@ from core import jsontools from core import scrapertools from core.item import Item from platformcode import logger -from channels import filtertools -from channels import autoplay - -list_language = ['No filtrar'] -logger.debug('lista_language: %s' % list_language) - -list_quality = ['default'] -list_servers = [ - 'izanagi', - 'yourupload', - 'okru', - 'netutv', - 'openload', - 'streamango', - 'mp4upload' -] HOST = "https://animeflv.net/" @@ -32,8 +16,6 @@ HOST = "https://animeflv.net/" def mainlist(item): logger.info() - autoplay.init(item.channel, list_servers, list_quality) - itemlist = list() itemlist.append(Item(channel=item.channel, action="novedades_episodios", title="Últimos episodios", url=HOST)) @@ -53,8 +35,6 @@ def mainlist(item): itemlist = renumbertools.show_option(item.channel, itemlist) - autoplay.show_option(item.channel, itemlist) - return itemlist @@ -151,7 +131,7 @@ def novedades_episodios(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="findvideos", title=title, url=url, show=show, thumbnail=thumbnail, - fulltitle=title, context = autoplay.context) + fulltitle=title) itemlist.append(new_item) @@ -175,7 +155,7 @@ def novedades_anime(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail, - fulltitle=title, plot=plot, context = autoplay.context) + fulltitle=title, plot=plot) if _type != "Película": new_item.show = title new_item.context = renumbertools.context(item) @@ -209,7 +189,7 @@ def listado(item): thumbnail = urlparse.urljoin(HOST, thumbnail) new_item = Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail, - fulltitle=title, plot=plot, context = autoplay.context) + fulltitle=title, plot=plot) if _type == "Anime": new_item.show = title @@ -262,7 +242,7 @@ def episodios(item): title = "%s: %sx%s" % (item.title, season, str(episode).zfill(2)) itemlist.append(item.clone(action="findvideos", title=title, url=url, thumbnail=thumb, fulltitle=title, - fanart=item.thumbnail, contentType="episode", context = autoplay.context)) + fanart=item.thumbnail, contentType="episode")) else: # no hay thumbnail matches = re.compile('
    ]+>(.*?)<', re.DOTALL).findall(data) @@ -319,15 +299,11 @@ def findvideos(item): if video_urls: video_urls.sort(key=lambda v: int(v[0])) itemlist.append(item.clone(title="Enlace encontrado en %s" % server, action="play", - video_urls=video_urls, language='No filtrar', quality ='default', - server=server)) + video_urls=video_urls)) else: url = scrapertools.find_single_match(data, '"file":"([^"]+)"') if url: - if server == 'izanagi': - server = 'directo' - itemlist.append(item.clone(title="Enlace encontrado en %s" % server, url=url, action="play", - language='No filtrar', quality ='default', server=server)) + itemlist.append(item.clone(title="Enlace encontrado en %s" % server, url=url, action="play")) else: aux_url.append(e) @@ -339,14 +315,6 @@ def findvideos(item): videoitem.channel = item.channel videoitem.thumbnail = item.thumbnail - # Requerido para FilterTools - - itemlist = filtertools.get_links(itemlist, item, list_language) - - # Requerido para AutoPlay - - autoplay.start(itemlist, item) - return itemlist diff --git a/plugin.video.alfa/channels/animeshd.json b/plugin.video.alfa/channels/animeshd.json index 293ac85a..fdf04e49 100755 --- a/plugin.video.alfa/channels/animeshd.json +++ b/plugin.video.alfa/channels/animeshd.json @@ -21,24 +21,8 @@ "description": "First release" } ], - "categories": [ + "categories": [ "latino", "anime" - ], - "settings": [ - { - "id": "filter_languages", - "type": "list", - "label": "Mostrar enlaces en idioma...", - "default": 0, - "enabled": true, - "visible": true, - "lvalues": [ - "No filtrar", - "LAT", - "CAST", - "SUB" - ] - } ] } diff --git a/plugin.video.alfa/channels/animeshd.py b/plugin.video.alfa/channels/animeshd.py index 99e51916..3fd34f84 100755 --- a/plugin.video.alfa/channels/animeshd.py +++ b/plugin.video.alfa/channels/animeshd.py @@ -8,19 +8,6 @@ from core import scrapertools from core import servertools from core.item import Item from platformcode import logger -from channels import autoplay -from channels import filtertools - -IDIOMAS = {'Latino': 'LAT', 'Castellano':'CAST','Subtitulado': 'VOS'} -list_language = IDIOMAS.values() -logger.debug('lista_language: %s' % list_language) - -list_quality = ['default'] -list_servers = [ - 'rapidvideo', - 'downace', - 'openload' -] tgenero = {"Comedia": "https://s7.postimg.org/ne9g9zgwb/comedia.png", "Drama": "https://s16.postimg.org/94sia332d/drama.png", @@ -48,8 +35,6 @@ headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/ def mainlist(item): logger.info() - - autoplay.init(item.channel, list_servers, list_quality) itemlist = [] itemlist.append(item.clone(title="Ultimas", @@ -80,8 +65,6 @@ def mainlist(item): fanart='https://s30.postimg.org/pei7txpa9/buscar.png' )) - autoplay.show_option(item.channel, itemlist) - return itemlist @@ -178,16 +161,10 @@ def episodios(item): matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedlang, scrapedtitle in matches: - language = IDIOMAS[scrapedlang] - + language = scrapedlang title = scrapedtitle + ' (%s)' % language url = scrapedurl - itemlist.append(item.clone(title=title, - url=url, - action='findvideos', - language=language, - quality ='default' - )) + itemlist.append(item.clone(title=title, url=url, action='findvideos', language=language)) return itemlist @@ -203,13 +180,6 @@ def findvideos(item): videoitem.channel = item.channel videoitem.title = title videoitem.action = 'play' - videoitem.language = item.language - # Requerido para FilterTools - itemlist = filtertools.get_links(itemlist, item, list_language) - - # Requerido para AutoPlay - - autoplay.start(itemlist, item) return itemlist diff --git a/plugin.video.alfa/channels/hdfull.json b/plugin.video.alfa/channels/hdfull.json index f0e4b9f1..c1512fa4 100755 --- a/plugin.video.alfa/channels/hdfull.json +++ b/plugin.video.alfa/channels/hdfull.json @@ -49,21 +49,6 @@ "enabled": "!eq(-1,'')", "visible": true }, - { - "id": "filter_languages", - "type": "list", - "label": "Mostrar enlaces en idioma...", - "default": 0, - "enabled": true, - "visible": true, - "lvalues": [ - "No filtrar", - "Latino", - "Español", - "VOS", - "VOSE" - ] - }, { "id": "include_in_global_search", "type": "bool", @@ -73,4 +58,4 @@ "visible": true } ] -} +} \ No newline at end of file diff --git a/plugin.video.alfa/channels/hdfull.py b/plugin.video.alfa/channels/hdfull.py index 19d1b90c..5156104b 100755 --- a/plugin.video.alfa/channels/hdfull.py +++ b/plugin.video.alfa/channels/hdfull.py @@ -12,20 +12,6 @@ from core import servertools from core.item import Item from platformcode import config, logger from platformcode import platformtools -from channels import filtertools -from channels import autoplay - -IDIOMAS = {'LAT': 'Latino', 'ESP': 'Español', 'ESPSUB': 'VOS', 'ENGSUB' : 'VOSE'} -list_language = IDIOMAS.values() -list_quality = ['RHDTV', 'HD0180M', 'HD720M', 'TS'] -list_servers = [ - 'openload', - 'powvideo', - 'streamplay', - 'streamcloud', - 'nowvideo' - -] host = "http://hdfull.tv" @@ -56,7 +42,7 @@ def login(): def mainlist(item): logger.info() - autoplay.init(item.channel, list_servers, list_quality) + itemlist = [] itemlist.append(Item(channel=item.channel, action="menupeliculas", title="Películas", url=host, folder=True)) @@ -70,7 +56,6 @@ def mainlist(item): login() itemlist.append(Item(channel=item.channel, action="settingCanal", title="Configuración...", url="")) - autoplay.show_option(item.channel, itemlist) return itemlist @@ -480,8 +465,7 @@ def episodios(item): 'id'] + ";3" itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=title, url=url, - thumbnail=thumbnail, show=item.show, folder=True, contentType="episode", - context =autoplay.context)) + thumbnail=thumbnail, show=item.show, folder=True, contentType="episode")) if config.get_videolibrary_support() and len(itemlist) > 0: itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", url=url_targets, @@ -712,13 +696,11 @@ def findvideos(item): fanart = scrapertools.find_single_match(data, '
    0: return itemlist @@ -291,14 +284,6 @@ def findvideos(item): list_links = filtertools.get_links(list_links, item, list_idiomas, CALIDADES) - # Requerido para FilterTools - - itemlist = filtertools.get_links(list_links, item, list_idiomas) - - # Requerido para AutoPlay - - autoplay.start(list_links, item) - return list_links diff --git a/plugin.video.alfa/servers/mp4upload.py b/plugin.video.alfa/servers/mp4upload.py old mode 100755 new mode 100644 diff --git a/plugin.video.alfa/servers/openload.py b/plugin.video.alfa/servers/openload.py old mode 100755 new mode 100644 index 20726a4a..9baff26c --- a/plugin.video.alfa/servers/openload.py +++ b/plugin.video.alfa/servers/openload.py @@ -52,7 +52,7 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= numeros = scrapertools.find_multiple_matches(data, '_[A-f0-9]+x[A-f0-9]+\s*(?:=|\^)\s*([0-9]{4,}|0x[A-f0-9]{4,})') op1, op2 = scrapertools.find_single_match(data, '\(0x(\d),0x(\d)\);') - + idparse = scrapertools.find_single_match(data, "\^parseInt\('([0-9]+)'") videourl = "" for encode in var_encodes: text_decode = "" @@ -81,7 +81,7 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= if value3 < index1: break - value4 = value2 ^ decode1[j % (mult / 8)] + value4 = value2 ^ decode1[j % (mult / 8)] ^ int(idparse,8) for n in numeros: if not n.isdigit(): n = int(n, 16) From 3ddae626ab17a1b3068cd670292136ff612d01f6 Mon Sep 17 00:00:00 2001 From: alfa-addon Date: Sat, 19 Aug 2017 20:53:37 -0400 Subject: [PATCH 19/19] v1.5.6 --- plugin.video.alfa/addon.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index befa49d3..05b5c1fe 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -24,8 +24,9 @@ - x18hentai - mp4upload - animeflv + - openload - fixes internos[/I] - [COLOR green]Gracias a [COLOR yellow]jvc99[/COLOR] por su colaboración en esta versión[/COLOR] + [COLOR green]Gracias a [COLOR yellow]jvc99[/COLOR] y [COLOR yellow]msdos[/COLOR] por su colaboración en esta versión[/COLOR] Navega con Kodi por páginas web para ver sus videos de manera fácil. Browse web pages using Kodi