From e391d84574741fe823895e4487e243d6638d75f7 Mon Sep 17 00:00:00 2001 From: prpeaprendiz <31428501+prpeaprendiz@users.noreply.github.com> Date: Wed, 27 Sep 2017 18:28:24 -0500 Subject: [PATCH 1/7] uodate cinecalidad.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Estético: en caso de no haber fanart y thumbnail de tmdb muestra solo la thumbnail cargada en lugar de ninguna. --- plugin.video.alfa/channels/cinecalidad.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugin.video.alfa/channels/cinecalidad.py b/plugin.video.alfa/channels/cinecalidad.py index f2b44121..e885cef0 100644 --- a/plugin.video.alfa/channels/cinecalidad.py +++ b/plugin.video.alfa/channels/cinecalidad.py @@ -298,7 +298,7 @@ def findvideos(item): if server_id in server_url: server = server_id.lower() - thumbnail = item.contentThumbnail + thumbnail = item.thumbnail if server_id == 'TVM': server = 'thevideo.me' url = server_url[server_id] + video_id + '.html' @@ -367,7 +367,7 @@ def play(item): for videoitem in itemlist: videoitem.title = item.fulltitle videoitem.fulltitle = item.fulltitle - videoitem.thumbnail = item.contentThumbnail + videoitem.thumbnail = item.thumbnail videoitem.channel = item.channel else: itemlist.append(item) From 5d90776c1e31b0ddedf2771de287df8ae7398999 Mon Sep 17 00:00:00 2001 From: prpeaprendiz <31428501+prpeaprendiz@users.noreply.github.com> Date: Wed, 27 Sep 2017 18:37:49 -0500 Subject: [PATCH 2/7] update pelisplus.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Estético: Muestra el thumbnail de los capítulos en las series en lugar de mostrar la portada de la serie (desde la videoteca) --- plugin.video.alfa/channels/pelisplus.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/pelisplus.py b/plugin.video.alfa/channels/pelisplus.py index f3b424c2..e42aedc7 100644 --- a/plugin.video.alfa/channels/pelisplus.py +++ b/plugin.video.alfa/channels/pelisplus.py @@ -470,7 +470,7 @@ def findvideos(item): videoitem.quality = 'default' videoitem.language = 'Latino' if videoitem.server != '': - videoitem.thumbnail = item.contentThumbnail + videoitem.thumbnail = item.thumbnail else: videoitem.thumbnail = item.thumbnail videoitem.server = 'directo' From a9c9aff44f1637e0b63b5fd830efd3795a1e0357 Mon Sep 17 00:00:00 2001 From: prpeaprendiz <31428501+prpeaprendiz@users.noreply.github.com> Date: Wed, 27 Sep 2017 18:51:38 -0500 Subject: [PATCH 3/7] update ultrapeliculashd.py Mostrar thumbnails --- plugin.video.alfa/channels/ultrapeliculashd.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/ultrapeliculashd.py b/plugin.video.alfa/channels/ultrapeliculashd.py index 6edd1ea3..e84b5dfe 100755 --- a/plugin.video.alfa/channels/ultrapeliculashd.py +++ b/plugin.video.alfa/channels/ultrapeliculashd.py @@ -217,7 +217,7 @@ def findvideos(item): for videoitem in itemlist: videoitem.channel = item.channel videoitem.action = 'play' - videoitem.thumbnail = servertools.guess_server_thumbnail(videoitem.server) + videoitem.thumbnail = item.thumbnail videoitem.infoLabels = item.infoLabels videoitem.title = item.contentTitle + ' (' + videoitem.server + ')' if 'youtube' in videoitem.url: From a73d94261880e6125c97b445aefefc247189be86 Mon Sep 17 00:00:00 2001 From: prpeaprendiz <31428501+prpeaprendiz@users.noreply.github.com> Date: Fri, 29 Sep 2017 19:16:05 -0500 Subject: [PATCH 4/7] =?UTF-8?q?Peque=C3=B1os=20intentos=20de=20mejoras=20a?= =?UTF-8?q?nimeshd.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pequeños intentos de mejoras dentro de mis posibilidades, todos los créditos para dan83!. Muchas gracias!. --- plugin.video.alfa/channels/animeshd.py | 32 ++++++++------------------ 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/plugin.video.alfa/channels/animeshd.py b/plugin.video.alfa/channels/animeshd.py index f592b1bb..bfa87adf 100644 --- a/plugin.video.alfa/channels/animeshd.py +++ b/plugin.video.alfa/channels/animeshd.py @@ -6,8 +6,9 @@ import urllib from core import httptools from core import scrapertools from core import servertools +from core import tmdb from core.item import Item -from platformcode import logger +from platformcode import logger, config tgenero = {"Comedia": "https://s7.postimg.org/ne9g9zgwb/comedia.png", "Drama": "https://s16.postimg.org/94sia332d/drama.png", @@ -110,7 +111,7 @@ def lista(item): url=next_page_url, thumbnail='https://s16.postimg.org/9okdu7hhx/siguiente.png' )) - + tmdb.set_infoLabels(itemlist) return itemlist @@ -157,29 +158,16 @@ def episodios(item): itemlist = [] data = get_source(item.url) - patron = '
  • <\/span>(.*?)<\/li>' + patron = '
  • <\/span>(.*?) (\d+)<\/li>' matches = re.compile(patron, re.DOTALL).findall(data) - for scrapedurl, scrapedlang, scrapedtitle in matches: + for scrapedurl, scrapedlang, scrapedtitle, episode in matches: language = scrapedlang - title = scrapedtitle + title = scrapedtitle + " " + "1x" + episode url = scrapedurl itemlist.append(item.clone(title=title, url=url, action='findvideos', language=language)) - return itemlist - - -def findvideos(item): - logger.info() - itemlist = [] - - data = get_source(item.url) - itemlist.extend(servertools.find_video_items(data=data)) - - for videoitem in itemlist: - title = item.title - videoitem.channel = item.channel - videoitem.title = title - videoitem.action = 'play' - - + + if config.get_videolibrary_support(): + itemlist.append(Item(channel=item.channel, title="Añadir serie a la biblioteca", url=item.url, action="add_serie_to_library", extra="episodios", fanart=item.thumbnail, thumbnail=item.thumbnail, contentTitle=item.show, show=item.show)) + return itemlist From ce8c4580efb79761f9b6ecd889fb5957e9fbf4f7 Mon Sep 17 00:00:00 2001 From: Alfa-Addon Date: Fri, 29 Sep 2017 21:00:42 -0400 Subject: [PATCH 5/7] fix language labels --- plugin.video.alfa/channels/pedropolis.py | 214 +++++------------------ 1 file changed, 47 insertions(+), 167 deletions(-) diff --git a/plugin.video.alfa/channels/pedropolis.py b/plugin.video.alfa/channels/pedropolis.py index c5a01871..aa4df645 100644 --- a/plugin.video.alfa/channels/pedropolis.py +++ b/plugin.video.alfa/channels/pedropolis.py @@ -15,7 +15,6 @@ from core.item import Item from core import channeltools from core import tmdb from platformcode import config, logger -from channelselector import get_thumb __channel__ = "pedropolis" @@ -44,49 +43,41 @@ parameters = channeltools.get_channel_parameters(__channel__) fanart_host = parameters['fanart'] thumbnail_host = parameters['thumbnail'] +thumbnail = "https://raw.githubusercontent.com/Inter95/tvguia/master/thumbnails/%s.png" + def mainlist(item): logger.info() - itemlist = [item.clone(title="Peliculas", action="menumovies", text_blod=True, - viewcontent='movies', viewmode="movie_with_plot", thumbnail=get_thumb("channels_movie.png")), - - item.clone(title="Series", action="menuseries", text_blod=True, extra='serie', mediatype="tvshow", - viewcontent='tvshows', url=host + 'tvshows/', viewmode="movie_with_plot", - thumbnail=get_thumb("channels_tvshow.png")), - - item.clone(title="Buscar", action="search", text_blod=True, extra='buscar', - thumbnail=get_thumb('search.png'), url=host)] + viewcontent='movies', viewmode="movie_with_plot"), + item.clone(title="Series", action="menuseries", text_blod=True, extra='serie', mediatype= "tvshow", + viewcontent='tvshows', url=host + 'tvshows/', viewmode="movie_with_plot")] return itemlist def menumovies(item): logger.info() - itemlist = [item.clone(title="Todas", action="peliculas", text_blod=True, url=host + 'movies/', - viewcontent='movies', viewmode="movie_with_plot"), - + itemlist = [item.clone(title="Todas", action="peliculas", text_blod=True, + viewcontent='movies', url=host + 'movies/', viewmode="movie_with_plot"), item.clone(title="Más Vistas", action="peliculas", text_blod=True, viewcontent='movies', url=host + 'tendencias/?get=movies', viewmode="movie_with_plot"), - - item.clone(title="Más Valoradas", action="peliculas", text_blod=True, viewcontent='movies', - url=host + 'calificaciones/?get=movies', viewmode="movie_with_plot"), - - item.clone(title="Géneros", action="generos", text_blod=True, viewmode="movie_with_plot", - viewcontent='movies', url=host)] + item.clone(title="Más Valoradas", action="peliculas", text_blod=True, + viewcontent='movies', url=host + 'calificaciones/?get=movies', + viewmode="movie_with_plot"), item.clone(title="Géneros", action="generos", text_blod=True, + viewcontent='movies', url=host, + viewmode="movie_with_plot")] return itemlist def menuseries(item): logger.info() - itemlist = [item.clone(title="Todas", action="series", text_blod=True, extra='serie', mediatype="tvshow", + itemlist = [item.clone(title="Todas", action="series", text_blod=True, extra='serie', mediatype= "tvshow", viewcontent='tvshows', url=host + 'tvshows/', viewmode="movie_with_plot"), - - item.clone(title="Más Vistas", action="series", text_blod=True, extra='serie', mediatype="tvshow", + item.clone(title="Más Vistas", action="series", text_blod=True, extra='serie', mediatype= "tvshow", viewcontent='tvshows', url=host + 'tendencias/?get=tv', viewmode="movie_with_plot"), - - item.clone(title="Mejor Valoradas", action="series", text_blod=True, extra='serie', mediatype="tvshow", + item.clone(title="Mejor Valoradas", action="series", text_blod=True, extra='serie', mediatype= "tvshow", viewcontent='tvshows', url=host + 'calificaciones/?get=tv', viewmode="movie_with_plot")] return itemlist @@ -97,14 +88,14 @@ def peliculas(item): itemlist = [] url_next_page = '' data = httptools.downloadpage(item.url).data - data = re.sub(r"\n|\r|\t|\(.*?\)|\s{2}| ", "", data) + datas = re.sub(r"\n|\r|\t|\(.*?\)|\s{2}| ", "", data) patron = '
    ([^.*?' # img, title patron += '
    ([^<]+).*?' # rating patron += '([^<]+).*?' # calidad, url patron += '([^<]+)' # year - matches = scrapertools.find_multiple_matches(data, patron) + matches = scrapertools.find_multiple_matches(datas, patron) # Paginación if item.next_page != 'b': @@ -124,6 +115,8 @@ def peliculas(item): if 'Proximamente' not in calidad: scrapedtitle = scrapedtitle.replace('Ver ', '').partition(' /')[0].partition(':')[0].replace( 'Español Latino', '').strip() + item.infoLabels['year'] = year + item.infoLabels['rating'] = rating title = "%s [COLOR green][%s][/COLOR] [COLOR yellow][%s][/COLOR]" % (scrapedtitle, year, calidad) new_item = Item(channel=__channel__, action="findvideos", contentTitle=scrapedtitle, @@ -134,9 +127,8 @@ def peliculas(item): itemlist.append(new_item) if url_next_page: - itemlist.append(Item(channel=__channel__, action="peliculas", title="» Siguiente »", - url=url_next_page, next_page=next_page, folder=True, text_blod=True, - thumbnail=get_thumb("next.png"))) + itemlist.append(Item(channel=__channel__, action="peliculas", title=">> Página siguiente", + url=url_next_page, next_page=next_page, folder=True, text_blod=True)) for item in itemlist: if item.infoLabels['plot'] == '': @@ -158,92 +150,11 @@ def peliculas(item): return itemlist -def search(item, texto): - logger.info() - - texto = texto.replace(" ", "+") - item.url = urlparse.urljoin(item.url, "?s={0}".format(texto)) - - try: - return sub_search(item) - - # Se captura la excepción, para no interrumpir al buscador global si un canal falla - except: - import sys - for line in sys.exc_info(): - logger.error("{0}".format(line)) - return [] - - -def sub_search(item): - logger.info() - - itemlist = [] - data = httptools.downloadpage(item.url).data - data = re.sub(r"\n|\r|\t| |
    ", "", data) - - patron = '
    ([^' # url, img, title - patron += '([^<]+).*?' # tipo - patron += '([^"]+).*?

    ([^<]+)

    ' # year, plot - - matches = re.compile(patron, re.DOTALL).findall(data) - - for scrapedurl, scrapedthumbnail, scrapedtitle, tipo, year, plot in matches: - title = scrapedtitle - if tipo == 'Serie': - contentType = 'tvshow' - action = 'temporadas' - title += ' [COLOR red](' + tipo + ')[/COLOR]' - else: - contentType = 'movie' - action = 'findvideos' - title += ' [COLOR green](' + tipo + ')[/COLOR]' - - itemlist.append(item.clone(title=title, url=scrapedurl, contentTitle=scrapedtitle, extra='buscar', - action=action, infoLabels={"year": year}, contentType=contentType, - thumbnail=scrapedthumbnail, text_color=color1, contentSerieName=scrapedtitle)) - - tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__) - paginacion = scrapertools.find_single_match(data, '') - - if paginacion: - itemlist.append(Item(channel=item.channel, action="sub_search", - title="» Siguiente »", url=paginacion, thumbnail=get_thumb("next.png"))) - - return itemlist - - -def newest(categoria): - logger.info() - itemlist = [] - item = Item() - try: - if categoria == 'peliculas': - item.url = host + 'movies/' - elif categoria == 'infantiles': - item.url = host + "genre/animacion/" - else: - return [] - - itemlist = peliculas(item) - if itemlist[-1].title == "» Siguiente »": - itemlist.pop() - - # Se captura la excepción, para no interrumpir al canal novedades si un canal falla - except: - import sys - for line in sys.exc_info(): - logger.error("{0}".format(line)) - return [] - - return itemlist - - def generos(item): logger.info() itemlist = [] - data = httptools.downloadpage(item.url).data + data = scrapertools.cache_page(item.url) data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) # logger.info(data) data = scrapertools.find_single_match(data, 'Genero
    (.*?)
  • ", "", data) - # logger.info(data) + # logger.info(datas) patron = '
    ([^.*?' @@ -289,29 +200,21 @@ def series(item): url_next_page = urlparse.urljoin(item.url, matches_next_page[0]) for scrapedthumbnail, scrapedtitle, scrapedurl in matches: - scrapedtitle = scrapedtitle.replace('’', "'") - itemlist.append(Item(channel=__channel__, title=scrapedtitle, extra='serie', - url=scrapedurl, thumbnail=scrapedthumbnail, - contentSerieName=scrapedtitle, show=scrapedtitle, - next_page=next_page, action="temporadas", contentType='tvshow')) + scrapedtitle = scrapedtitle.replace('Ver ', + '').replace(' Online HD', + '').replace('ver ', '').replace(' Online', + '').replace('’', "'") + itemlist.append(Item(channel=__channel__, title=scrapedtitle, + url=scrapedurl, thumbnail=scrapedthumbnail, + contentSerieName=scrapedtitle, show=scrapedtitle, + next_page=next_page, action="temporadas", contentType='tvshow')) tmdb.set_infoLabels(itemlist, __modo_grafico__) tmdb.set_infoLabels(itemlist, __modo_grafico__) if url_next_page: - itemlist.append(Item(channel=__channel__, action="series", title="» Siguiente »", url=url_next_page, - next_page=next_page, thumbnail=get_thumb("next.png"))) - - for item in itemlist: - if item.infoLabels['plot'] == '': - data = httptools.downloadpage(item.url).data - data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) - # logger.info(data) - item.fanart = scrapertools.find_single_match(data, - "").replace( - 'w780', 'original') - item.plot = scrapertools.find_single_match(data, '

    Sinopsis

    ' # capítulos - matches = scrapertools.find_multiple_matches(data, patron) + matches = scrapertools.find_multiple_matches(datas, patron) if len(matches) > 1: for scrapedseason, scrapedthumbnail in matches: scrapedseason = " ".join(scrapedseason.split()) temporada = scrapertools.find_single_match(scrapedseason, '(\d+)') - new_item = item.clone(action="episodios", season=temporada, thumbnail=scrapedthumbnail, extra='serie') + new_item = item.clone(action="episodios", season=temporada, thumbnail=scrapedthumbnail) new_item.infoLabels['season'] = temporada new_item.extra = "" itemlist.append(new_item) @@ -348,11 +251,6 @@ def temporadas(item): itemlist.sort(key=lambda it: it.title) - if config.get_videolibrary_support() and len(itemlist) > 0: - itemlist.append(Item(channel=__channel__, title="Añadir esta serie a la videoteca", url=item.url, - action="add_serie_to_library", extra="episodios", show=item.show, category="Series", - text_color=color1, thumbnail=get_thumb("videolibrary_tvshow.png"), fanart=fanart_host)) - return itemlist else: return episodios(item) @@ -363,13 +261,13 @@ def episodios(item): itemlist = [] data = httptools.downloadpage(item.url).data - data = re.sub(r"\n|\r|\t| |
    ", "", data) - # logger.info(data) + datas = re.sub(r"\n|\r|\t| |
    ", "", data) + # logger.info(datas) patron = '
    .*?' # url cap, img patron += '
    (.*?)
    .*?' # numerando cap patron += '
    ([^<]+)' # title de episodios - matches = scrapertools.find_multiple_matches(data, patron) + matches = scrapertools.find_multiple_matches(datas, patron) for scrapedurl, scrapedtitle, scrapedname in matches: scrapedtitle = scrapedtitle.replace('--', '0') @@ -382,7 +280,7 @@ def episodios(item): title = "%sx%s: %s" % (season, episode.zfill(2), scrapertools.unescape(scrapedname)) new_item = item.clone(title=title, url=scrapedurl, action="findvideos", text_color=color3, fulltitle=title, - contentType="episode", extra='serie') + contentType="episode") if 'infoLabels' not in new_item: new_item.infoLabels = {} @@ -390,7 +288,6 @@ def episodios(item): new_item.infoLabels['episode'] = episode.zfill(2) itemlist.append(new_item) - tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__) # TODO no hacer esto si estamos añadiendo a la videoteca if not item.extra: @@ -399,7 +296,7 @@ def episodios(item): for i in itemlist: if i.infoLabels['title']: # Si el capitulo tiene nombre propio añadírselo al titulo del item - i.title = "%sx%s: %s" % (i.infoLabels['season'], i.infoLabels['episode'], i.infoLabels['title']) + i.title = "%sx%s %s" % (i.infoLabels['season'], i.infoLabels['episode'], i.infoLabels['title']) if i.infoLabels.has_key('poster_path'): # Si el capitulo tiene imagen propia remplazar al poster i.thumbnail = i.infoLabels['poster_path'] @@ -411,7 +308,7 @@ def episodios(item): if config.get_videolibrary_support() and len(itemlist) > 0: itemlist.append(Item(channel=__channel__, title="Añadir esta serie a la videoteca", url=item.url, action="add_serie_to_library", extra="episodios", show=item.show, category="Series", - text_color=color1, thumbnail=get_thumb("videolibrary_tvshow.png"), fanart=fanart_host)) + text_color=color1, thumbnail=thumbnail_host, fanart=fanart_host)) return itemlist @@ -423,42 +320,25 @@ def findvideos(item): data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) # logger.info(data) - patron = '
    ' # lang, url + patron = '
    ' # matches = re.compile(patron, re.DOTALL).findall(data) for option, url in matches: lang = scrapertools.find_single_match(data, '
  • .*? 0 and item.extra != 'serie': - itemlist.append(Item(channel=__channel__, - title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', - url=item.url, action="add_pelicula_to_library", - thumbnail=get_thumb("videolibrary_movie.png"), - extra="findvideos", contentTitle=item.contentTitle)) + x.title = "%s %s [COLOR yellow](%s)[/COLOR] [COLOR yellow](%s)[/COLOR]" % ( + x.language, x.title, x.server.title(), x.quality) return itemlist From 52009dbe0e8fb8f1507965e8f0cd6a477fcdabca Mon Sep 17 00:00:00 2001 From: Alfa-Addon Date: Fri, 29 Sep 2017 21:12:20 -0400 Subject: [PATCH 6/7] v2.2.1 --- plugin.video.alfa/addon.xml | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index 3fc4a4f1..c290d918 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@  - + @@ -19,11 +19,16 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Canales agregados y arreglos[/B][/COLOR] - » canalpelis » hdfull - » xdvideos » playmax - » cinetux » gnula - » flashx » rapidvideo + » canalpelis » allcalidad + » cinefox » cineasiaenlinea + » cinetux » divxatope + » maxipelis » pedropolis + » doomtv » animeshd + » hdfull » ultrapelishd + » pelisplus » cinecalidad + » peliculasnu » allpeliculas ¤ arreglos internos + [COLOR green]Gracias a [COLOR yellow]prpeaprendiz[/COLOR] por su colaboración en esta versión[/COLOR] Navega con Kodi por páginas web para ver sus videos de manera fácil. Browse web pages using Kodi From bbcd9a56a93789255b01aee78e2b051ff8346260 Mon Sep 17 00:00:00 2001 From: Alfa-Addon Date: Fri, 29 Sep 2017 22:31:49 -0400 Subject: [PATCH 7/7] revision fixed --- plugin.video.alfa/channels/pedropolis.py | 236 +++++++++++++++++------ 1 file changed, 178 insertions(+), 58 deletions(-) diff --git a/plugin.video.alfa/channels/pedropolis.py b/plugin.video.alfa/channels/pedropolis.py index aa4df645..3bfec694 100644 --- a/plugin.video.alfa/channels/pedropolis.py +++ b/plugin.video.alfa/channels/pedropolis.py @@ -15,6 +15,7 @@ from core.item import Item from core import channeltools from core import tmdb from platformcode import config, logger +from channelselector import get_thumb __channel__ = "pedropolis" @@ -43,41 +44,49 @@ parameters = channeltools.get_channel_parameters(__channel__) fanart_host = parameters['fanart'] thumbnail_host = parameters['thumbnail'] -thumbnail = "https://raw.githubusercontent.com/Inter95/tvguia/master/thumbnails/%s.png" - def mainlist(item): logger.info() + itemlist = [item.clone(title="Peliculas", action="menumovies", text_blod=True, - viewcontent='movies', viewmode="movie_with_plot"), - item.clone(title="Series", action="menuseries", text_blod=True, extra='serie', mediatype= "tvshow", - viewcontent='tvshows', url=host + 'tvshows/', viewmode="movie_with_plot")] + viewcontent='movies', viewmode="movie_with_plot", thumbnail=get_thumb("channels_movie.png")), + + item.clone(title="Series", action="menuseries", text_blod=True, extra='serie', mediatype="tvshow", + viewcontent='tvshows', url=host + 'tvshows/', viewmode="movie_with_plot", + thumbnail=get_thumb("channels_tvshow.png")), + + item.clone(title="Buscar", action="search", text_blod=True, extra='buscar', + thumbnail=get_thumb('search.png'), url=host)] return itemlist def menumovies(item): logger.info() - itemlist = [item.clone(title="Todas", action="peliculas", text_blod=True, - viewcontent='movies', url=host + 'movies/', viewmode="movie_with_plot"), + itemlist = [item.clone(title="Todas", action="peliculas", text_blod=True, url=host + 'movies/', + viewcontent='movies', viewmode="movie_with_plot"), + item.clone(title="Más Vistas", action="peliculas", text_blod=True, viewcontent='movies', url=host + 'tendencias/?get=movies', viewmode="movie_with_plot"), - item.clone(title="Más Valoradas", action="peliculas", text_blod=True, - viewcontent='movies', url=host + 'calificaciones/?get=movies', - viewmode="movie_with_plot"), item.clone(title="Géneros", action="generos", text_blod=True, - viewcontent='movies', url=host, - viewmode="movie_with_plot")] + + item.clone(title="Más Valoradas", action="peliculas", text_blod=True, viewcontent='movies', + url=host + 'calificaciones/?get=movies', viewmode="movie_with_plot"), + + item.clone(title="Géneros", action="generos", text_blod=True, viewmode="movie_with_plot", + viewcontent='movies', url=host)] return itemlist def menuseries(item): logger.info() - itemlist = [item.clone(title="Todas", action="series", text_blod=True, extra='serie', mediatype= "tvshow", + itemlist = [item.clone(title="Todas", action="series", text_blod=True, extra='serie', mediatype="tvshow", viewcontent='tvshows', url=host + 'tvshows/', viewmode="movie_with_plot"), - item.clone(title="Más Vistas", action="series", text_blod=True, extra='serie', mediatype= "tvshow", + + item.clone(title="Más Vistas", action="series", text_blod=True, extra='serie', mediatype="tvshow", viewcontent='tvshows', url=host + 'tendencias/?get=tv', viewmode="movie_with_plot"), - item.clone(title="Mejor Valoradas", action="series", text_blod=True, extra='serie', mediatype= "tvshow", + + item.clone(title="Mejor Valoradas", action="series", text_blod=True, extra='serie', mediatype="tvshow", viewcontent='tvshows', url=host + 'calificaciones/?get=tv', viewmode="movie_with_plot")] return itemlist @@ -88,14 +97,14 @@ def peliculas(item): itemlist = [] url_next_page = '' data = httptools.downloadpage(item.url).data - datas = re.sub(r"\n|\r|\t|\(.*?\)|\s{2}| ", "", data) + data = re.sub(r"\n|\r|\t|\(.*?\)|\s{2}| ", "", data) - patron = '
    ([^.*?' # img, title + patron = '
    ([^.*?' # img, title patron += '
    ([^<]+).*?' # rating patron += '([^<]+).*?' # calidad, url - patron += '([^<]+)' # year + patron += '([^<]+)' # year - matches = scrapertools.find_multiple_matches(datas, patron) + matches = scrapertools.find_multiple_matches(data, patron) # Paginación if item.next_page != 'b': @@ -115,8 +124,6 @@ def peliculas(item): if 'Proximamente' not in calidad: scrapedtitle = scrapedtitle.replace('Ver ', '').partition(' /')[0].partition(':')[0].replace( 'Español Latino', '').strip() - item.infoLabels['year'] = year - item.infoLabels['rating'] = rating title = "%s [COLOR green][%s][/COLOR] [COLOR yellow][%s][/COLOR]" % (scrapedtitle, year, calidad) new_item = Item(channel=__channel__, action="findvideos", contentTitle=scrapedtitle, @@ -127,8 +134,9 @@ def peliculas(item): itemlist.append(new_item) if url_next_page: - itemlist.append(Item(channel=__channel__, action="peliculas", title=">> Página siguiente", - url=url_next_page, next_page=next_page, folder=True, text_blod=True)) + itemlist.append(Item(channel=__channel__, action="peliculas", title="» Siguiente »", + url=url_next_page, next_page=next_page, folder=True, text_blod=True, + thumbnail=get_thumb("next.png"))) for item in itemlist: if item.infoLabels['plot'] == '': @@ -150,11 +158,92 @@ def peliculas(item): return itemlist +def search(item, texto): + logger.info() + + texto = texto.replace(" ", "+") + item.url = urlparse.urljoin(item.url, "?s={0}".format(texto)) + + try: + return sub_search(item) + + # Se captura la excepción, para no interrumpir al buscador global si un canal falla + except: + import sys + for line in sys.exc_info(): + logger.error("{0}".format(line)) + return [] + + +def sub_search(item): + logger.info() + + itemlist = [] + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t| |
    ", "", data) + + patron = '
    ([^' # url, img, title + patron += '([^<]+).*?' # tipo + patron += '([^"]+).*?

    ([^<]+)

    ' # year, plot + + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedthumbnail, scrapedtitle, tipo, year, plot in matches: + title = scrapedtitle + if tipo == 'Serie': + contentType = 'tvshow' + action = 'temporadas' + title += ' [COLOR red](' + tipo + ')[/COLOR]' + else: + contentType = 'movie' + action = 'findvideos' + title += ' [COLOR green](' + tipo + ')[/COLOR]' + + itemlist.append(item.clone(title=title, url=scrapedurl, contentTitle=scrapedtitle, extra='buscar', + action=action, infoLabels={"year": year}, contentType=contentType, + thumbnail=scrapedthumbnail, text_color=color1, contentSerieName=scrapedtitle)) + + tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__) + paginacion = scrapertools.find_single_match(data, '') + + if paginacion: + itemlist.append(Item(channel=item.channel, action="sub_search", + title="» Siguiente »", url=paginacion, thumbnail=get_thumb("next.png"))) + + return itemlist + + +def newest(categoria): + logger.info() + itemlist = [] + item = Item() + try: + if categoria == 'peliculas': + item.url = host + 'movies/' + elif categoria == 'infantiles': + item.url = host + "genre/animacion/" + else: + return [] + + itemlist = peliculas(item) + if itemlist[-1].title == "» Siguiente »": + itemlist.pop() + + # Se captura la excepción, para no interrumpir al canal novedades si un canal falla + except: + import sys + for line in sys.exc_info(): + logger.error("{0}".format(line)) + return [] + + return itemlist + + def generos(item): logger.info() itemlist = [] - data = scrapertools.cache_page(item.url) + data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) # logger.info(data) data = scrapertools.find_single_match(data, 'Genero
    (.*?)
  • ", "", data) - # logger.info(datas) + # logger.info(data) - patron = '
    ([^.*?' + patron = '
    ([^.*?' # img, title, url matches = scrapertools.find_multiple_matches(data, patron) @@ -200,21 +289,29 @@ def series(item): url_next_page = urlparse.urljoin(item.url, matches_next_page[0]) for scrapedthumbnail, scrapedtitle, scrapedurl in matches: - scrapedtitle = scrapedtitle.replace('Ver ', - '').replace(' Online HD', - '').replace('ver ', '').replace(' Online', - '').replace('’', "'") - itemlist.append(Item(channel=__channel__, title=scrapedtitle, - url=scrapedurl, thumbnail=scrapedthumbnail, - contentSerieName=scrapedtitle, show=scrapedtitle, - next_page=next_page, action="temporadas", contentType='tvshow')) + scrapedtitle = scrapedtitle.replace('’', "'") + itemlist.append(Item(channel=__channel__, title=scrapedtitle, extra='serie', + url=scrapedurl, thumbnail=scrapedthumbnail, + contentSerieName=scrapedtitle, show=scrapedtitle, + next_page=next_page, action="temporadas", contentType='tvshow')) tmdb.set_infoLabels(itemlist, __modo_grafico__) tmdb.set_infoLabels(itemlist, __modo_grafico__) if url_next_page: - itemlist.append(Item(channel=__channel__, action="series", title=">> Página Siguiente", url=url_next_page, - next_page=next_page)) + itemlist.append(Item(channel=__channel__, action="series", title="» Siguiente »", url=url_next_page, + next_page=next_page, thumbnail=get_thumb("next.png"))) + + for item in itemlist: + if item.infoLabels['plot'] == '': + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + # logger.info(data) + item.fanart = scrapertools.find_single_match(data, + "").replace( + 'w780', 'original') + item.plot = scrapertools.find_single_match(data, '

    Sinopsis

    ' # capítulos + data = re.sub(r"\n|\r|\t| |
    ", "", data) + # logger.info(data) + patron = '([^<]+).*?' # season + patron += '
    ' # img - matches = scrapertools.find_multiple_matches(datas, patron) + matches = scrapertools.find_multiple_matches(data, patron) if len(matches) > 1: for scrapedseason, scrapedthumbnail in matches: scrapedseason = " ".join(scrapedseason.split()) temporada = scrapertools.find_single_match(scrapedseason, '(\d+)') - new_item = item.clone(action="episodios", season=temporada, thumbnail=scrapedthumbnail) + new_item = item.clone(action="episodios", season=temporada, thumbnail=scrapedthumbnail, extra='serie') new_item.infoLabels['season'] = temporada new_item.extra = "" itemlist.append(new_item) @@ -251,6 +348,11 @@ def temporadas(item): itemlist.sort(key=lambda it: it.title) + if config.get_videolibrary_support() and len(itemlist) > 0: + itemlist.append(Item(channel=__channel__, title="Añadir esta serie a la videoteca", url=item.url, + action="add_serie_to_library", extra="episodios", show=item.show, category="Series", + text_color=color1, thumbnail=get_thumb("videolibrary_tvshow.png"), fanart=fanart_host)) + return itemlist else: return episodios(item) @@ -261,13 +363,13 @@ def episodios(item): itemlist = [] data = httptools.downloadpage(item.url).data - datas = re.sub(r"\n|\r|\t| |
    ", "", data) - # logger.info(datas) - patron = '
    .*?' # url cap, img - patron += '
    (.*?)
    .*?' # numerando cap - patron += '
    ([^<]+)' # title de episodios + data = re.sub(r"\n|\r|\t| |
    ", "", data) + # logger.info(data) + patron = '
    .*?' # url + patron += '
    (.*?)
    .*?' # numerando cap + patron += '
    ([^<]+)' # title de episodios - matches = scrapertools.find_multiple_matches(datas, patron) + matches = scrapertools.find_multiple_matches(data, patron) for scrapedurl, scrapedtitle, scrapedname in matches: scrapedtitle = scrapedtitle.replace('--', '0') @@ -280,7 +382,7 @@ def episodios(item): title = "%sx%s: %s" % (season, episode.zfill(2), scrapertools.unescape(scrapedname)) new_item = item.clone(title=title, url=scrapedurl, action="findvideos", text_color=color3, fulltitle=title, - contentType="episode") + contentType="episode", extra='serie') if 'infoLabels' not in new_item: new_item.infoLabels = {} @@ -296,7 +398,7 @@ def episodios(item): for i in itemlist: if i.infoLabels['title']: # Si el capitulo tiene nombre propio añadírselo al titulo del item - i.title = "%sx%s %s" % (i.infoLabels['season'], i.infoLabels['episode'], i.infoLabels['title']) + i.title = "%sx%s: %s" % (i.infoLabels['season'], i.infoLabels['episode'], i.infoLabels['title']) if i.infoLabels.has_key('poster_path'): # Si el capitulo tiene imagen propia remplazar al poster i.thumbnail = i.infoLabels['poster_path'] @@ -304,11 +406,13 @@ def episodios(item): itemlist.sort(key=lambda it: int(it.infoLabels['episode']), reverse=config.get_setting('orden_episodios', __channel__)) + tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__) + # Opción "Añadir esta serie a la videoteca" if config.get_videolibrary_support() and len(itemlist) > 0: itemlist.append(Item(channel=__channel__, title="Añadir esta serie a la videoteca", url=item.url, action="add_serie_to_library", extra="episodios", show=item.show, category="Series", - text_color=color1, thumbnail=thumbnail_host, fanart=fanart_host)) + text_color=color1, thumbnail=get_thumb("videolibrary_tvshow.png"), fanart=fanart_host)) return itemlist @@ -320,25 +424,41 @@ def findvideos(item): data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) # logger.info(data) - patron = '
    ' # + patron = '
    ' # lang, url matches = re.compile(patron, re.DOTALL).findall(data) for option, url in matches: - lang = scrapertools.find_single_match(data, '
  • .*?.*?-->(\w+)' % option) + lang = lang.lower() + idioma = {'latino': '[COLOR cornflowerblue](LAT)[/COLOR]', + 'drive': '[COLOR cornflowerblue](LAT)[/COLOR]', + 'castellano': '[COLOR green](CAST)[/COLOR]', + 'subtitulado': '[COLOR red](VOS)[/COLOR]', + 'ingles': '[COLOR red](VOS)[/COLOR]'} + if lang in idioma: + lang = idioma[lang] + # obtenemos los redirecionamiento de shorturl en caso de coincidencia if "bit.ly" in url: url = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers.get("location", "") - itemlist.append(item.clone(channel=__channel__, url=url, title=item.contentTitle, action='play', language=lang)) + itemlist.append(item.clone(channel=__channel__, url=url, title=item.contentTitle, + action='play', language=lang)) itemlist = servertools.get_servers_itemlist(itemlist) + itemlist.sort(key=lambda it: it.language, reverse=False) for x in itemlist: if x.extra != 'directo': x.thumbnail = item.thumbnail - x.title = "%s %s [COLOR yellow](%s)[/COLOR] [COLOR yellow](%s)[/COLOR]" % ( - x.language, x.title, x.server.title(), x.quality) + x.title = "Ver en: [COLOR yellow](%s)[/COLOR] %s" % (x.server.title(), x.language) + if item.extra != 'serie' and item.extra != 'buscar': + x.title = "Ver en: [COLOR yellowgreen](%s)[/COLOR] [COLOR yellow](%s)[/COLOR] %s" % ( + x.server.title(), x.quality, x.language) + + if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'serie': + itemlist.append(Item(channel=__channel__, url=item.url, action="add_pelicula_to_library", extra="findvideos", + title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', + thumbnail=get_thumb("videolibrary_movie.png"), contentTitle=item.contentTitle)) return itemlist