diff --git a/plugin.video.alfa/channels/abtoon.json b/plugin.video.alfa/channels/abtoon.json new file mode 100644 index 00000000..0e1ba854 --- /dev/null +++ b/plugin.video.alfa/channels/abtoon.json @@ -0,0 +1,12 @@ +{ + "id": "abtoon", + "name": "abtoon", + "active": true, + "adult": false, + "language": ["lat"], + "thumbnail": "http://i.imgur.com/s6CBxlw.png", + "banner": "http://i.imgur.com/c1YTgNT.png", + "categories": [ + "tvshow" + ] +} \ No newline at end of file diff --git a/plugin.video.alfa/channels/abtoon.py b/plugin.video.alfa/channels/abtoon.py new file mode 100644 index 00000000..5d7653e5 --- /dev/null +++ b/plugin.video.alfa/channels/abtoon.py @@ -0,0 +1,225 @@ +# -*- coding: utf-8 -*- + +import re + +from channels import renumbertools +from channelselector import get_thumb +from core import httptools +from core import scrapertools +from core import servertools +from core import tmdb +from core.item import Item +from platformcode import config, logger +from channels import filtertools +from channels import autoplay +from lib import gktools + +IDIOMAS = {'latino': 'Latino'} +list_language = IDIOMAS.values() +list_servers = ['openload' + ] +list_quality = ['default'] + + +host = "https://abtoon.net" + + +def mainlist(item): + logger.info() + thumb_series = get_thumb("channels_tvshow.png") + autoplay.init(item.channel, list_servers, list_quality) + + itemlist = list() + + itemlist.append( + Item(channel=item.channel, action="lista", title="Series", contentSerieName="Series", url=host, thumbnail=thumb_series, page=0)) + #itemlist.append( + # Item(channel=item.channel, action="lista", title="Live Action", contentSerieName="Live Action", url=host+"/liveaction", thumbnail=thumb_series, page=0)) + #itemlist.append( + # Item(channel=item.channel, action="peliculas", title="Películas", contentSerieName="Películas", url=host+"/peliculas", thumbnail=thumb_series, page=0)) + itemlist = renumbertools.show_option(item.channel, itemlist) + autoplay.show_option(item.channel, itemlist) + return itemlist + + +def lista(item): + logger.info() + + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + patron = '10: + itemlist.append( + Item(channel=item.channel, contentSerieName=item.contentSerieName, title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=url, action="lista", page=0)) + else: + itemlist.append( + Item(channel=item.channel, contentSerieName=item.contentSerieName, title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=item.url, action="lista", page=item.page + 1)) + + tmdb.set_infoLabels(itemlist) + return itemlist + +def peliculas(item): + logger.info() + + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + patron = '
(.+?)<\/span>' + matches = scrapertools.find_multiple_matches(data, patron) + # Paginacion + num_items_x_pagina = 30 + min = item.page * num_items_x_pagina + min=min-item.page + max = min + num_items_x_pagina - 1 + b=0 + for scrapedplot,scrapedthumbnail, scrapedtitle, scrapedyear, scrapedurl in matches[min:max]: + b=b+1 + url = host + scrapedurl + thumbnail = host +scrapedthumbnail + context = renumbertools.context(item) + context2 = autoplay.context + context.extend(context2) + itemlist.append(item.clone(title=scrapedtitle+"-"+scrapedyear, url=url, action="findvideos", thumbnail=thumbnail, plot=scrapedplot, + show=scrapedtitle,contentSerieName=scrapedtitle,context=context)) + if b<29: + pass + else: + itemlist.append( + Item(channel=item.channel, contentSerieName=item.contentSerieName, title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=item.url, action="peliculas", page=item.page + 1)) + + tmdb.set_infoLabels(itemlist) + return itemlist + +def episodios(item): + logger.info() + + itemlist = [] + data = httptools.downloadpage(item.url).data + # obtener el numero total de episodios + total_episode = 0 + + patron_caps = '
  • (.*?) - (.*?)<\/a><\/li>' + matches = scrapertools.find_multiple_matches(data, patron_caps) + patron_info = '.+?

    ([^"]+)<\/h1>

    (.+?)<\/p>' + scrapedthumbnail, show, scrapedplot = scrapertools.find_single_match(data, patron_info) + scrapedthumbnail = host + scrapedthumbnail + + for link, cap, name in matches: + + title = "" + pat = "$%&" + # varios episodios en un enlace + if len(name.split(pat)) > 1: + i = 0 + for pos in name.split(pat): + i = i + 1 + total_episode += 1 + season, episode = renumbertools.numbered_for_tratk(item.channel, item.contentSerieName, 1, total_episode) + if len(name.split(pat)) == i: + title += "%sx%s " % (season, str(episode).zfill(2)) + else: + title += "%sx%s_" % (season, str(episode).zfill(2)) + else: + total_episode += 1 + season, episode = renumbertools.numbered_for_tratk(item.channel,item.contentSerieName, 1, total_episode) + + title += "%sx%s " % (season, str(episode).zfill(2)) + + url = host + "/" + link + if "DISPONIBLE" in name: + title += "No Disponible aún" + else: + title += name + itemlist.append( + Item(channel=item.channel, action="findvideos", title=title, url=url, show=show, plot=scrapedplot, + thumbnail=scrapedthumbnail)) + + if config.get_videolibrary_support() and len(itemlist) > 0: + itemlist.append(Item(channel=item.channel, title="[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]", url=item.url, + action="add_serie_to_library", extra="episodios", show=show)) + + return itemlist + +def findvideos(item): + import base64 + logger.info() + itemlist = [] + data = httptools.downloadpage(item.url).data + _sl = scrapertools.find_single_match(data, 'var abi = ([^;]+);') + sl = eval(_sl) + buttons = scrapertools.find_multiple_matches(data,'class="bsel" sl="(.+?)"')#[0,1,2,3,4] + for ids in buttons: + id = int(ids) + url_end = golink(id,sl) + new_url = "https://abtoon.net/" + "embed/" + sl[0] + "/" + sl[1] + "/" + str(id) + "/" + sl[2] + url_end + data_new = httptools.downloadpage(new_url).data + data_new = re.sub(r"\n|\r|\t|\s{2}| ", "", data_new) + logger.info("asdasdasdcc"+data_new) + valor1, valor2 = scrapertools.find_single_match(data_new, 'var x0x = \["[^"]*", "([^"]+)", "[^"]*", "[^"]*", "([^"]+)"\];') + try: + url = base64.b64decode(gktools.transforma_gsv(valor2, base64.b64decode(valor1))) + if 'download' in url: + url = url.replace('download', 'preview') + title = '%s' + itemlist.append(Item(channel=item.channel, title=title, url=url, action='play', language='latino', + infoLabels=item.infoLabels)) + except Exception as e: + logger.info(e) + itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) + # Requerido para FilterTools + itemlist = filtertools.get_links(itemlist, item, list_language) + # Requerido para AutoPlay + autoplay.start(itemlist, item) + + return itemlist + +def golink(ida,sl): + a=ida + b=[3,10,5,22,31] + c=1 + d="" + e=sl[2] + for i in range(len(b)): + d=d+substr(e,b[i]+a,c) + return d + +def substr(st,a,b): + return st[a:a+b] \ No newline at end of file diff --git a/plugin.video.alfa/channels/animeflv.py b/plugin.video.alfa/channels/animeflv.py index 9752478b..e20e66e6 100644 --- a/plugin.video.alfa/channels/animeflv.py +++ b/plugin.video.alfa/channels/animeflv.py @@ -192,7 +192,9 @@ def episodios(item): episodes = eval(scrapertools.find_single_match(data, 'var episodes = (.*?);')) for episode in episodes: url = '%s/ver/%s/%s-%s' % (HOST, episode[1], info[2], episode[0]) - title = '1x%s Episodio %s' % (episode[0], episode[0]) + season, episodeRenumber = renumbertools.numbered_for_tratk(item.channel, item.contentSerieName, 1, episode[0]) + #title = '1x%s Episodio %s' % (episode[0], episode[0]) + title = '%sx%s Episodio %s' % (season, episodeRenumber, episodeRenumber) 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: diff --git a/plugin.video.alfa/channels/anitoonstv.py b/plugin.video.alfa/channels/anitoonstv.py index ac4e623c..733a4eda 100644 --- a/plugin.video.alfa/channels/anitoonstv.py +++ b/plugin.video.alfa/channels/anitoonstv.py @@ -116,7 +116,7 @@ def lista(item): itemlist.append(item.clone(title=scrapedtitle, contentSerieName=show,url=scrapedurl, plot=scrapedplot, thumbnail=scrapedthumbnail, action="episodios", context=context)) tmdb.set_infoLabels(itemlist, seekTmdb=True) - itemlist.append(Item(channel=item.channel, url=item.url, range=next_page, title='Pagina Siguente >>>', contentTitle=item.title, action='lista')) + itemlist.append(Item(channel=item.channel, url=item.url, range=next_page, title='Pagina Siguente >>>', contentTitle=item.contentTitle, action='lista')) return itemlist diff --git a/plugin.video.alfa/channels/cinedetodo.py b/plugin.video.alfa/channels/cinedetodo.py index 6ada755c..07af0a04 100644 --- a/plugin.video.alfa/channels/cinedetodo.py +++ b/plugin.video.alfa/channels/cinedetodo.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# -*- Channel CinemaHD -*- +# -*- Channel CineDeTodo -*- # -*- Created for Alfa-addon -*- # -*- By the Alfa Develop Group -*- @@ -16,39 +16,61 @@ from channels import autoplay from channels import filtertools -host = 'http://www.cinedetodo.com/' + +host = 'https://www.cinedetodo.net/' IDIOMAS = {'Latino': 'LAT'} list_language = IDIOMAS.values() list_quality = [] -list_servers = ['fastplay', 'rapidvideo', 'streamplay', 'flashx', 'streamito', 'streamango', 'vidoza'] +list_servers = ['gounlimited', 'rapidvideo', 'vshare', 'clipwatching', 'jawclowd', 'streamango'] def mainlist(item): logger.info() - autoplay.init(item.channel, list_servers, list_quality) itemlist = list() - itemlist.append(item.clone(title="Ultimas", action="list_all", url=host, thumbnail=get_thumb('last', auto=True))) - itemlist.append(item.clone(title="Generos", action="section", section='genre', - thumbnail=get_thumb('genres', auto=True))) - # itemlist.append(item.clone(title="Por Calidad", action="section", section='quality', - # thumbnail=get_thumb('quality', auto=True))) - itemlist.append(item.clone(title="Alfabetico", action="section", section='alpha', - thumbnail=get_thumb('alphabet', auto=True))) - itemlist.append(item.clone(title="Buscar", action="search", url=host+'?s=', - thumbnail=get_thumb('search', auto=True))) + + itemlist.append(Item(channel=item.channel, title="Películas", action="sub_menu", url=host, + thumbnail=get_thumb('last', auto=True), type='MovieList')) + + itemlist.append(Item(channel=item.channel, title="Series", action="sub_menu", url=host, + thumbnail=get_thumb('last', auto=True), type='Series')) + + itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host + '?s=', + thumbnail=get_thumb('search', auto=True))) autoplay.show_option(item.channel, itemlist) return itemlist -def get_source(url): +def sub_menu(item): logger.info() - data = httptools.downloadpage(url).data - data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) + + itemlist = [] + + itemlist.append(Item(channel=item.channel, title="Ultimas", action="list_all", url=host, + thumbnail=get_thumb('last', auto=True), type=item.type)) + + itemlist.append(Item(channel=item.channel, title="Generos", action="section", section='genre', + thumbnail=get_thumb('genres', auto=True), type=item.type )) + + if item.type != 'Series': + itemlist.append(Item(channel=item.channel, title="Alfabetico", action="section", section='alpha', + thumbnail=get_thumb('alphabet', auto=True), type=item.type)) + + + + return itemlist + +def get_source(url, referer=None): + logger.info() + if referer is None: + data = httptools.downloadpage(url).data + else: + data = httptools.downloadpage(url, headers={'Referer':referer}).data + data = re.sub(r'\n|\r|\t| |
    |\s{2,}', "", data) return data @@ -57,60 +79,86 @@ def list_all(item): itemlist = [] data = get_source(item.url) - if item.section == 'alpha': - patron = '\d+.*?
    (.*?).*?' - patron += '(\d{4})' + full_data = data + if item.section != '': + data = scrapertools.find_single_match(data, 'class="MovieList NoLmtxt(.*?)') else: - patron = '

    .*?.*?'.*?class="MovieList NoLmtxt(.*?)' % item.type) + + if item.section == 'alpha': + patron = '\d+.*?') + url_next_page = scrapertools.find_single_match(full_data,'') if url_next_page: - itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, action='list_all')) + itemlist.append(Item(channel=item.channel, title="Siguiente >>", url=url_next_page, action='list_all', + type=item.type)) return itemlist def section(item): logger.info() itemlist = [] - data = get_source(host) + if item.type == 'Series': + url = host + '?tr_post_type=2' + else: + url = host + '?tr_post_type=1' + data = get_source(url) action = 'list_all' - if item.section == 'quality': - patron = 'menu-item-object-category.*?menu-item-\d+>(.*?)<\/a>' - elif item.section == 'genre': - patron = '(.*?)' - elif item.section == 'year': - patron = 'custom menu-item-15\d+>(\d{4})<\/a><\/li>' + + + if item.section == 'genre': + patron = '(.*?)' elif item.section == 'alpha': - patron = '
  • (.*?)' + patron = '
  • (.*?)' action = 'list_all' + matches = re.compile(patron, re.DOTALL).findall(data) for data_one, data_two in matches: @@ -118,38 +166,104 @@ def section(item): url = data_one title = data_two if title != 'Ver más': - new_item = Item(channel=item.channel, title= title, url=url, action=action, section=item.section) + if item.type == 'Series': + url =url + '?tr_post_type=2' + else: + url = url + '?tr_post_type=1' + if 'serie'in title.lower(): + continue + new_item = Item(channel=item.channel, title= title, url=url, action=action, section=item.section, + type=item.type) itemlist.append(new_item) return itemlist +def seasons(item): + logger.info() + + itemlist=[] + + data=get_source(item.url) + patron='Temporada (\d+)' + matches = re.compile(patron, re.DOTALL).findall(data) + + infoLabels = item.infoLabels + for season in matches: + season = season.lower().replace('temporada','') + infoLabels['season']=season + title = 'Temporada %s' % season + itemlist.append(Item(channel=item.channel, title=title, url=item.url, action='episodesxseasons', + infoLabels=infoLabels)) + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + if config.get_videolibrary_support() and len(itemlist) > 0: + itemlist.append( + Item(channel=item.channel, title='[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]', url=item.url, + action="add_serie_to_library", extra="episodios", contentSerieName=item.contentSerieName)) + + return itemlist + +def episodios(item): + logger.info() + itemlist = [] + templist = seasons(item) + for tempitem in templist: + itemlist += episodesxseasons(tempitem) + + return itemlist + +def episodesxseasons(item): + logger.info() + + itemlist = [] + + full_data=get_source(item.url) + data = scrapertools.find_single_match(full_data, 'Temporada \d+.*?') + patron='(\d+)<.*?([^<]+)<' + matches = re.compile(patron, re.DOTALL).findall(data) + + infoLabels = item.infoLabels + + for scrapedepisode, scrapedurl, scrapedtitle in matches: + + infoLabels['episode'] = scrapedepisode + url = scrapedurl + title = '%sx%s - %s' % (infoLabels['season'], infoLabels['episode'], scrapedtitle) + + itemlist.append(Item(channel=item.channel, title= title, url=url, action='findvideos', infoLabels=infoLabels)) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + return itemlist + + + def findvideos(item): logger.info() itemlist = [] data = get_source(item.url) data = scrapertools.decodeHtmlentities(data) - - patron = 'id=(Opt\d+)>.*?src=(.*?) frameborder.*?' + patron = 'id="(Opt\d+)">.*?src="([^"]+)" frameborder.*?' matches = re.compile(patron, re.DOTALL).findall(data) for option, scrapedurl in matches: scrapedurl = scrapedurl.replace('"','').replace('&','&') data_video = get_source(scrapedurl) - url = scrapertools.find_single_match(data_video, '
    .*?src=(.*?) frameborder') - opt_data = scrapertools.find_single_match(data,'%s>.*?.*?(.*?)'%option).split('-') + url = scrapertools.find_single_match(data_video, '
    .*?src="([^"]+)" frameborder') + opt_data = scrapertools.find_single_match(data,'"%s">.*?.*?(.*?)'%option).split('-') language = opt_data[0].strip() - language = language.replace('(','').replace(')','') + language = re.sub('\(|\)', '', language) quality = opt_data[1].strip() if url != '' and 'youtube' not in url: - itemlist.append(item.clone(title='%s', url=url, language=IDIOMAS[language], quality=quality, action='play')) + itemlist.append(Item(channel=item.channel, title='%s', url=url, language=IDIOMAS[language], quality=quality, + action='play', infoLabels=item.infoLabels)) elif 'youtube' in url: - trailer = item.clone(title='Trailer', url=url, action='play', server='youtube') + trailer = Item(channel=item.channel, title='Trailer', url=url, action='play', server='youtube') itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % '%s [%s] [%s]'%(i.server.capitalize(), i.language, i.quality)) - tmdb.set_infoLabels_itemlist(itemlist, True) try: itemlist.append(trailer) except: @@ -175,7 +289,7 @@ def search(item, texto): logger.info() texto = texto.replace(" ", "+") item.url = item.url + texto - + item.section = 'search' if texto != '': return list_all(item) else: @@ -190,11 +304,11 @@ def newest(categoria): if categoria in ['peliculas','latino']: item.url = host elif categoria == 'infantiles': - item.url = host+'/animacion' + item.url = host+'animacion/?tr_post_type=1' elif categoria == 'terror': - item.url = host+'/terror' - elif categoria == 'documentales': - item.url = host+'/documental' + item.url = host+'terror/?tr_post_type=1' + item.type = 'MovieList' + item.section = 'search' itemlist = list_all(item) if itemlist[-1].title == 'Siguiente >>': itemlist.pop() diff --git a/plugin.video.alfa/channels/cinemahd.py b/plugin.video.alfa/channels/cinemahd.py index 9bc60787..775ba87e 100644 --- a/plugin.video.alfa/channels/cinemahd.py +++ b/plugin.video.alfa/channels/cinemahd.py @@ -16,41 +16,61 @@ from channels import autoplay from channels import filtertools -host = 'http://www.cinemahd.co/' + +host = 'https://www.cinemahd.co/' IDIOMAS = {'Latino': 'LAT'} list_language = IDIOMAS.values() list_quality = [] -list_servers = ['fastplay', 'rapidvideo', 'streamplay', 'flashx', 'streamito', 'streamango', 'vidoza'] +list_servers = ['gounlimited', 'rapidvideo', 'vshare', 'clipwatching', 'jawclowd', 'streamango'] def mainlist(item): logger.info() - autoplay.init(item.channel, list_servers, list_quality) itemlist = list() - itemlist.append(Item(channel=item.channel, title="Ultimas", action="list_all", url=host, thumbnail=get_thumb('last', auto=True))) - itemlist.append(Item(channel=item.channel, title="Generos", action="section", section='genre', - thumbnail=get_thumb('genres', auto=True))) - itemlist.append(Item(channel=item.channel, title="Por Calidad", action="section", section='quality', - thumbnail=get_thumb('quality', auto=True))) - itemlist.append(Item(channel=item.channel, title="Por Año", action="section", section='year', - thumbnail=get_thumb('year', auto=True))) - itemlist.append(Item(channel=item.channel, title="Alfabetico", action="section", section='alpha', - thumbnail=get_thumb('alphabet', auto=True))) - itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host+'?s=', - thumbnail=get_thumb('search', auto=True))) + + itemlist.append(Item(channel=item.channel, title="Películas", action="sub_menu", url=host, + thumbnail=get_thumb('last', auto=True), type='MovieList')) + + itemlist.append(Item(channel=item.channel, title="Series", action="sub_menu", url=host, + thumbnail=get_thumb('last', auto=True), type='Series')) + + itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host + '?s=', + thumbnail=get_thumb('search', auto=True))) autoplay.show_option(item.channel, itemlist) return itemlist -def get_source(url): +def sub_menu(item): logger.info() - data = httptools.downloadpage(url).data - data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) + + itemlist = [] + + itemlist.append(Item(channel=item.channel, title="Ultimas", action="list_all", url=host, + thumbnail=get_thumb('last', auto=True), type=item.type)) + + itemlist.append(Item(channel=item.channel, title="Generos", action="section", section='genre', + thumbnail=get_thumb('genres', auto=True), type=item.type )) + + if item.type != 'Series': + itemlist.append(Item(channel=item.channel, title="Alfabetico", action="section", section='alpha', + thumbnail=get_thumb('alphabet', auto=True), type=item.type)) + + + + return itemlist + +def get_source(url, referer=None): + logger.info() + if referer is None: + data = httptools.downloadpage(url).data + else: + data = httptools.downloadpage(url, headers={'Referer':referer}).data + data = re.sub(r'\n|\r|\t| |
    |\s{2,}', "", data) return data @@ -60,14 +80,18 @@ def list_all(item): data = get_source(item.url) full_data = data - data = scrapertools.find_single_match(data, '
      ') + if item.section != '': + data = scrapertools.find_single_match(data, 'class="MovieList NoLmtxt(.*?)
    ') + else: + data = scrapertools.find_single_match(data, '