From c2d3e34f6b650b6bea8d5c2652799819e9ff8c61 Mon Sep 17 00:00:00 2001 From: Intel1 <25161862+Intel11@users.noreply.github.com> Date: Tue, 23 Jan 2018 17:03:23 -0500 Subject: [PATCH 1/6] pepecine: updated --- plugin.video.alfa/channels/pepecine.py | 572 ++++++++++--------------- 1 file changed, 222 insertions(+), 350 deletions(-) diff --git a/plugin.video.alfa/channels/pepecine.py b/plugin.video.alfa/channels/pepecine.py index 304c15c7..4ee8ed34 100755 --- a/plugin.video.alfa/channels/pepecine.py +++ b/plugin.video.alfa/channels/pepecine.py @@ -1,4 +1,7 @@ # -*- coding: utf-8 -*- +# -*- Channel PepeCine -*- +# -*- Created for Alfa-addon -*- +# -*- By the Alfa Develop Group -*- import re import urlparse @@ -11,383 +14,252 @@ from core import tmdb from core.item import Item, InfoLabels from platformcode import config, logger -__url_base__ = "http://pepecine.net" -__chanel__ = "pepecine" -fanart_host = "https://d12.usercdn.com/i/02278/u875vjx9c0xs.png" +host = "https://pepecine.tv" +perpage = 20 +def mainlist1(item): + logger.info() + itemlist = [] + itemlist.append(Item(channel=item.channel, title="Películas", action='movies_menu')) + #itemlist.append(item.clone(title="Series", action='tvshows_menu')) + return itemlist def mainlist(item): logger.info() - itemlist = [] - url_peliculas = urlparse.urljoin(__url_base__, "plugins/ultimas-peliculas-updated.php") - itemlist.append( - Item(channel=__chanel__, title="Películas", text_color="0xFFEB7600", text_bold=True, fanart=fanart_host, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/movies.png")) - itemlist.append(Item(channel=__chanel__, action="listado", title=" Novedades", page=0, viewcontent="movies", - text_color="0xFFEB7600", extra="movie", fanart=fanart_host, url=url_peliculas, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/movies.png")) - itemlist.append(Item(channel=__chanel__, action="sub_filtrar", title=" Filtrar películas por género", - text_color="0xFFEB7600", extra="movie", fanart=fanart_host, url=url_peliculas, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/movies_filtrar.png")) - itemlist.append(Item(channel=__chanel__, action="search", title=" Buscar películas por título", - text_color="0xFFEB7600", extra="movie", fanart=fanart_host, url=url_peliculas, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/movies_buscar.png")) - - url_series = urlparse.urljoin(__url_base__, "plugins/series-episodios-updated.php") - itemlist.append( - Item(channel=__chanel__, title="Series", text_color="0xFFEB7600", text_bold=True, fanart=fanart_host, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/tv.png")) - itemlist.append(Item(channel=__chanel__, action="listado", title=" Novedades", page=0, viewcontent="tvshows", - text_color="0xFFEB7600", extra="series", fanart=fanart_host, url=url_series, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/tv.png")) - itemlist.append(Item(channel=__chanel__, action="sub_filtrar", title=" Filtrar series por género", - text_color="0xFFEB7600", extra="series", fanart=fanart_host, url=url_series, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/tv_filtrar.png")) - itemlist.append(Item(channel=__chanel__, action="search", title=" Buscar series por título", - text_color="0xFFEB7600", extra="series", fanart=fanart_host, url=url_series, - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/tv_buscar.png")) - itemlist.append(Item(channel=__chanel__, action="listado", title=" Ultimos episodios actualizados", - text_color="0xFFEB7600", extra="series_novedades", fanart=fanart_host, - url=urlparse.urljoin(__url_base__, "plugins/ultimos-capitulos-updated.php"), - thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/tv.png")) - + itemlist.append(Item(channel=item.channel, + title="Ultimas", + url=host+'/tv-peliculas-online', + action='list_latest', + indexp=1, + type='movie')) + itemlist.append(Item(channel=item.channel, + title="Todas", + url= host+'/ver-online', + action='list_all', + page='1', + type='movie')) + itemlist.append(Item(channel=item.channel, + title="Género", + url= host, + action='genero', + page='1', + type='movie')) + itemlist.append(Item(channel=item.channel, title = "", action ="")) + itemlist.append(Item(channel=item.channel, + title="Buscar", + url= host+'/esta-online?q=', + action='search', + page='1', + type='movie')) return itemlist -def sub_filtrar(item): +def genero(item): logger.info() - itemlist = [] - generos = ("acción", "animación", "aventura", "ciencia ficción", "comedia", "crimen", - "documental", "drama", "familia", "fantasía", "guerra", "historia", "misterio", - "música", "musical", "romance", "terror", "thriller", "western") - thumbnail = ('https://d12.usercdn.com/i/02278/spvnq8hghtok.jpg', - 'https://d12.usercdn.com/i/02278/olhbpe7phjas.jpg', - 'https://d12.usercdn.com/i/02278/8xm23q2vewtt.jpg', - 'https://d12.usercdn.com/i/02278/o4vuvd7q4bau.jpg', - 'https://d12.usercdn.com/i/02278/v7xq7k9bj3dh.jpg', - 'https://d12.usercdn.com/i/02278/yo5uj9ff7jmg.jpg', - 'https://d12.usercdn.com/i/02278/ipeodwh6vw6t.jpg', - 'https://d12.usercdn.com/i/02278/0c0ra1wb11ro.jpg', - 'https://d12.usercdn.com/i/02278/zn85t6f2oxdv.jpg', - 'https://d12.usercdn.com/i/02278/ipk94gsdqzwa.jpg', - 'https://d12.usercdn.com/i/02278/z5hsi6fr4yri.jpg', - 'https://d12.usercdn.com/i/02278/nq0jvyp7vlb9.jpg', - 'https://d12.usercdn.com/i/02278/tkbe7p3rjmps.jpg', - 'https://d12.usercdn.com/i/02278/is60ge4zv1ve.jpg', - 'https://d12.usercdn.com/i/02278/86ubk310hgn8.jpg', - 'https://d12.usercdn.com/i/02278/ph1gfpgtljf7.jpg', - 'https://d12.usercdn.com/i/02278/bzp3t2edgorg.jpg', - 'https://d12.usercdn.com/i/02278/31i1xkd8m30b.jpg', - 'https://d12.usercdn.com/i/02278/af05ulgs20uf.jpg') + itemlist=[] + data = httptools.downloadpage(item.url).data + data = data.replace("\n","") + bloque = scrapertools.find_single_match(data, 'Peliculas
.*?SlideMenu1_Folder">.*?') + patron = ')') - idioma = i["label"].replace(flag, "") - title = '%s %sx%s (%s)' % (i["title"], infoLabels["season"], infoLabels["episode"], idioma) - url = urlparse.urljoin(__url_base__, "episodio-online/" + str(i["id"])) - - if i.has_key("poster") and i["poster"]: - thumbnail = re.compile("/w\d{3}/").sub("/w500/", i["poster"]) - else: - thumbnail = item.thumbnail - if i.has_key("background") and i["background"]: - fanart = i["background"] - else: - fanart = item.fanart - - # Rellenamos el diccionario de infoLabels - infoLabels['title_id'] = i['id'] # title_id: identificador de la pelicula/serie en pepecine.com - if i['genre']: infoLabels['genre'] = i['genre'] - if i['year']: infoLabels['year'] = i['year'] - # if i['tagline']: infoLabels['plotoutline']=i['tagline'] - if i['plot']: - infoLabels['plot'] = i['plot'] - else: - infoLabels['plot'] = "" - if i['runtime']: infoLabels['duration'] = int(i['runtime']) * 60 - if i['imdb_rating']: - infoLabels['rating'] = i['imdb_rating'] - elif i['tmdb_rating']: - infoLabels['rating'] = i['tmdb_rating'] - if i['tmdb_id']: infoLabels['tmdb_id'] = i['tmdb_id'] - if i['imdb_id']: infoLabels['imdb_id'] = i['imdb_id'] - - newItem = Item(channel=item.channel, action=action, title=title, url=url, extra=item.extra, - fanart=fanart, thumbnail=thumbnail, viewmode="movie_with_plot", # viewcontent=viewcontent, - language=idioma, text_color="0xFFFFCE9C", infoLabels=infoLabels) - newItem.year = i['year'] - newItem.contentTitle = i['title'] - if 'season' in infoLabels and infoLabels['season']: - newItem.contentSeason = infoLabels['season'] - if 'episode' in infoLabels and infoLabels['episode']: - newItem.contentEpisodeNumber = infoLabels['episode'] - itemlist.append(newItem) - - # Obtenemos los datos basicos mediante multihilos - tmdb.set_infoLabels(itemlist) - - # Paginacion - if len(data_dict["result"]) > limit: - itemlist.append(item.clone(text_color="0xFF994D00", title=">> Pagina siguiente >>", page=item.page + 1)) - - return itemlist - - -def get_temporadas(item): - logger.info() - - itemlist = [] - infoLabels = {} - - data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) - patron = 'vars.title =(.*?)};' - try: - data_dict = jsontools.load(scrapertools.get_match(data, patron) + '}') - except: - return itemlist # Devolvemos lista vacia - - if item.extra == "serie_add": - itemlist = get_episodios(item) - + texto = texto.replace(" ", "+") + item.url = item.url + texto + item.extra = "busca" + if texto != '': + return sub_search(item) else: - if len(data_dict["season"]) == 1: - # Si solo hay una temporada ... - item.infoLabels['season'] = data_dict["season"][0]["number"] - itemlist = get_episodios(item) - - else: # ... o si hay mas de una temporada - item.viewcontent = "seasons" - data_dict["season"].sort(key=lambda x: (x['number'])) # ordenamos por numero de temporada - for season in data_dict["season"]: - # filtramos enlaces por temporada - enlaces = filter(lambda l: l["season"] == season['number'], data_dict["link"]) - if enlaces: - item.infoLabels['season'] = season['number'] - title = '%s Temporada %s' % (item.title, season['number']) - - itemlist.append(item.clone(action="get_episodios", title=title, - text_color="0xFFFFCE9C", viewmode="movie_with_plot")) - - # Obtenemos los datos de todas las temporadas mediante multihilos - tmdb.set_infoLabels(itemlist) - - if config.get_videolibrary_support() and itemlist: - infoLabels = {'tmdb_id': item.infoLabels['tmdb_id'], 'tvdb_id': item.infoLabels['tvdb_id'], - 'imdb_id': item.infoLabels['imdb_id']} - itemlist.append( - Item(channel=item.channel, title="Añadir esta serie a la videoteca", text_color="0xFFe5ffcc", - action="add_serie_to_library", extra='get_episodios###serie_add', url=item.url, - contentSerieName=data_dict["title"], infoLabels=infoLabels, - thumbnail='https://raw.githubusercontent.com/master-1970/resources/master/images/channels/pepecine/tv.png')) - - return itemlist + return [] -def get_episodios(item): +def sub_search(item): logger.info() itemlist = [] - # infoLabels = item.infoLabels - - data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) - patron = 'vars.title =(.*?)};' - try: - data_dict = jsontools.load(scrapertools.get_match(data, patron) + '}') - except: - return itemlist # Devolvemos lista vacia - - # Agrupar enlaces por episodios temXcap - temXcap_dict = {} - for link in data_dict['link']: - try: - season = str(int(link['season'])) - episode = str(int(link['episode'])).zfill(2) - except: - continue - - if int(season) != item.infoLabels["season"] and item.extra != "serie_add": - # Descartamos episodios de otras temporadas, excepto si los queremos todos - continue - - title_id = link['title_id'] - id = season + "x" + episode - if id in temXcap_dict: - l = temXcap_dict[id] - l.append(link) - temXcap_dict[id] = l - else: - temXcap_dict[id] = [link] - - # Ordenar lista de enlaces por temporada y capitulo - temXcap_list = temXcap_dict.items() - temXcap_list.sort(key=lambda x: (int(x[0].split("x")[0]), int(x[0].split("x")[1]))) - for episodio in temXcap_list: - title = '%s (%s)' % (item.contentSerieName, episodio[0]) - item.infoLabels['season'], item.infoLabels['episode'] = episodio[0].split('x') - itemlist.append(item.clone(action="findvideos", title=title, - viewmode="movie_with_plot", text_color="0xFFFFCE9C")) - - if item.extra != "serie_add": - # Obtenemos los datos de todos los capitulos de la temporada mediante multihilos - tmdb.set_infoLabels(itemlist) - for i in itemlist: - # Si el capitulo tiene nombre propio añadirselo al titulo del item - title = "%s: %s" % (i.title, i.infoLabels['title']) - i.title = title - + data = httptools.downloadpage(item.url).data + f1 = "Peliculas" + action = "findvideos" + if item.type == "series": + action = "list_all" + f1 = "Series" + patron = 'Ver %s .*?id="%s' %(f1, item.type) + bloque = scrapertools.find_single_match(data, patron) + patron = 'col-sm-4 pretty-figure">\s*|\s{2,}', "", data) + return data + + +def list_latest(item): + logger.info() + itemlist = [] + data = get_source(item.url) + data_url= scrapertools.find_single_match(data,'= item.indexp and count < item.indexp + perpage: + path = scrapertools.find_single_match(thumbnail, "w\w+(/\w+.....)") + filtro_list = {"poster_path": path} + filtro_list = filtro_list.items() + itemlist.append(Item(channel=item.channel, + title=title, + fulltitle=title, + contentTitle=title, + url=host+url, + thumbnail=thumbnail, + language=language, + infoLabels={'filtro': filtro_list}, + extra="one", + action='findvideos')) + tmdb.set_infoLabels(itemlist) + item.indexp += perpage + itemlist.append(Item(channel=item.channel, + title="Siguiente >>", + url=item.url, + extra="one", + indexp=item.indexp, + action='list_latest')) + return itemlist + + +def list_all(item): + logger.info() + itemlist=[] + genero = scrapertools.find_single_match(item.url, "genre=(\w+)") + data= get_source(item.url) + token = scrapertools.find_single_match(data, "token:.*?'(.*?)'") + url = host+'/titles/paginate?_token=%s&perPage=24&page=%s&order=mc_num_of_votesDesc&type=%s&minRating=&maxRating=&availToStream=1&genres[]=%s' % (token, item.page, item.type, genero) + data = httptools.downloadpage(url).data + dict_data = jsontools.load(data) + items = dict_data['items'] + for dict in items: + new_item = Item(channel=item.channel, + title=dict['title']+' [%s]' % dict['year'], + plot = dict['plot'], + thumbnail=dict['poster'], + url=dict['link'], + infoLabels={'year':dict['year']}) + if item.type == 'movie': + new_item.contentTitle=dict['title'] + new_item.fulltitle=dict['title'] + new_item.action = 'findvideos' + elif item.type == 'series': + new_item.contentSerieName = dict['title'] + new_item.action = '' + itemlist.append(new_item) + tmdb.set_infoLabels(itemlist) + itemlist.append(item.clone(title='Siguiente>>>', + url=item.url, + action='list_all', + type= item.type, + page=str(int(item.page) + 1))) + return itemlist + def findvideos(item): logger.info() - itemlist = [] - - data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) - patron = 'vars.title =(.*?)};' - try: - data_dict = jsontools.load(scrapertools.get_match(data, patron) + '}') - except: - return itemlist # Devolvemos lista vacia - - for link in data_dict["link"]: - if item.contentType == 'episode' \ - and (item.contentSeason != link['season'] or item.contentEpisodeNumber != link['episode']): - # Si buscamos enlaces de un episodio descartamos los q no sean de este episodio - continue - - url = link["url"] - flag = scrapertools.find_single_match(link["label"], '(\s*\)') - idioma = link["label"].replace(flag, "") - if link["quality"] != "?": - calidad = (link["quality"]) - else: - calidad = "" - itemlist.extend(servertools.find_video_items(data=url)) - + itemlist=[] + if item.extra == "one": + data = httptools.downloadpage(item.url).data + patron = "renderTab.bind.*?'([^']+).*?" + patron += "app.utils.getFavicon.*?(.*?) .*?" + patron += 'color:#B1FFC5;">([^<]+)' + matches = scrapertools.find_multiple_matches(data, patron) + for scrapedurl, scrapedlanguage, scrapedquality in matches: + title = "Ver enlace en %s " + "[" + scrapedlanguage + "]" + "[" + scrapedquality + "]" + if scrapedlanguage != 'zc': + itemlist.append(item.clone(action='play', + title=title, + url=scrapedurl, + language=scrapedlanguage + )) + itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) + else: + for link in item.url: + language = scrapertools.find_single_match(link['label'], '(.*?) Date: Wed, 24 Jan 2018 14:30:26 -0500 Subject: [PATCH 2/6] novelasgratishd: nuevo canal --- .../channels/novelashdgratis.json | 39 +++++ plugin.video.alfa/channels/novelashdgratis.py | 164 ++++++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 plugin.video.alfa/channels/novelashdgratis.json create mode 100644 plugin.video.alfa/channels/novelashdgratis.py diff --git a/plugin.video.alfa/channels/novelashdgratis.json b/plugin.video.alfa/channels/novelashdgratis.json new file mode 100644 index 00000000..678eb401 --- /dev/null +++ b/plugin.video.alfa/channels/novelashdgratis.json @@ -0,0 +1,39 @@ +{ + "id": "novelashdgratis", + "name": "Novelas HD Gratis", + "active": true, + "adult": false, + "language": ["lat"], + "thumbnail": "https://s18.postimg.org/okqzs7zy1/logo.gif", + "banner": "", + "version": 1, + "categories": [ + "tvshow" + ], + "settings": [ + { + "id": "include_in_global_search", + "type": "bool", + "label": "Incluir en busqueda global", + "default": false, + "enabled": false, + "visible": false + }, + { + "id": "include_in_newest_peliculas", + "type": "bool", + "label": "Incluir en Novedades - Peliculas", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "include_in_newest_infantiles", + "type": "bool", + "label": "Incluir en Novedades - Infantiles", + "default": true, + "enabled": true, + "visible": true + } + ] +} \ No newline at end of file diff --git a/plugin.video.alfa/channels/novelashdgratis.py b/plugin.video.alfa/channels/novelashdgratis.py new file mode 100644 index 00000000..0fad07f8 --- /dev/null +++ b/plugin.video.alfa/channels/novelashdgratis.py @@ -0,0 +1,164 @@ +# -*- coding: utf-8 -*- +# -*- Channel Novelas HD Gratis -*- +# -*- Created for Alfa-addon -*- +# -*- By the Alfa Develop Group -*- + +import re +from channelselector import get_thumb +from core import httptools +from core import scrapertools +from core import servertools +from core.item import Item +from platformcode import config, logger +from channels import filtertools +from channels import autoplay + +host = 'http://www.novelashdgratis.io' + +IDIOMAS = {'la':'Latino'} +list_language = IDIOMAS.values() +list_quality = [] +list_servers = ['powvideo', + 'netu', + 'playedto', + 'allmyvideos', + 'gamovideo', + 'openload', + 'dailymotion', + 'streamplay', + 'streaminto', + 'youtube', + 'vidoza', + 'flashx'] + +def mainlist(item): + logger.info() + + autoplay.init(item.channel, list_servers, list_quality) + itemlist = list() + + itemlist.append(item.clone(title="En Emision", action="list_all", url=host, type='emision')) + itemlist.append(item.clone(title="Ultimas Agregadas", action="list_all", url=host, type='ultimas')) + itemlist.append(item.clone(title="Todas", action="list_all", url=host, type='todas')) + itemlist.append(item.clone(title="Alfabetico", action="alpha", url=host, type='alfabetico')) + + if autoplay.context: + 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) + no_thumbs= ['emision', 'todas'] + + if item.type not in no_thumbs: + patron = '
Telenovelas que se Transmiten<\/div>.*?') + if item.type == 'todas': + data = scrapertools.find_single_match(data, 'class=dt>Lista de Novelas<\/div>.*?') + patron = '
  • .*?
  • ' + + matches = re.compile(patron, re.DOTALL).findall(data) + if item.type in no_thumbs: + for scrapedurl, scrapedtitle in matches: + url = host+scrapedurl + contentSerieName = scrapedtitle + title = contentSerieName + new_item = Item(channel=item.channel, title=title, url= url, action='episodes', + contentSerieName= contentSerieName) + itemlist.append(new_item) + else: + for scrapedurl, scrapedtitle, scrapedthumbnail in matches: + url = host + '/'+scrapedurl + contentSerieName = scrapedtitle + title = contentSerieName + thumbnail = scrapedthumbnail + new_item = Item(channel=item.channel, title=title, url=url, action='episodes', thumbnail=thumbnail, + contentSerieName=contentSerieName) + itemlist.append(new_item) + + return itemlist + + +def alpha(item): + logger.info() + itemlist= [] + + data = get_source(item.url) + patron = '' + matches = re.compile(patron,re.DOTALL).findall(data) + + for scrapedurl, scrapedtitle in matches: + itemlist.append(item.clone(title=scrapedtitle, url=host+scrapedurl, action='list_all')) + + return itemlist + + +def episodes(item): + logger.info() + itemlist=[] + + data=get_source(item.url) + patron='
  • (.*?)' + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedtitle in matches: + title = scrapedtitle + url = host+scrapedurl + new_item = Item(channel=item.channel, title=title, url=url, action='findvideos') + itemlist.append(new_item) + + return itemlist [::-1] + +def findvideos(item): + logger.info() + + servers = {'powvideo':'http://powvideo.net/embed-', + 'netu':'http://netu.tv/watch_video.php?v=', + 'played':'http://played.to/embed-', + 'allmy':'http://allmyvideos.net/embed-', + 'gamo':'http://gamovideo.com/embed-', + 'openload':'https://openload.co/embed/', + 'daily':'http://www.dailymotion.com/embed/video/', + 'play':'http://streamplay.to/embed-', + 'streamin':'http://streamin.to/embed-', + 'youtube':'https://www.youtube.com/embed/', + 'vidoza':'https://vidoza.net/embed-', + 'flashx':'https://www.flashx.tv/embed-'} + + + itemlist = [] + data = get_source(item.url) + patron = 'id=tab\d+>