diff --git a/plugin.video.alfa/channels/veseriesonline.py b/plugin.video.alfa/channels/veseriesonline.py new file mode 100644 index 00000000..b1ba3b7b --- /dev/null +++ b/plugin.video.alfa/channels/veseriesonline.py @@ -0,0 +1,244 @@ +# -*- coding: utf-8 -*- +# -*- Channel VeSeriesOnline -*- +# -*- Created for Alfa-addon -*- +# -*- By the Alfa Develop Group -*- + +import re + +from channels import autoplay +from channels import filtertools +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 channelselector import get_thumb + +list_language = ['Lat', 'Cast', 'VOSE', 'VO'] +list_quality = [] +list_servers = ['openload', 'netutv', 'streamango', 'streamix', 'powvideo', 'gamovideo'] + +host = 'http://www.veseriesonline.com/' + +def mainlist(item): + logger.info() + + autoplay.init(item.channel, list_servers, list_quality) + + itemlist = [] + + itemlist.append(Item(channel=item.channel, + title="Todas", + action="list_all", + thumbnail=get_thumb('all', auto=True), + url=host + 'archivos/h1/', + )) + + itemlist.append(Item(channel=item.channel, + title="Buscar", + action="search", + url=host+'?s=', + thumbnail=get_thumb('search', auto=True))) + + itemlist = filtertools.show_option(itemlist, item.channel, list_language, list_quality) + autoplay.show_option(item.channel, itemlist) + + return itemlist + +def get_source(url): + logger.info() + data = httptools.downloadpage(url).data + data = re.sub(r'"|\n|\r|\t| |
|\s{2,}', "", data) + return data + + +def list_all(item): + logger.info() + + itemlist = [] + data = get_source(item.url) + patron = "
.*?href=(.*?) class.*?src=(.*?) style.*?

(.*?)

" + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedthumbnail, scrapedtitle in matches: + episode = '' + url = scrapedurl + thumbnail = scrapedthumbnail + if 'Temporada' in scrapedtitle: + episode = scrapertools.find_single_match(scrapedtitle, '.*?Temporada (\d+x\d+)') + scrapedtitle = scrapertools.find_single_match(scrapedtitle, '(.*?) Temporada') + + scrapedtitle = scrapedtitle.replace(' Online','') + contentSerieName = scrapedtitle + if episode != '': + title = '%s - %s' % (scrapedtitle, episode) + else: + title = scrapedtitle + + itemlist.append(Item(channel=item.channel, + action='seasons', + title=title, + url=url, + thumbnail=thumbnail, + contentTitle=scrapedtitle, + context=filtertools.context(item, list_language, list_quality), + contentSerieName=contentSerieName, + )) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + if itemlist != []: + next_page = scrapertools.find_single_match(data ,"") + if next_page != '': + itemlist.append(Item(channel=item.channel, + action="list_all", + title='Siguiente >>>', + url=next_page, + thumbnail='https://s16.postimg.cc/9okdu7hhx/siguiente.png', + )) + return itemlist + +def search(item, texto): + logger.info() + texto = texto.replace(" ", "+") + item.url = item.url + texto + if texto != '': + return list_all(item) + +def seasons(item): + logger.info() + + itemlist = [] + data = get_source(item.url) + patron = 'itemprop=season.*?.*?;>(.*?)<' + matches = re.compile(patron, re.DOTALL).findall(data) + if len(matches) == 0: + patron = '
.*?href=(.*?) class.*?src=(.*?) style.*?title=.*?(Temporada \d+) alt' + matches = re.compile(patron, re.DOTALL).findall(data) + for scrapedurl, scrapedthumb, scrapedtitle in matches: + infoLabels = item.infoLabels + infoLabels['season'] = scrapertools.find_single_match(scrapedtitle, 'Temporada (\d+)') + itemlist.append(Item(channel=item.channel, title=scrapedtitle, url=scrapedurl, action='episodesxseason', + thumbnail=scrapedthumb, infoLabels=infoLabels)) + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + itemlist = itemlist [::-1] + + 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, + extra1='library')) + + return itemlist + +def episodios(item): + logger.info() + itemlist = [] + templist = seasons(item) + for tempitem in templist: + itemlist += episodesxseason(tempitem) + return itemlist + +def episodesxseason(item): + logger.info() + + itemlist = [] + + data = get_source(item.url) + patron = '
  • ' in lang_data: + language.append('Lat') + if 'lang-spa>' in lang_data: + language.append('Cast') + if 'lang-engsub>' in lang_data: + language.append('VOSE') + if 'lang-eng>' in lang_data: + language.append('VO') + + title = '%sx%s - %s %s' % (infoLabels['season'], scrapedepi, scrapedtitle, language) + infoLabels['episode'] = scrapedepi + itemlist.append(Item(channel=item.channel, title=title, url=scrapedurl, action='findvideos', language=language, + infoLabels=infoLabels)) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + itemlist = filtertools.get_links(itemlist, item, list_language) + return itemlist + +def findvideos(item): + logger.info() + itemlist = [] + + data = get_source(item.url) + video_id = scrapertools.find_single_match(data, 'getEnlaces\((\d+)\)') + links_url = '%s%s%s' % (host,'/link/repro.php/',video_id) + online_url = '%s%s%s' % (host, '/link/enlaces_online.php/', video_id) + + # listado de opciones links_url + + data = get_source(links_url) + patron = 'content >

    (.*?)

    .*?class=video.*?src=(.*?) scrolling' + matches = re.compile(patron, re.DOTALL).findall(data) + + for lang_data, scrapedurl in matches: + if 'Latino' in lang_data: + language = 'Lat' + elif 'Español' in lang_data: + language = 'Cast' + else: + language = 'VOSE' + hidden_url = scrapedurl.replace('/i/', '/r/') + data = get_source(hidden_url) + url = scrapertools.find_single_match(data, ':url content=(.*?)>') + title = '%s '+ '[%s]' % language + if url != '': + itemlist.append(Item(channel=item.channel, title=title, url=url, action='play', language=language, + infoLabels=item.infoLabels)) + + # listado de enlaces online_url + data = get_source(online_url) + patron = '.*?href=(.*?) ' + matches = re.compile(patron, re.DOTALL).findall(data) + scrapertools.printMatches(matches) + for lang_data, scrapedurl in matches: + if 'lat' in lang_data: + language = 'Lat' + elif 'spa' in lang_data: + language = 'Cast' + elif 'eng' in lang_data: + language = 'VOSE' + else: + language = 'VO' + video_id = scrapertools.find_single_match(scrapedurl, 'index.php/(\d+)/') + new_url = '%s%s%s%s' % (host, 'ext/index-include.php?id=', video_id, '&tipo=1') + data = get_source(new_url) + video_url = scrapertools.find_single_match(data, '