From 322a91a93606f478121c00b04fb0762c068aa74e Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Mon, 28 May 2018 10:58:29 -0500 Subject: [PATCH] mastorrent: nuevo canal --- plugin.video.alfa/channels/mastorrents.json | 33 ++ plugin.video.alfa/channels/mastorrents.py | 323 ++++++++++++++++++++ 2 files changed, 356 insertions(+) create mode 100644 plugin.video.alfa/channels/mastorrents.json create mode 100644 plugin.video.alfa/channels/mastorrents.py diff --git a/plugin.video.alfa/channels/mastorrents.json b/plugin.video.alfa/channels/mastorrents.json new file mode 100644 index 00000000..6ebae2fc --- /dev/null +++ b/plugin.video.alfa/channels/mastorrents.json @@ -0,0 +1,33 @@ +{ + "id": "mastorrents", + "name": "MasTorrents", + "active": true, + "adult": false, + "language": ["cast","lat"], + "thumbnail": "https://s33.postimg.cc/3y8720l9b/mastorrents.png", + "banner": "", + "version": 1, + "categories": [ + "movie", + "tvshow", + "torrent" + ], + "settings": [ + { + "id": "include_in_newest_peliculas", + "type": "bool", + "label": "Incluir en Novedades - Peliculas", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "include_in_newest_torrent", + "type": "bool", + "label": "Incluir en Novedades - Torrent", + "default": true, + "enabled": true, + "visible": true + } + ] +} \ No newline at end of file diff --git a/plugin.video.alfa/channels/mastorrents.py b/plugin.video.alfa/channels/mastorrents.py new file mode 100644 index 00000000..df53aece --- /dev/null +++ b/plugin.video.alfa/channels/mastorrents.py @@ -0,0 +1,323 @@ +# -*- coding: utf-8 -*- +# -*- Channel MasTorrents -*- +# -*- Created for Alfa-addon -*- +# -*- By the Alfa Develop Group -*- + +import re +from channelselector import get_thumb +from platformcode import logger +from platformcode import config +from core import scrapertools +from core.item import Item +from core import servertools +from core import httptools +from core import tmdb + +host = 'http://www.mastorrents.com/' + +def mainlist(item): + logger.info() + + itemlist = [] + + itemlist.append(item.clone(title="Peliculas", + action="movie_list", + thumbnail=get_thumb("channels_movie.png") + )) + + itemlist.append(item.clone(title="Series", + action="series_list", + thumbnail=get_thumb("channels_tvshow.png") + )) + return itemlist + + +def movie_list(item): + logger.info() + + itemlist = [] + + itemlist.append(item.clone(title="Todas", + action="lista", + url=host+'peliculas', + extra='movie', + thumbnail=get_thumb('all', auto=True) + )) + + itemlist.append(item.clone(title="Generos", + action="genres", + url=host, + extra='movie', + thumbnail=get_thumb('genres', auto=True) + )) + + itemlist.append(item.clone(title="Buscar", + action="search", + url=host + '?pTit=', thumbnail=get_thumb('search', auto=True), + extra='movie' + )) + return itemlist + + +def series_list(item): + logger.info() + + itemlist = [] + + itemlist.append(item.clone(title="Todas", + action="lista", + url=host + 'series', + extra='serie', + thumbnail=get_thumb('all', auto=True) + )) + + itemlist.append(item.clone(title="Generos", + action="genres", + url=host + 'series/', + extra='serie', + thumbnail=get_thumb('genres', auto=True) + )) + + itemlist.append(item.clone(title="Buscar", + action="search", + url=host + 'series/?pTit=', + extra='serie', + thumbnail=get_thumb('search', auto=True) + )) + 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 lista (item): + logger.info () + itemlist = [] + infoLabels = dict() + data = get_source(item.url) + patron = "
.*?
') + import inspect + if next_page !='': + itemlist.append(item.clone(action = "lista", + title = 'Siguiente >>>', + url = next_page + )) + return itemlist + + +def genres(item): + logger.info() + + itemlist = [] + + data = get_source(item.url) + data = scrapertools.find_single_match(data,'Géneros(.+)
') + + patron = '' + + matches = re.compile(patron,re.DOTALL).findall(data) + + for value, title in matches: + url = item.url + value + title = title.decode('latin1').encode('utf8') + itemlist.append(Item(channel=item.channel, title=title, url=url, action='lista')) + return itemlist + +def search(item, texto): + logger.info() + texto = texto.replace(" ", "+") + item.url = item.url + texto + + if texto != '': + return lista(item) + else: + return [] + + +def seasons(item): + logger.info() + itemlist=[] + infoLabels = item.infoLabels + data=get_source(item.url) + patron ='href=javascript:showSeasson\(.*?\); id=.*?>Temporada (.*?)<\/a>' + matches = re.compile(patron, re.DOTALL).findall(data) + + for season in matches: + title='Temporada %s' % season + infoLabels['season'] = season + itemlist.append(Item(channel=item.channel, + title= title, + url=item.url, + action='episodesxseasons', + contentSeasonNumber=season, + contentSerieName=item.contentSerieName, + 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="all_episodes", contentSerieName=item.contentSerieName)) + + return itemlist + +def all_episodes(item): + logger.info() + itemlist = [] + templist = seasons(item) + for tempitem in templist: + itemlist += episodesxseasons(tempitem) + + return itemlist + +def episodesxseasons(item): + logger.info() + + itemlist=[] + + data=get_source(item.url) + patron = "
%sx(.\d+)<\/div>.*?" % item.contentSeasonNumber + patron += "image:url\('(.*?)'.*?href.*?>(%s)<" % item.contentSerieName + matches = re.compile(patron, re.DOTALL).findall(data) + infoLabels=item.infoLabels + for episode, scrapedurl, scrapedthumbnail, scrapedtitle in matches: + contentEpisodeNumber=episode + season = item.contentSeasonNumber + url=scrapedurl + thumbnail=scrapedthumbnail + infoLabels['episode']=episode + title = '%sx%s - %s' % (season, episode, item.contentSerieName) + itemlist.append(Item(channel=item.channel, + action='findvideos', + title=title, + url=url, + thumbnail=thumbnail, + contentSerieName=item.contentSerieName, + contentEpisodeNumber=contentEpisodeNumber, + infoLabels=infoLabels + )) + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + return itemlist[::-1] + + +def findvideos(item): + logger.info() + itemlist=[] + data = get_source(item.url) + patron = "showDownload\(([^\)]+)\);.*?alt=.*?torrent (.*?) " + matches = re.compile(patron, re.DOTALL).findall(data) + + for extra_info, quality in matches: + extra_info= extra_info.replace(",'",'|') + extra_info= extra_info.split('|') + title = '%s [%s]' % ('Torrent', quality.strip()) + if item.extra == 'movie': + url = extra_info[2].strip("'") + else: + url = extra_info[3].strip("'") + server = 'torrent' + + if not '.torrent' in url: + if 'tvsinpagar' in url: + url = url.replace('http://','http://www.') + try: + from_web = httptools.downloadpage(url, follow_redirects=False) + url = from_web.headers['location'] + except: + pass + + if '.torrent' in url: + itemlist.append(Item(channel=item.channel, + title=title, + contentTitle= item.title, + url=url, + action='play', + quality=quality, + server=server, + thumbnail = item.infoLabels['thumbnail'], + infoLabels=item.infoLabels + )) + + if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': + itemlist.append(Item(channel=item.channel, + title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', + url=item.url, + action="add_pelicula_to_library", + extra="findvideos", + contentTitle=item.contentTitle + )) + + return itemlist + + +def newest(category): + logger.info() + item = Item() + try: + if category in ['peliculas', 'torrent']: + item.url = host + 'estrenos-de-cine' + item.extra='movie' + itemlist = lista(item) + if itemlist[-1].title == 'Siguiente >>>': + itemlist.pop() + if category == 'torrent': + + item.url = host+'series' + item.extra = 'serie' + itemlist.extend(lista(item)) + + if itemlist[-1].title == 'Siguiente >>>': + itemlist.pop() + except: + import sys + for line in sys.exc_info(): + logger.error("%s" % line) + return [] + + return itemlist