diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index db15e620..4bccd512 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@  - + @@ -19,12 +19,11 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Canales agregados y arreglos[/B][/COLOR] - » divxatope » torrentlocura - » peliculasrey » pelismundo - » gvideo » kingvid - » mailru » vidlox - » thevideome » bitp - ¤ fix internos + » pedropolis » cinecalidad + » openload » cloudy + » uptobox ¤ arreglos internos + + [COLOR green]Gracias a [COLOR yellow]msdos[/COLOR] y [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 diff --git a/plugin.video.alfa/channels/cinecalidad.py b/plugin.video.alfa/channels/cinecalidad.py index c968bcc5..f2b44121 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 = servertools.guess_server_thumbnail(server_id) + thumbnail = item.contentThumbnail 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.extra + videoitem.thumbnail = item.contentThumbnail videoitem.channel = item.channel else: itemlist.append(item) @@ -463,3 +463,4 @@ def search(item, texto): for line in sys.exc_info(): logger.error("%s" % line) return [] + diff --git a/plugin.video.alfa/channels/newpct1.py b/plugin.video.alfa/channels/newpct1.py index b0a9b36f..009ea8c6 100644 --- a/plugin.video.alfa/channels/newpct1.py +++ b/plugin.video.alfa/channels/newpct1.py @@ -412,8 +412,6 @@ def episodios(item): season = match['season'] episode = match['episode'] - infoLabels['season']= season - infoLabels['episode'] = episode itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=url, thumbnail=thumb, quality=item.quality, multi=multi, contentSeason=season, contentEpisodeNumber=episode, infoLabels = infoLabels)) @@ -421,8 +419,12 @@ def episodios(item): # order list tmdb.set_infoLabels_itemlist(itemlist, seekTmdb = True) if len(itemlist) > 1: - return sorted(itemlist, key=lambda it: (int(it.contentSeason), int(it.contentEpisodeNumber))) + itemlist = sorted(itemlist, key=lambda it: (int(it.contentSeason), int(it.contentEpisodeNumber))) + if config.get_videolibrary_support() and len(itemlist) > 0: + itemlist.append( + item.clone(title="Añadir esta serie a la videoteca", action="add_serie_to_library", extra="episodios")) + return itemlist def search(item, texto): diff --git a/plugin.video.alfa/channels/pedropolis.json b/plugin.video.alfa/channels/pedropolis.json new file mode 100644 index 00000000..23a8450d --- /dev/null +++ b/plugin.video.alfa/channels/pedropolis.json @@ -0,0 +1,73 @@ +{ + "id": "pedropolis", + "name": "PedroPolis", + "active": true, + "adult": false, + "language": "es", + "fanart": "https://scontent-lht6-1.xx.fbcdn.net/v/t31.0-8/21056316_670362456502498_8317422545691005578_o.png?oh=1f13a23a931d82e944a7ec743a19f583&oe=5A599F4D", + "thumbnail": "https://scontent-lht6-1.xx.fbcdn.net/v/t1.0-9/20292600_467501756957771_6794721577753226614_n.jpg?oh=bba1479eccf0adceeb8c0d3450cc2531&oe=5A4EE0F5", + "banner": "", + "version": 1, + "changes": [ + { + "date": "15/08/17", + "description": "Nuevo Canal" + } + ], + "categories": [ + "latino", + "movie", + "tvshow", + "vos" + ], + "settings": [ + { + "id": "modo_grafico", + "type": "bool", + "label": "Buscar información extra", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "perfil", + "type": "list", + "label": "Perfil de color", + "default": 3, + "enabled": true, + "visible": true, + "lvalues": [ + "Sin color", + "Perfil 5", + "Perfil 4", + "Perfil 3", + "Perfil 2", + "Perfil 1" + ] + }, + { + "id": "orden_episodios", + "type": "bool", + "label": "Mostrar los episodios de las series en orden descendente", + "default": false, + "enabled": true, + "visible": true + }, + { + "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 + } + ] +} diff --git a/plugin.video.alfa/channels/pedropolis.py b/plugin.video.alfa/channels/pedropolis.py new file mode 100644 index 00000000..c5a01871 --- /dev/null +++ b/plugin.video.alfa/channels/pedropolis.py @@ -0,0 +1,464 @@ +# -*- coding: utf-8 -*- +# -*- Channel PedroPolis -*- +# -*- Created for Alfa-addon -*- +# -*- By the Alfa Develop Group -*- + +import re +import sys +import urllib +import urlparse + +from core import httptools +from core import scrapertools +from core import servertools +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" + +host = "http://pedropolis.com/" + +try: + __modo_grafico__ = config.get_setting('modo_grafico', __channel__) + __perfil__ = int(config.get_setting('perfil', __channel__)) +except: + __modo_grafico__ = True + __perfil__ = 0 + +# Fijar perfil de color +perfil = [['0xFFFFE6CC', '0xFFFFCE9C', '0xFF994D00', '0xFFFE2E2E', '0xFFFFD700'], + ['0xFFA5F6AF', '0xFF5FDA6D', '0xFF11811E', '0xFFFE2E2E', '0xFFFFD700'], + ['0xFF58D3F7', '0xFF2E9AFE', '0xFF2E64FE', '0xFFFE2E2E', '0xFFFFD700']] +if __perfil__ < 3: + color1, color2, color3, color4, color5 = perfil[__perfil__] +else: + color1 = color2 = color3 = color4 = color5 = "" + +headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'], + ['Referer', host]] + +parameters = channeltools.get_channel_parameters(__channel__) +fanart_host = parameters['fanart'] +thumbnail_host = parameters['thumbnail'] + + +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)] + + 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"), + + 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)] + + return itemlist + + +def menuseries(item): + logger.info() + 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", + 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", + viewcontent='tvshows', url=host + 'calificaciones/?get=tv', viewmode="movie_with_plot")] + + return itemlist + + +def peliculas(item): + logger.info() + itemlist = [] + url_next_page = '' + data = httptools.downloadpage(item.url).data + data = 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) + + # Paginación + if item.next_page != 'b': + if len(matches) > 19: + url_next_page = item.url + matches = matches[:19] + next_page = 'b' + else: + matches = matches[19:] + next_page = 'a' + patron_next_page = "\d+ 0: + url_next_page = urlparse.urljoin(item.url, matches_next_page[0]) + + for scrapedthumbnail, scrapedtitle, rating, calidad, scrapedurl, year in matches: + if 'Proximamente' not in calidad: + scrapedtitle = scrapedtitle.replace('Ver ', '').partition(' /')[0].partition(':')[0].replace( + 'Español Latino', '').strip() + title = "%s [COLOR green][%s][/COLOR] [COLOR yellow][%s][/COLOR]" % (scrapedtitle, year, calidad) + + new_item = Item(channel=__channel__, action="findvideos", contentTitle=scrapedtitle, + infoLabels={'year': year, 'rating': rating}, thumbnail=scrapedthumbnail, + url=scrapedurl, next_page=next_page, quality=calidad, title=title) + if year: + tmdb.set_infoLabels_item(new_item, __modo_grafico__) + 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"))) + + 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, '
.*?

([' + '^<]+)

') + item.plot = scrapertools.htmlclean(item.plot) + item.infoLabels['director'] = scrapertools.find_single_match(data, + '
([^<]+)') + item.infoLabels['rating'] = scrapertools.find_single_match(data, '([^<]+)') + item.infoLabels['votes'] = scrapertools.find_single_match(data, '[' + '^<]+\s(.*?) votos') + + 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 = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + # logger.info(data) + data = scrapertools.find_single_match(data, 'Genero
(.*?)
  • ", "", data) + # logger.info(data) + + patron = '
    ([^.*?' + + matches = scrapertools.find_multiple_matches(data, patron) + + if item.next_page != 'b': + if len(matches) > 19: + url_next_page = item.url + matches = matches[:19] + next_page = 'b' + else: + matches = matches[19:] + next_page = 'a' + patron_next_page = '' + matches_next_page = re.compile(patron_next_page, re.DOTALL).findall(data) + if len(matches_next_page) > 0: + 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')) + + 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) + 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.infoLabels['season'] = temporada + new_item.extra = "" + itemlist.append(new_item) + + tmdb.set_infoLabels(itemlist, __modo_grafico__) + for i in itemlist: + i.title = "%s. %s" % (i.infoLabels['season'], i.infoLabels['tvshowtitle']) + if i.infoLabels['title']: + # Si la temporada tiene nombre propio añadírselo al titulo del item + i.title += " - %s" % (i.infoLabels['title']) + if i.infoLabels.has_key('poster_path'): + # Si la temporada tiene poster propio remplazar al de la serie + i.thumbnail = i.infoLabels['poster_path'] + + 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) + + +def episodios(item): + logger.info() + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t| |
    ", "", data) + # logger.info(data) + patron = '
    .*?' # url cap, img + patron += '
    (.*?)
    .*?' # numerando cap + patron += '
    ([^<]+)' # title de episodios + + matches = scrapertools.find_multiple_matches(data, patron) + + for scrapedurl, scrapedtitle, scrapedname in matches: + scrapedtitle = scrapedtitle.replace('--', '0') + patron = '(\d+) - (\d+)' + match = re.compile(patron, re.DOTALL).findall(scrapedtitle) + season, episode = match[0] + + if 'season' in item.infoLabels and int(item.infoLabels['season']) != int(season): + continue + + 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') + if 'infoLabels' not in new_item: + new_item.infoLabels = {} + + new_item.infoLabels['season'] = season + 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: + # Obtenemos los datos de todos los capítulos de la temporada mediante multihilos + tmdb.set_infoLabels(itemlist, __modo_grafico__) + 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']) + if i.infoLabels.has_key('poster_path'): + # Si el capitulo tiene imagen propia remplazar al poster + i.thumbnail = i.infoLabels['poster_path'] + + itemlist.sort(key=lambda it: int(it.infoLabels['episode']), + reverse=config.get_setting('orden_episodios', __channel__)) + + # 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=get_thumb("videolibrary_tvshow.png"), fanart=fanart_host)) + + return itemlist + + +def findvideos(item): + logger.info() + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + # logger.info(data) + patron = '
    ' # lang, url + 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)) + + return itemlist diff --git a/plugin.video.alfa/channels/peliculasaudiolatino.py b/plugin.video.alfa/channels/peliculasaudiolatino.py index ad495cdc..d5a021ac 100644 --- a/plugin.video.alfa/channels/peliculasaudiolatino.py +++ b/plugin.video.alfa/channels/peliculasaudiolatino.py @@ -7,7 +7,7 @@ from core import httptools from core import scrapertools from core import servertools from core.item import Item -from platformcode import logger +from platformcode import logger, config HOST = 'http://peliculasaudiolatino.com' @@ -154,9 +154,18 @@ def findvideos(item): for servidor, idioma, calidad, scrapedurl in matches: url = scrapedurl server = servertools.get_server_name(servidor) - title = item.title + title = "Enlace encontrado en %s" % (server) itemlist.append(Item(channel=item.channel, action="play", title=title, fulltitle=item.fulltitle, url=url, thumbnail=scrapedthumbnail, language=idioma, quality=calidad, server=server)) + if itemlist: + itemlist.append(Item(channel=item.channel)) + itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", + text_color="magenta")) + # Opción "Añadir esta película a la biblioteca de KODI" + if config.get_videolibrary_support(): + itemlist.append(Item(channel=item.channel, title="Añadir pelicula a la videoteca", text_color="green", + action="add_pelicula_to_library", url=item.url, thumbnail=item.thumbnail, + fulltitle=item.fulltitle)) return itemlist diff --git a/plugin.video.alfa/channels/peliculasnu.py b/plugin.video.alfa/channels/peliculasnu.py index e829b664..edfe851f 100644 --- a/plugin.video.alfa/channels/peliculasnu.py +++ b/plugin.video.alfa/channels/peliculasnu.py @@ -89,7 +89,7 @@ def newest(categoria): except: import sys for line in sys.exc_info(): - logger.error("{0}".format(line)) + logger.error("%s" % line) return [] return itemlist @@ -215,14 +215,14 @@ def findvideos(item): url = url + '|' + item.url title = "%s - %s" % ('%s', title) - itemlist.append(Item (channel=item.channel, action="play", url=url, title=title, text_color=color3)) + itemlist.append(Item(channel=item.channel, action="play", url=url, title=title, text_color=color3)) itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) if item.extra != "findvideos" and config.get_videolibrary_support(): - itemlist.append(Item (channel=item.channel, title="Añadir película a la videoteca", \ - action="add_pelicula_to_library", - extra="findvideos", text_color="green")) + itemlist.append( + item.clone(title="Añadir película a la videoteca", action="add_pelicula_to_library", extra="findvideos", + text_color="green")) return itemlist diff --git a/plugin.video.alfa/channels/peliculasrey.py b/plugin.video.alfa/channels/peliculasrey.py index aae92931..bcaa5abd 100755 --- a/plugin.video.alfa/channels/peliculasrey.py +++ b/plugin.video.alfa/channels/peliculasrey.py @@ -198,6 +198,15 @@ def findvideos(item): quality = quality )) itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) + if itemlist: + itemlist.append(Item(channel=item.channel)) + itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", + text_color="magenta")) + # Opción "Añadir esta película a la biblioteca de KODI" + if config.get_videolibrary_support(): + itemlist.append(Item(channel=item.channel, title="Añadir pelicula a la videoteca", text_color="green", + action="add_pelicula_to_library", url=item.url, thumbnail=item.thumbnail, + fulltitle=item.fulltitle)) return itemlist diff --git a/plugin.video.alfa/channels/pelis24.json b/plugin.video.alfa/channels/pelis24.json index fd53d735..d20e28c6 100755 --- a/plugin.video.alfa/channels/pelis24.json +++ b/plugin.video.alfa/channels/pelis24.json @@ -1,7 +1,7 @@ { "id": "pelis24", "name": "Pelis24", - "active": true, + "active": false, "adult": false, "language": "es", "thumbnail": "pelis24.png", @@ -49,4 +49,4 @@ "visible": true } ] -} \ No newline at end of file +} diff --git a/plugin.video.alfa/channels/peliscity.py b/plugin.video.alfa/channels/peliscity.py index daa198c0..78a924df 100755 --- a/plugin.video.alfa/channels/peliscity.py +++ b/plugin.video.alfa/channels/peliscity.py @@ -1,27 +1,38 @@ # -*- coding: utf-8 -*- import re -import urlparse +from core import httptools from core import scrapertools from core import servertools from core.item import Item -from platformcode import logger +from platformcode import config, logger +host = "http://peliscity.com" def mainlist(item): logger.info() - itemlist = [] + + data = httptools.downloadpage(host).data + patron = 'cat-item.*?span>([^<]+)' + matches = scrapertools.find_multiple_matches(data, patron) + can = 0 + for cantidad in matches: + can += int(cantidad.replace(".", "")) + + itemlist.append( - Item(channel=item.channel, title="Últimas agregadas", action="agregadas", url="http://peliscity.com", + Item(channel=item.channel, title="Películas: (%s)" %can, text_bold=True)) + itemlist.append( + Item(channel=item.channel, title=" Últimas agregadas", action="agregadas", url= host, viewmode="movie_with_plot")) - itemlist.append(Item(channel=item.channel, title="Peliculas HD", action="agregadas", - url="http://peliscity.com/calidad/hd-real-720", viewmode="movie_with_plot")) + itemlist.append(Item(channel=item.channel, title=" Peliculas HD", action="agregadas", + url= host + "/calidad/hd-real-720", viewmode="movie_with_plot")) itemlist.append( - Item(channel=item.channel, title="Listado por género", action="porGenero", url="http://peliscity.com")) - itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url="http://peliscity.com/?s=")) - itemlist.append(Item(channel=item.channel, title="Idioma", action="porIdioma", url="http://peliscity.com/")) + Item(channel=item.channel, title=" Listado por género", action="porGenero", url= host)) + itemlist.append(Item(channel=item.channel, title=" Buscar", action="search", url= host + "/?s=")) + itemlist.append(Item(channel=item.channel, title=" Idioma", action="porIdioma", url= host)) return itemlist @@ -29,12 +40,12 @@ def mainlist(item): def porIdioma(item): itemlist = [] itemlist.append(Item(channel=item.channel, title="Castellano", action="agregadas", - url="http://www.peliscity.com/idioma/espanol-castellano/", viewmode="movie_with_plot")) + url= host + "/idioma/espanol-castellano/", viewmode="movie_with_plot")) itemlist.append( - Item(channel=item.channel, title="VOS", action="agregadas", url="http://www.peliscity.com/idioma/subtitulada/", + Item(channel=item.channel, title="VOS", action="agregadas", url= host + "/idioma/subtitulada/", viewmode="movie_with_plot")) itemlist.append(Item(channel=item.channel, title="Latino", action="agregadas", - url="http://www.peliscity.com/idioma/espanol-latino/", viewmode="movie_with_plot")) + url= host + "/idioma/espanol-latino/", viewmode="movie_with_plot")) return itemlist @@ -43,15 +54,16 @@ def porGenero(item): logger.info() itemlist = [] - data = scrapertools.cache_page(item.url) + data = httptools.downloadpage(item.url).data - logger.info("data=" + data) - patron = 'cat-item.*?href="([^"]+).*?>(.*?)<' + patron = 'cat-item.*?href="([^"]+).*?>(.*?)<.*?span>([^<]+)' matches = re.compile(patron, re.DOTALL).findall(data) - for urlgen, genero in matches: - itemlist.append(Item(channel=item.channel, action="agregadas", title=genero, url=urlgen, folder=True, + for urlgen, genero, cantidad in matches: + cantidad = cantidad.replace(".", "") + titulo = genero + " (" + cantidad + ")" + itemlist.append(Item(channel=item.channel, action="agregadas", title=titulo, url=urlgen, folder=True, viewmode="movie_with_plot")) return itemlist @@ -60,7 +72,7 @@ def porGenero(item): def search(item, texto): logger.info() texto_post = texto.replace(" ", "+") - item.url = "http://www.peliscity.com/?s=" + texto_post + item.url = host + "/?s=" + texto_post try: return listaBuscar(item) @@ -76,7 +88,7 @@ def agregadas(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) patron = scrapertools.find_multiple_matches (data,'.*?Duración') @@ -92,10 +104,18 @@ def agregadas(item): plot = info[4] year = info[5].strip() - itemlist.append(Item(channel=item.channel, title=title, url=url, action='findvideos',thumbnail=thumbnail, + itemlist.append(Item(channel=item.channel, + action='findvideos', + contentType = "movie", + fulltitle = title, + infoLabels={'year':year}, plot=plot, - quality=quality, infoLabels={'year':year})) - + quality=quality, + thumbnail=thumbnail, + title=title, + contentTitle = title, + url=url + )) # Paginación try: next_page = scrapertools.find_single_match(data,'tima>.*?href=(.*?) >(.*?)<.*?width.*?class="q">(.*?)= 0: + color1, color2, color3 = perfil[__perfil__ - 1] +else: + color1 = color2 = color3 = "" + +headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'], + ['Referer', host]] + +parameters = channeltools.get_channel_parameters(__channel__) +fanart_host = parameters['fanart'] +thumbnail_host = parameters['thumbnail'] +thumbnail = 'https://raw.githubusercontent.com/Inter95/tvguia/master/thumbnails/adults/%s.png' + + +def mainlist(item): + logger.info() + itemlist = [] + itemlist.append(Item(channel=__channel__, action="videos", title="Más Calientes", url=host, + viewmode="movie", thumbnail=get_thumb("channels_adult.png"))) + + itemlist.append(Item(channel=__channel__, title="Nuevas", url=host + 'newest', + action="videos", viewmode="movie_with_plot", viewcontent='movies', + thumbnail=get_thumb("channels_adult.png"))) + + itemlist.append(Item(channel=__channel__, title="Tendencias", url=host + 'tending', + action="videos", viewmode="movie_with_plot", viewcontent='movies', + thumbnail=get_thumb("channels_adult.png"))) + + itemlist.append(Item(channel=__channel__, title="Mejores Videos", url=host + 'top', + action="videos", viewmode="movie_with_plot", viewcontent='movies', + thumbnail=get_thumb("channels_adult.png"))) + + itemlist.append(Item(channel=__channel__, title="Populares", url=host + 'popular', + action="videos", viewmode="movie_with_plot", viewcontent='movies', + thumbnail=get_thumb("channels_adult.png"))) + + itemlist.append(Item(channel=__channel__, title="Videos en HD", url=host + 'hd', + action="videos", viewmode="movie_with_plot", viewcontent='movies', + thumbnail=get_thumb("channels_adult.png"))) + + itemlist.append(Item(channel=__channel__, title="Caseros", url=host + 'hd', + action="videos", viewmode="movie_with_plot", viewcontent='homemade', + thumbnail=get_thumb("channels_adult.png"))) + + itemlist.append(Item(channel=__channel__, title="Categorías", action="categorias", + url=host + 'categories/', viewmode="movie_with_plot", viewcontent='movies', + thumbnail=get_thumb("channels_adult.png"))) + + itemlist.append(Item(channel=__channel__, title="Buscador", action="search", url=host, + thumbnail=get_thumb("channels_adult.png"), extra="buscar")) + return itemlist + + +# REALMENTE PASA LA DIRECCION DE BUSQUEDA + +def search(item, texto): + logger.info() + texto = texto.replace(" ", "+") + item.url = urlparse.urljoin(item.url, "video/search?q={0}".format(texto)) + # item.url = item.url % tecleado + item.extra = "buscar" + try: + return videos(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 videos(item): + logger.info() + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + patron = '' # url + patron += '').replace('amp;', '') + + if paginacion: + itemlist.append(Item(channel=item.channel, action="videos", + thumbnail=thumbnail % 'rarrow', + title="\xc2\xbb Siguiente \xc2\xbb", url=paginacion)) + + return itemlist + + +def categorias(item): + logger.info() + itemlist = [] + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t| |
    ", "", data) + # logger.info(data) + patron = 'class="checkHomepage">
    > Página siguiente": @@ -80,9 +70,9 @@ def newest(categoria): item = Item() try: if categoria == 'peliculas': - item.url = HOST + "/ultimas-y-actualizadas" + item.url = HOST elif categoria == 'infantiles': - item.url = HOST + "/search/?q=&genre%5B%5D=animation" + item.url = HOST + "/genre/16/" else: return [] @@ -103,59 +93,46 @@ def newest(categoria): def peliculas(item): logger.info() itemlist = [] - url_next_page = "" data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) - patron = '
    30: - url_next_page = item.url - matches = matches[:30] - next_page = 'b' - else: - matches = matches[30:] - next_page = 'a' - patron_next_page = 'Anteriores 0: - url_next_page = matches_next_page[0] - - for scrapedurl, scrapedthumbnail, idiomas, year, scrapedtitle in matches: - patronidiomas = " 0: + url_next_page = item.url + matches_next_page + for scrapedurl, scrapedthumbnail, year, idiomas, scrapedtitle in matches: + year = year.strip() + patronidiomas = '' - data = scrapertoolsV2.get_match(data, patron) - + patron = 'Generos.*?' + data = scrapertools.find_single_match(data, patron) # Extrae las entradas - patron = "" - matches = re.compile(patron, re.DOTALL).findall(data) - - itemlist = [] - for scrapedvalue, scrapedtitle in matches: - thumbnail = "" - - if item.extra == 'genre': - if scrapedtitle.strip() in ['Documental', 'Short', 'News']: - continue - - url = HOST + "/search/?q=&genre%5B%5D=" + scrapedvalue - filename = scrapedtitle.lower().replace(' ', '%20') - if filename == "ciencia%20ficción": - filename = "ciencia%20ficcion" - thumbnail = "https://raw.githubusercontent.com/master-1970/resources/master/images/genres/4/verdes/%s.png" \ - % filename - - elif item.extra == 'year': - url = HOST + "/search/?q=&year=" + scrapedvalue - thumbnail = item.thumbnail - else: - # http://www.yaske.ro/search/?q=&quality%5B%5D=c9 - # http://www.yaske.ro/search/?q=&audio%5B%5D=es - url = HOST + "/search/?q=&" + item.extra + "%5B%5D=" + scrapedvalue - thumbnail = item.thumbnail - - itemlist.append(Item(channel=item.channel, action="peliculas", title=scrapedtitle, url=url, text_color=color1, - thumbnail=thumbnail, contentType='movie', folder=True, viewmode="movie_with_plot")) + patron = 'href="([^"]+)">([^<]+)' + matches = scrapertools.find_multiple_matches(data, patron) + for scrapedurl, scrapedtitle in matches: + url = HOST + scrapedurl + itemlist.append(Item(channel = item.channel, + action = "peliculas", + title = scrapedtitle, + url = url, + text_color = color1, + contentType = 'movie', + folder = True, + viewmode = "movie_with_plot" + )) if item.extra in ['genre', 'audio', 'year']: return sorted(itemlist, key=lambda i: i.title.lower(), reverse=item.extra == 'year') @@ -214,29 +175,28 @@ def menu_buscar_contenido(item): def findvideos(item): logger.info() - itemlist = list() - sublist = list() + itemlist = [] + sublist = [] # Descarga la página - data = httptools.downloadpage(item.url).data - + url = "http://widget.olimpo.link/playlist/?tmdb=" + scrapertools.find_single_match(item.url, 'yaske.ro/([0-9]+)') + data = httptools.downloadpage(url).data if not item.plot: item.plot = scrapertoolsV2.find_single_match(data, '>Sinopsis
    ([^<]+)
    ') item.plot = scrapertoolsV2.decodeHtmlentities(item.plot) - patron = '
    ([^<]+)' - matches = re.compile(patron, re.DOTALL).findall(data) + patron = '(/embed/[^"]+).*?' + patron += 'quality text-overflow ">([^<]+).*?' + patron += 'title="([^"]+)' + matches = scrapertools.find_multiple_matches(data, patron) - for url, idioma, calidad in matches: - if 'yaske' in url: + for url, calidad, idioma in matches: + if 'embed' in url: + url = "http://widget.olimpo.link" + url data = httptools.downloadpage(url).data - url_enc = scrapertoolsV2.find_single_match(data, "eval.*?'(.*?)'") - url_dec = base64.b64decode(url_enc) - url = scrapertoolsV2.find_single_match(url_dec, 'iframe src="(.*?)"') - sublist.append(item.clone(action="play", url=url, folder=False, text_color=color1, quality=calidad.strip(), + url = scrapertools.find_single_match(data, 'iframe src="([^"]+)') + sublist.append(item.clone(channel=item.channel, action="play", url=url, folder=False, text_color=color1, quality=calidad.strip(), language=idioma.strip())) - sublist = servertools.get_servers_itemlist(sublist, lambda i: "Ver en %s %s" % (i.server, i.quality), True) # Añadir servidores encontrados, agrupandolos por idioma diff --git a/plugin.video.alfa/core/scrapertools.py b/plugin.video.alfa/core/scrapertools.py index dccc692e..86b97cb5 100755 --- a/plugin.video.alfa/core/scrapertools.py +++ b/plugin.video.alfa/core/scrapertools.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# -*- coding: utf-8 -*- # -------------------------------------------------------------------------------- # Scraper tools for reading and processing web elements # -------------------------------------------------------------------------------- @@ -214,6 +214,7 @@ def htmlclean(cadena): cadena = cadena.replace("", "") cadena = cadena.replace("", "") cadena = cadena.replace("", "") cadena = cadena.replace("
    ", " ") cadena = cadena.replace("
    ", " ") cadena = cadena.replace("
    ", " ") diff --git a/plugin.video.alfa/core/scrapertoolsV2.py b/plugin.video.alfa/core/scrapertoolsV2.py index fffa278a..dd9e1b14 100755 --- a/plugin.video.alfa/core/scrapertoolsV2.py +++ b/plugin.video.alfa/core/scrapertoolsV2.py @@ -81,6 +81,7 @@ def htmlclean(cadena): cadena = cadena.replace("", "") cadena = cadena.replace("", "") cadena = cadena.replace("", "") cadena = cadena.replace("
    ", " ") cadena = cadena.replace("
    ", " ") cadena = cadena.replace("
    ", " ") diff --git a/plugin.video.alfa/platformcode/platformtools.py b/plugin.video.alfa/platformcode/platformtools.py index f2d001a8..36209879 100644 --- a/plugin.video.alfa/platformcode/platformtools.py +++ b/plugin.video.alfa/platformcode/platformtools.py @@ -131,17 +131,26 @@ def render_items(itemlist, parent_item): else: icon_image = "DefaultVideo.png" - # Creamos el listitem - listitem = xbmcgui.ListItem(item.title, iconImage=icon_image, thumbnailImage=item.thumbnail) - # Ponemos el fanart if item.fanart: - listitem.setProperty('fanart_image', item.fanart) + fanart = item.fanart else: - listitem.setProperty('fanart_image', os.path.join(config.get_runtime_path(), "fanart.jpg")) + fanart = os.path.join(config.get_runtime_path(), "fanart.jpg") - # TODO: ¿Se puede eliminar esta linea? yo no he visto que haga ningun efecto. - xbmcplugin.setPluginFanart(int(sys.argv[1]), os.path.join(config.get_runtime_path(), "fanart.jpg")) + # Creamos el listitem + listitem = xbmcgui.ListItem(item.title) + + # values icon, thumb or poster are skin dependent.. so we set all to avoid problems + # if not exists thumb it's used icon value + if config.get_platform(True)['num_version'] >= 16.0: + listitem.setArt({'icon': icon_image, 'thumb': item.thumbnail, 'poster': item.thumbnail, 'fanart': fanart}) + else: + listitem.setIconImage(icon_image) + listitem.setThumbnailImage(item.thumbnail) + listitem.setProperty('fanart_image', fanart) + + # No need it, use fanart instead + # xbmcplugin.setPluginFanart(int(sys.argv[1]), os.path.join(config.get_runtime_path(), "fanart.jpg")) # Esta opcion es para poder utilizar el xbmcplugin.setResolvedUrl() # if item.isPlayable == True or (config.get_setting("player_mode") == 1 and item.action == "play"): @@ -157,7 +166,10 @@ def render_items(itemlist, parent_item): context_commands = set_context_commands(item, parent_item) # Añadimos el item - listitem.addContextMenuItems(context_commands, replaceItems=True) + if config.get_platform(True)['num_version'] >= 17.0: + listitem.addContextMenuItems(context_commands) + else: + listitem.addContextMenuItems(context_commands, replaceItems=True) if not item.totalItems: item.totalItems = 0 @@ -166,7 +178,7 @@ def render_items(itemlist, parent_item): totalItems=item.totalItems) # Fijar los tipos de vistas... - if config.get_setting("forceview") == True: + if config.get_setting("forceview"): # ...forzamos segun el viewcontent xbmcplugin.setContent(int(sys.argv[1]), parent_item.viewcontent) # logger.debug(parent_item) @@ -184,7 +196,7 @@ def render_items(itemlist, parent_item): xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True) # Fijar la vista - if config.get_setting("forceview") == True: + if config.get_setting("forceview"): viewmode_id = get_viewmode_id(parent_item) xbmc.executebuiltin("Container.SetViewMode(%s)" % viewmode_id) @@ -256,10 +268,6 @@ def set_infolabels(listitem, item, player=False): elif not player: listitem.setInfo("video", {"Title": item.title}) - # Añadido para Kodi Krypton (v17) - if config.get_platform(True)['num_version'] >= 17.0: - listitem.setArt({"poster": item.thumbnail}) - def set_context_commands(item, parent_item): """ @@ -458,7 +466,12 @@ def play_video(item, strm=False, force_direct=False): if item.channel == 'downloads': logger.info("Reproducir video local: %s [%s]" % (item.title, item.url)) - xlistitem = xbmcgui.ListItem(path=item.url, thumbnailImage=item.thumbnail) + xlistitem = xbmcgui.ListItem(path=item.url) + if config.get_platform(True)['num_version'] >= 16.0: + xlistitem.setArt({"thumb": item.thumbnail}) + else: + xlistitem.setThumbnailImage(item.thumbnail) + set_infolabels(xlistitem, item, True) xbmc.Player().play(item.url, xlistitem) return @@ -491,9 +504,16 @@ def play_video(item, strm=False, force_direct=False): # se obtiene la información del video. if not item.contentThumbnail: - xlistitem = xbmcgui.ListItem(path=mediaurl, thumbnailImage=item.thumbnail) + thumb = item.thumbnail else: - xlistitem = xbmcgui.ListItem(path=mediaurl, thumbnailImage=item.contentThumbnail) + thumb = item.contentThumbnail + + xlistitem = xbmcgui.ListItem(path=item.url) + if config.get_platform(True)['num_version'] >= 16.0: + xlistitem.setArt({"thumb": thumb}) + else: + xlistitem.setThumbnailImage(thumb) + set_infolabels(xlistitem, item, True) # si se trata de un vídeo en formato mpd, se configura el listitem para reproducirlo @@ -695,7 +715,14 @@ def set_opcion(item, seleccion, opciones, video_urls): if seleccion == -1: # Para evitar el error "Uno o más elementos fallaron" al cancelar la selección desde fichero strm - listitem = xbmcgui.ListItem(item.title, iconImage="DefaultVideo.png", thumbnailImage=item.thumbnail) + listitem = xbmcgui.ListItem(item.title) + + if config.get_platform(True)['num_version'] >= 16.0: + listitem.setArt({'icon':"DefaultVideo.png", 'thumb': item.thumbnail}) + else: + listitem.setIconImage("DefaultVideo.png") + listitem.setThumbnailImage(item.thumbnail) + xbmcplugin.setResolvedUrl(int(sys.argv[1]), False, listitem) # "Descargar" diff --git a/plugin.video.alfa/servers/cloudy.json b/plugin.video.alfa/servers/cloudy.json index e6ad3b7a..a0d0f523 100755 --- a/plugin.video.alfa/servers/cloudy.json +++ b/plugin.video.alfa/servers/cloudy.json @@ -15,7 +15,7 @@ "patterns": [ { "pattern": "cloudy.ec/(?:embed.php\\?id=|v/)([A-z0-9]+)", - "url": "https://www.cloudy.ec/embed.php?id=\\1" + "url": "https://www.cloudy.ec/embed.php?id=\\1&playerPage=1" } ] }, @@ -49,4 +49,4 @@ } ], "version": 1 -} \ No newline at end of file +} diff --git a/plugin.video.alfa/servers/openload.py b/plugin.video.alfa/servers/openload.py index e667b72f..692f57c3 100644 --- a/plugin.video.alfa/servers/openload.py +++ b/plugin.video.alfa/servers/openload.py @@ -52,7 +52,8 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= numeros = scrapertools.find_single_match(data, '_[A-f0-9]+x[A-f0-9]+\s*(?:=|\^)\s*([0-9]{4,}|0x[A-f0-9]{4,})') op1, op2 = scrapertools.find_single_match(data, '\(0x(\d),0x(\d)\);') idparse, hexparse = scrapertools.find_multiple_matches(data, "parseInt\('([0-9]+)'") - numeros = [numeros, str(int(hexparse, 8))] + # numeros = [numeros, str(int(hexparse, 8))] + rangos, rangos2 = scrapertools.find_single_match(data, "\)-([0-9]+).0x4\)/\(([0-9]+)") videourl = "" for encode in var_encodes: text_decode = "" @@ -81,11 +82,12 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= if value3 < index1: break - value4 = value2 ^ decode1[j % (mult / 8)] ^ int(idparse,8) - for n in numeros: - if not n.isdigit(): - n = int(n, 16) - value4 ^= int(n) + # value4 = value2 ^ decode1[j % (mult / 8)] ^ int(idparse,8) + # for n in numeros: + # if not n.isdigit(): + # n = int(n, 16) + # value4 ^= int(n) + value4 = value2 ^ decode1[(j % 9)] ^ (int(idparse, 8) - int(rangos) + 4) / (int(rangos2) - 8) ^ int(hexparse, 8) value5 = index1 * 2 + 127 for h in range(4): valorfinal = (value4 >> 8 * h) & (value5) diff --git a/plugin.video.alfa/servers/pelismundo.py b/plugin.video.alfa/servers/pelismundo.py index c86ad7f3..19778c45 100644 --- a/plugin.video.alfa/servers/pelismundo.py +++ b/plugin.video.alfa/servers/pelismundo.py @@ -12,8 +12,8 @@ from platformcode import logger def test_video_exists(page_url): logger.info("(page_url='%s')" % page_url) - data = httptools.downloadpage(page_url).data - if "Object not found" in data or "no longer exists" in data or '"sources": [false]' in data: + data = httptools.downloadpage(page_url, add_referer = True).data + if "Object not found" in data or "no longer exists" in data or '"sources": [false]' in data or 'sources: []' in data: return False, "[pelismundo] El archivo no existe o ha sido borrado" return True, "" diff --git a/plugin.video.alfa/servers/streamplay.py b/plugin.video.alfa/servers/streamplay.py index 8beafa7a..32860478 100644 --- a/plugin.video.alfa/servers/streamplay.py +++ b/plugin.video.alfa/servers/streamplay.py @@ -32,11 +32,15 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= data = scrapertools.find_single_match(data.replace('"', "'"), "sources\s*=[^\[]*\[([^\]]+)\]") matches = scrapertools.find_multiple_matches(data, "[src|file]:'([^']+)'") + if len(matches) == 0: + matches = scrapertools.find_multiple_matches(data, "[^',]+") video_urls = [] for video_url in matches: + if video_url.endswith(".mpd"): + continue _hash = scrapertools.find_single_match(video_url, '[A-z0-9\_\-]{40,}') hash = _hash[::-1] - hash = hash.replace(hash[1:2],"",1) + hash = hash.replace(hash[1:2], "", 1) video_url = video_url.replace(_hash, hash) filename = scrapertools.get_filename_from_url(video_url)[-4:] @@ -56,107 +60,3 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= logger.info(" %s - %s" % (video_url[0], video_url[1])) return video_urls - - -def decrypt(h, k): - import base64 - - if len(h) % 4: - h += "=" * (4 - len(h) % 4) - sig = [] - h = base64.b64decode(h.replace("-", "+").replace("_", "/")) - for c in range(len(h)): - sig += [ord(h[c])] - - sec = [] - for c in range(len(k)): - sec += [ord(k[c])] - - dig = range(256) - g = 0 - v = 128 - for b in range(len(sec)): - a = (v + (sec[b] & 15)) % 256 - c = dig[(g)] - dig[g] = dig[a] - dig[a] = c - g += 1 - - a = (v + (sec[b] >> 4 & 15)) % 256 - c = dig[g] - dig[g] = dig[a] - dig[a] = c - g += 1 - - k = 0 - q = 1 - p = 0 - n = 0 - for b in range(512): - k = (k + q) % 256 - n = (p + dig[(n + dig[k]) % 256]) % 256 - p = (k + p + dig[n]) % 256 - c = dig[k] - dig[k] = dig[n] - dig[n] = c - - q = 3 - for a in range(v): - b = 255 - a - if dig[a] > dig[b]: - c = dig[a] - dig[a] = dig[b] - dig[b] = c - - k = 0 - for b in range(512): - k = (k + q) % 256 - n = (p + dig[(n + dig[k]) % 256]) % 256 - p = (k + p + dig[n]) % 256 - c = dig[k] - dig[k] = dig[n] - dig[n] = c - - q = 5 - for a in range(v): - b = 255 - a - if dig[a] > dig[b]: - c = dig[a] - dig[a] = dig[b] - dig[b] = c - - k = 0 - for b in range(512): - k = (k + q) % 256 - n = (p + dig[(n + dig[k]) % 256]) % 256 - p = (k + p + dig[n]) % 256 - c = dig[k] - dig[k] = dig[n] - dig[n] = c - - q = 7 - k = 0 - u = 0 - d = [] - for b in range(len(dig)): - k = (k + q) % 256 - n = (p + dig[(n + dig[k]) % 256]) % 256 - p = (k + p + dig[n]) % 256 - c = dig[k] - dig[k] = dig[n] - dig[n] = c - u = dig[(n + dig[(k + dig[(u + p) % 256]) % 256]) % 256] - d += [u] - - c = [] - for f in range(len(d)): - try: - c += [(256 + (sig[f] - d[f])) % 256] - except: - break - - h = "" - for s in c: - h += chr(s) - - return h diff --git a/plugin.video.alfa/servers/uptobox.py b/plugin.video.alfa/servers/uptobox.py index afcb5559..d563ca52 100755 --- a/plugin.video.alfa/servers/uptobox.py +++ b/plugin.video.alfa/servers/uptobox.py @@ -2,6 +2,7 @@ import urllib +from core import httptools from core import scrapertools from platformcode import logger @@ -9,11 +10,11 @@ from platformcode import logger def test_video_exists(page_url): logger.info("(page_url='%s')" % page_url) - data = scrapertools.cache_page(page_url) + data = httptools.downloadpage(page_url).data if "Streaming link:" in data: return True, "" - elif "Unfortunately, the file you want is not available." in data: + elif "Unfortunately, the file you want is not available." in data or "Unfortunately, the video you want to see is not available" in data: return False, "[Uptobox] El archivo no existe o ha sido borrado" wait = scrapertools.find_single_match(data, "You have to wait ([0-9]+) (minute|second)") if len(wait) > 0: @@ -27,20 +28,20 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= logger.info("(page_url='%s')" % page_url) # Si el enlace es directo de upstream if "uptobox" not in page_url: - data = scrapertools.cache_page(page_url) + data = httptools.downloadpage(page_url).data if "Video not found" in data: page_url = page_url.replace("uptostream.com/iframe/", "uptobox.com/") - data = scrapertools.cache_page(page_url) + data = httptools.downloadpage(page_url).data video_urls = uptobox(page_url, data) else: video_urls = uptostream(data) else: - data = scrapertools.cache_page(page_url) + data = httptools.downloadpage(page_url).data # Si el archivo tiene enlace de streaming se redirige a upstream if "Streaming link:" in data: page_url = "http://uptostream.com/iframe/" + scrapertools.find_single_match(page_url, 'uptobox.com/([a-z0-9]+)') - data = scrapertools.cache_page(page_url) + data = httptools.downloadpage(page_url).data video_urls = uptostream(data) else: # Si no lo tiene se utiliza la descarga normal @@ -76,7 +77,7 @@ def uptobox(url, data): for inputname, inputvalue in matches: post += inputname + "=" + inputvalue + "&" - data = scrapertools.cache_page(url, post=post[:-1]) + data = httptools.downloadpage(url, post=post[:-1]).data media = scrapertools.find_single_match(data, '
    \s*') # Solo es necesario codificar la ultima parte de la url url_strip = urllib.quote(media.rsplit('/', 1)[1]) diff --git a/plugin.video.alfa/servers/vimeo.json b/plugin.video.alfa/servers/vimeo.json index 60bd2e8f..9d1e1fa1 100755 --- a/plugin.video.alfa/servers/vimeo.json +++ b/plugin.video.alfa/servers/vimeo.json @@ -48,5 +48,6 @@ "visible": false } ], + "thumbnail": "https://s26.postimg.org/vo685y2bt/vimeo1.png", "version": 1 -} \ No newline at end of file +}