diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index 39d601d6..3633fab3 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@ - + @@ -19,17 +19,16 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Arreglos[/B][/COLOR] - ¤ anitoons ¤ goovie ¤ playporn - ¤ gnula ¤ pelisr ¤ peliculonhd - ¤ thevid ¤ vidcloud ¤ xhamster - ¤ descargacineclasico + ¤ anitoons ¤ rexpelis ¤ bitertv + ¤ fembed ¤ animeflv ¤ canalpelis + ¤ dilo ¤ fanpelis ¤ pelisplus + ¤ pelisr ¤ retroseries ¤ datoporn + ¤ newpct1 ¤ subtorrents ¤ sleazemovies [COLOR green][B]Novedades[/B][/COLOR] - ¤ repelis.live ¤ zonaworld ¤ subtorrents - ¤ fex ¤ xdrive ¤ cat3plus - ¤ sleazemovies + ¤ tupelicula - ¤ Agradecimientos a @diegotcba y @sculkurt por colaborar en ésta versión + ¤ Agradecimientos a @sculkurt por colaborar en ésta versión Navega con Kodi por páginas web para ver sus videos de manera fácil. diff --git a/plugin.video.alfa/channels/animeflv.py b/plugin.video.alfa/channels/animeflv.py index 14787bcc..de6d7901 100644 --- a/plugin.video.alfa/channels/animeflv.py +++ b/plugin.video.alfa/channels/animeflv.py @@ -181,7 +181,7 @@ def episodios(item): itemlist.append(item.clone(title=title, url=url, action='findvideos', show=info[1])) itemlist = itemlist[::-1] if config.get_videolibrary_support() and len(itemlist) > 0: - itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", + itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", url=item.url, action="add_serie_to_library", extra="episodios")) return itemlist diff --git a/plugin.video.alfa/channels/anitoonstv.json b/plugin.video.alfa/channels/anitoonstv.json index c2c56fa9..6abf24fb 100755 --- a/plugin.video.alfa/channels/anitoonstv.json +++ b/plugin.video.alfa/channels/anitoonstv.json @@ -9,5 +9,15 @@ "categories": [ "tvshow", "anime" + ], + "settings": [ + { + "id": "include_in_global_search", + "type": "bool", + "label": "Incluir en busqueda global", + "default": true, + "enabled": true, + "visible": true + } ] } diff --git a/plugin.video.alfa/channels/anitoonstv.py b/plugin.video.alfa/channels/anitoonstv.py index ae20f83d..46f2f177 100644 --- a/plugin.video.alfa/channels/anitoonstv.py +++ b/plugin.video.alfa/channels/anitoonstv.py @@ -22,7 +22,7 @@ list_servers = ['openload', list_quality = ['default'] -host = "http://www.anitoonstv.com" +host = "https://www.anitoonstv.com" def mainlist(item): @@ -38,17 +38,45 @@ def mainlist(item): thumbnail=thumb_series, range=[0,19] )) itemlist.append(Item(channel=item.channel, action="lista", title="Especiales", url=host+"/catalogo.php?g=&t=especiales&o=0", thumbnail=thumb_series, range=[0,19])) + itemlist.append(Item(channel=item.channel, action="search", title="Buscar", + thumbnail=thumb_series, range=[0,19])) itemlist = renumbertools.show_option(item.channel, itemlist) autoplay.show_option(item.channel, itemlist) return itemlist +def search(item, texto): + logger.info() + texto = texto.replace(" ", "+") + item.url = host +"/php/buscar.php" + item.texto = texto + if texto != '': + return sub_search(item) + else: + return [] + + +def sub_search(item): + logger.info() + itemlist = [] + post = "b=" + item.texto + headers = {"X-Requested-With":"XMLHttpRequest"} + data = httptools.downloadpage(item.url, post=post, headers=headers).data + patron = "href='([^']+).*?" + patron += ">([^<]+)" + matches = scrapertools.find_multiple_matches(data, patron) + for scrapedurl, scrapedtitle in matches: + itemlist.append(item.clone(action = "episodios", + title = scrapedtitle, + url = scrapedurl + )) + return itemlist + + def lista(item): logger.info() - itemlist = [] - data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) #logger.info("Pagina para regex "+data) @@ -98,7 +126,7 @@ def episodios(item): itemlist = [] data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) - patron = '
(.*?)' + patron = '
(.*?)cajaSocial' data = scrapertools.find_single_match(data, patron) patron_caps = "
  • Cap(?:i|í)tulo: (.+?) - (.+?)<\/a>" matches = scrapertools.find_multiple_matches(data, patron_caps) @@ -173,6 +201,8 @@ def findvideos(item): if "goo" in url: url = googl(url) server='netutv' + if "hqq" in url: + server='netutv' if "ok" in url: url = "https:"+url server='okru' diff --git a/plugin.video.alfa/channels/bloghorror.py b/plugin.video.alfa/channels/bloghorror.py index 0004b752..210c62bb 100644 --- a/plugin.video.alfa/channels/bloghorror.py +++ b/plugin.video.alfa/channels/bloghorror.py @@ -30,8 +30,8 @@ def mainlist(item): itemlist = [] - itemlist.append(Item(channel=item.channel, fanart=fanart, title="Todas", action="list_all", url=host, - thumbnail=get_thumb('all', auto=True))) + itemlist.append(Item(channel=item.channel, fanart=fanart, title="Todas", action="list_all", + url=host+'/category/terror', thumbnail=get_thumb('all', auto=True))) itemlist.append(Item(channel=item.channel, fanart=fanart, title="Asiaticas", action="list_all", url=host+'/category/asiatico', thumbnail=get_thumb('asiaticas', auto=True))) diff --git a/plugin.video.alfa/channels/canalpelis.py b/plugin.video.alfa/channels/canalpelis.py index cbea6079..3a4a8b5a 100644 --- a/plugin.video.alfa/channels/canalpelis.py +++ b/plugin.video.alfa/channels/canalpelis.py @@ -348,31 +348,38 @@ def episodios(item): return itemlist - def findvideos(item): logger.info() + from lib import generictools + import urllib + import base64 itemlist = [] - data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\(.*?\)|\s{2}| ", "", data) - patron = '
    ' + patron = 'data-post="(\d+)" data-nume="(\d+)".*?img src=\'([^\']+)\'' matches = re.compile(patron, re.DOTALL).findall(data) + for id, option, lang in matches: + lang = scrapertools.find_single_match(lang, '.*?/flags/(.*?).png') + if lang == 'en': + lang = 'VOSE' + post = {'action': 'doo_player_ajax', 'post': id, 'nume': option, 'type':'movie'} + post = urllib.urlencode(post) + test_url = '%swp-admin/admin-ajax.php' % host + new_data = httptools.downloadpage(test_url, post=post, headers={'Referer':item.url}).data + hidden_url = scrapertools.find_single_match(new_data, "src='([^']+)'") + new_data = httptools.downloadpage(hidden_url, follow_redirects=False) + try: + b64_url = scrapertools.find_single_match(new_data.headers['location'], "y=(.*)") + url = base64.b64decode(b64_url) + except: + url = hidden_url + if url != '': + itemlist.append( + Item(channel=item.channel, url=url, title='%s', action='play', language=lang, + infoLabels=item.infoLabels)) - for option, url in matches: - datas = httptools.downloadpage(urlparse.urljoin(host, url), - headers={'Referer': item.url}).data - - patron = ']+src="([^"]+)"' - url = scrapertools.find_single_match(datas, patron) - lang = scrapertools.find_single_match( - data, '
  • <\/b> (.*?)' % option) - lang = lang.replace('Español ', '').replace('B.S.O. ', '') - - server = servertools.get_server_from_url(url) - title = "%s [COLOR yellow](%s) (%s)[/COLOR]" % (item.contentTitle, server.title(), lang) - itemlist.append(item.clone(action='play', url=url, title=title, extra1=title, - server=server, language = lang, text_color=color3)) + itemlist = servertools.get_servers_itemlist(itemlist, lambda x: x.title % x.server.capitalize()) if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'episodios': itemlist.append(Item(channel=__channel__, url=item.url, action="add_pelicula_to_library", extra="findvideos", diff --git a/plugin.video.alfa/channels/datoporn.py b/plugin.video.alfa/channels/datoporn.py index 2d51cf51..b70f37af 100755 --- a/plugin.video.alfa/channels/datoporn.py +++ b/plugin.video.alfa/channels/datoporn.py @@ -1,57 +1,73 @@ # -*- coding: utf-8 -*- +import re + from core import httptools from core import scrapertools -from lib import jsunpack from platformcode import logger -def test_video_exists(page_url): - logger.info("(page_url='%s')" % page_url) +def mainlist(item): + logger.info() + itemlist = [] - data = httptools.downloadpage(page_url).data - - if 'File Not Found' in data or '404 Not Found' in data: - return False, "[Datoporn] El archivo no existe o ha sido borrado" - - return True, "" + itemlist.append(item.clone(action="categorias", title="Categorías", url="http://dato.porn/categories_all", contentType="movie", viewmode="movie")) + itemlist.append(item.clone(title="Buscar...", action="search", contentType="movie", viewmode="movie")) + return itemlist -def get_video_url(page_url, premium=False, user="", password="", video_password=""): - logger.info("url=" + page_url) +def search(item, texto): + logger.info() + item.url = "http://dato.porn/?k=%s&op=search" % texto.replace(" ", "+") + return lista(item) - data = httptools.downloadpage(page_url).data - logger.debug(data) - media_urls = scrapertools.find_multiple_matches(data, 'src: "([^"]+)",.*?label: "([^"]+)"') - #media_urls = scrapertools.find_multiple_matches(data, 'file\:"([^"]+\.mp4)",label:"([^"]+)"') - # if not media_urls: - # match = scrapertools.find_single_match(data, "p,a,c,k(.*?)") - # try: - # data = jsunpack.unpack(match) - # except: - # pass - # media_urls = scrapertools.find_multiple_matches(data, 'file\:"([^"]+\.mp4)",label:"([^"]+)"') - # Extrae la URL - calidades = [] - video_urls = [] - for media_url in sorted(media_urls, key=lambda x: int(x[1][-3:])): - calidades.append(int(media_url[1][-3:])) - try: - title = ".%s %sp [datoporn]" % (media_url[0].rsplit('.', 1)[1], media_url[1][-3:]) - except: - title = ".%s %sp [datoporn]" % (media_url[-4:], media_url[1][-3:]) - video_urls.append([title, media_url[0]]) +def lista(item): + logger.info() + itemlist = [] - sorted(calidades) - m3u8 = scrapertools.find_single_match(data, 'file\:"([^"]+\.m3u8)"') - if not m3u8: - m3u8 = str(scrapertools.find_multiple_matches(data, 'player.updateSrc\({src:.?"([^"]+\.m3u8)"')).replace("['", "").replace("']", "") - calidades = ['720p'] - if m3u8: - video_urls.insert(0, [".m3u8 %s [datoporn]" % calidades[-1], m3u8]) + # Descarga la pagina + data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) - for video_url in video_urls: - logger.info("%s - %s" % (video_url[0], video_url[1])) + # Extrae las entradas + patron = '
    \s*(.*?)<\/span><\/div><\/a>.*?class="title">(.*?)<\/a>.*?<\/a><\/span><\/div> ' + matches = scrapertools.find_multiple_matches(data, patron) + for scrapedurl, scrapedthumbnail, duration, scrapedtitle in matches: + if "/embed-" not in scrapedurl: + #scrapedurl = scrapedurl.replace("dato.porn/", "dato.porn/embed-") + ".html" + scrapedurl = scrapedurl.replace("datoporn.co/", "datoporn.co/embed-") + ".html" + if duration: + scrapedtitle = "%s - %s" % (duration, scrapedtitle) + scrapedtitle += ' gb' + scrapedtitle = scrapedtitle.replace(":", "'") - return video_urls + #logger.debug(scrapedurl + ' / ' + scrapedthumbnail + ' / ' + duration + ' / ' + scrapedtitle) + itemlist.append(item.clone(action="play", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail, + 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)) + + return itemlist + + +def categorias(item): + logger.info() + itemlist = [] + + # Descarga la pagina + data = httptools.downloadpage(item.url).data + + # Extrae las entradas (carpetas) + patron = '
    \s*(.*?).*?(.*?)' + matches = scrapertools.find_multiple_matches(data, patron) + for scrapedurl, scrapedthumbnail, numero, scrapedtitle in matches: + if numero: + scrapedtitle = "%s (%s)" % (scrapedtitle, numero) + + itemlist.append(item.clone(action="lista", title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail)) + + return itemlist diff --git a/plugin.video.alfa/channels/dilo.py b/plugin.video.alfa/channels/dilo.py index 70a52b20..a1c8dfde 100644 --- a/plugin.video.alfa/channels/dilo.py +++ b/plugin.video.alfa/channels/dilo.py @@ -204,14 +204,13 @@ def episodesxseason(item): data = jsontools.load(httptools.downloadpage(seasons_url, post=post, headers=headers).data) infoLabels = item.infoLabels for dict in data: - episode = dict['number'] epi_name = dict['name'] title = '%sx%s - %s' % (season, episode, epi_name) url = '%s%s/' % (host, dict['permalink']) infoLabels['episode'] = episode itemlist.append(Item(channel=item.channel, title=title, action='findvideos', url=url, - contentEpisodeNumber=season, id=item.id, infoLabels=infoLabels)) + contentEpisodeNumber=episode, id=item.id, infoLabels=infoLabels)) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) diff --git a/plugin.video.alfa/channels/fanpelis.py b/plugin.video.alfa/channels/fanpelis.py index aba09ec5..ede3f2d6 100644 --- a/plugin.video.alfa/channels/fanpelis.py +++ b/plugin.video.alfa/channels/fanpelis.py @@ -247,10 +247,17 @@ def episodesxseason(item): def findvideos(item): logger.info() + import urllib + itemlist = [] data = get_source(item.url) - patron = '