diff --git a/plugin.video.alfa/channels/allcalidad.py b/plugin.video.alfa/channels/allcalidad.py index 9d5f6a7e..8a64360a 100755 --- a/plugin.video.alfa/channels/allcalidad.py +++ b/plugin.video.alfa/channels/allcalidad.py @@ -92,9 +92,14 @@ def peliculas(item): matches = scrapertools.find_multiple_matches(data, patron) for url, thumbnail, titulo, varios in matches: idioma = scrapertools.find_single_match(varios, '(?s)Idioma.*?kinopoisk">([^<]+)') + number_idioma = scrapertools.find_single_match(idioma, '[0-9]') + mtitulo = titulo + if number_idioma != "": + idioma = "" + else: + mtitulo += " (" + idioma + ")" year = scrapertools.find_single_match(varios, 'Año.*?kinopoisk">([^<]+)') year = scrapertools.find_single_match(year, '[0-9]{4}') - mtitulo = titulo + " (" + idioma + ")" if year: mtitulo += " (" + year + ")" item.infoLabels['year'] = int(year) diff --git a/plugin.video.alfa/channels/animeyt.json b/plugin.video.alfa/channels/animeyt.json new file mode 100644 index 00000000..d5672f1a --- /dev/null +++ b/plugin.video.alfa/channels/animeyt.json @@ -0,0 +1,36 @@ +{ + "id": "animeyt", + "name": "AnimeYT", + "active": true, + "adult": false, + "language": "es", + "thumbnail": "http://i.imgur.com/dHpupFk.png", + "version": 1, + "changes": [ + { + "date": "17/05/2017", + "description": "Fix novedades y replace en findvideos" + } + ], + "categories": [ + "anime" + ], + "settings": [ + { + "id": "include_in_global_search", + "type": "bool", + "label": "Incluir en busqueda global", + "default": false, + "enabled": true, + "visible": true + }, + { + "id": "modo_grafico", + "type": "bool", + "label": "información extra", + "default": true, + "enabled": true, + "visible": true + } + ] +} diff --git a/plugin.video.alfa/channels/animeyt.py b/plugin.video.alfa/channels/animeyt.py new file mode 100644 index 00000000..bae04053 --- /dev/null +++ b/plugin.video.alfa/channels/animeyt.py @@ -0,0 +1,187 @@ +# -*- 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 core import tmdb +from platformcode import config,logger + +__modo_grafico__ = config.get_setting('modo_grafico', 'animeyt') + +HOST = "http://animeyt.tv/" + +def mainlist(item): + logger.info() + + itemlist = list() + + itemlist.append(Item(channel=item.channel, title="Novedades", action="novedades", url=HOST)) + + itemlist.append(Item(channel=item.channel, title="Recientes", action="recientes", url=HOST)) + + itemlist.append(Item(channel=item.channel, title="Alfabético", action="alfabetico", url=HOST)) + + itemlist.append(Item(channel=item.channel, title="Búsqueda", action="search", url=urlparse.urljoin(HOST, "busqueda?terminos="))) + + + return itemlist + + +def novedades(item): + logger.info() + itemlist = list() + if not item.pagina: + item.pagina = 0 + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t| |
", "", data) + + patron_novedades = '
[\s\S]+?

Comentarios

' + + data_novedades = scrapertools.find_single_match(data, patron_novedades) + + patron = 'href="([^"]+)"[\s\S]+?src="([^"]+)"[^<]+alt="([^"]+) (\d+)([^"]+)' + + matches = scrapertools.find_multiple_matches(data_novedades, patron) + + for url, img, scrapedtitle, eps, info in matches[item.pagina:item.pagina + 20]: + title = scrapedtitle + " " + "1x" + eps + info + title = title.replace("Sub Español", "").replace("sub español", "") + infoLabels = {'filtro': {"original_language": "ja"}.items()} + itemlist.append(Item(channel=item.channel, title=title, url=url, thumb=img, action="findvideos", contentTitle=scrapedtitle, contentSerieName=scrapedtitle, infoLabels=infoLabels, contentType="tvshow")) + try: + from core import tmdb + tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__) + for it in itemlist: + it.thumbnail = it.thumb + except: + pass + + if len(matches) > item.pagina + 20: + pagina = item.pagina + 20 + itemlist.append(item.clone(channel=item.channel, action="novedades", url=item.url, title=">> Página Siguiente", pagina=pagina)) + + return itemlist + + +def alfabetico(item): + logger.info() + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t| |
", "", data) + + + for letra in '0ABCDEFGHIJKLMNOPQRSTUVWXYZ': + titulo = letra + if letra == "0": + letra = "num" + itemlist.append(Item(channel=item.channel, action="recientes", title=titulo, + url=urlparse.urljoin(HOST, "animes?tipo=0&genero=0&anio=0&letra={letra}".format(letra=letra)))) + + + return itemlist + + +def search(item, texto): + logger.info() + + texto = texto.replace(" ","+") + item.url = item.url+texto + if texto!='': + return recientes(item) + + +def recientes(item): + logger.info() + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t| |
", "", data) + + patron_recientes = '
[\s\S]+?' + + data_recientes = scrapertools.find_single_match(data, patron_recientes) + + patron = '(.*?)<.*?

(.*?)(.*?)' + + matches = scrapertools.find_multiple_matches(data_recientes, patron) + + for url, thumbnail, plot, title, cat in matches: + itemlist.append(item.clone(title=title, url=url, action="episodios", show=title, thumbnail=thumbnail, plot=plot, cat=cat)) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb = True) + + paginacion = scrapertools.find_single_match(data, '", "", data) + + patron = 'Player\("(.*?)"' + + matches = scrapertools.find_multiple_matches(data, patron) + + for url in matches: + if "cldup" in url: + title = "Opcion Cldup" + if "chumi" in url: + title = "Opcion Chumi" + itemlist.append(item.clone(channel=item.channel, folder=False, title=title, action="play", url=url)) + + if item.extra != "library": + if config.get_videolibrary_support() and item.extra: + itemlist.append(item.clone(channel=item.channel, title="[COLOR yellow]Añadir pelicula a la videoteca[/COLOR]", url=item.url, action="add_pelicula_to_library", extra="library", contentTitle=item.show, contentType="movie")) + + return itemlist + + +def player(item): + logger.info() + itemlist = [] + + data = httptools.downloadpage(item.url, add_referer=True).data + data = re.sub(r"\n|\r|\t| |
", "", data) + + url = scrapertools.find_single_match(data, 'sources: \[{file:\'(.*?)\'') + + itemlist = servertools.find_video_items(data=data) + + return itemlist + diff --git a/plugin.video.alfa/channels/areadocumental.py b/plugin.video.alfa/channels/areadocumental.py index 6a04ef75..b360e078 100644 --- a/plugin.video.alfa/channels/areadocumental.py +++ b/plugin.video.alfa/channels/areadocumental.py @@ -23,12 +23,12 @@ def mainlist(item): itemlist = [] item.text_color = color1 itemlist.append(item.clone(title="Novedades", action="entradas", - url="http://www.area-documental.com/resultados-reciente.php?buscar=&genero=", + url= host + "/resultados-reciente.php?buscar=&genero=", fanart="http://i.imgur.com/Q7fsFI6.png")) itemlist.append(item.clone(title="Destacados", action="entradas", - url="http://www.area-documental.com/resultados-destacados.php?buscar=&genero=", + url= host + "/resultados-destacados.php?buscar=&genero=", fanart="http://i.imgur.com/Q7fsFI6.png")) - itemlist.append(item.clone(title="Categorías", action="cat", url="http://www.area-documental.com/index.php", + itemlist.append(item.clone(title="Categorías", action="cat", url= host + "/index.php", fanart="http://i.imgur.com/Q7fsFI6.png")) itemlist.append(item.clone(title="Ordenados por...", action="indice", fanart="http://i.imgur.com/Q7fsFI6.png")) @@ -47,7 +47,7 @@ def configuracion(item): def search(item, texto): logger.info() - item.url = "http://www.area-documental.com/resultados.php?buscar=%s&genero=&x=0&y=0" % texto + item.url = host + "/resultados.php?buscar=%s&genero=&x=0&y=0" % texto item.action = "entradas" try: itemlist = entradas(item) @@ -65,7 +65,7 @@ def newest(categoria): item = Item() try: if categoria == "documentales": - item.url = "http://www.area-documental.com/resultados-reciente.php?buscar=&genero=" + item.url = host + "/resultados-reciente.php?buscar=&genero=" item.action = "entradas" itemlist = entradas(item) @@ -86,9 +86,9 @@ def indice(item): logger.info() itemlist = [] itemlist.append(item.clone(title="Título", action="entradas", - url="http://www.area-documental.com/resultados-titulo.php?buscar=&genero=")) + url= host + "/resultados-titulo.php?buscar=&genero=")) itemlist.append(item.clone(title="Año", action="entradas", - url="http://www.area-documental.com/resultados-anio.php?buscar=&genero=")) + url= host + "/resultados-anio.php?buscar=&genero=")) return itemlist @@ -125,9 +125,13 @@ def entradas(item): data2 = "" data = data.replace("\n", "").replace("\t", "") - patron = '
.*?(.*?)(.*?)

(.*?)

' \ - '.*?: (.*?).*?(.*?)
' + patron = '(?s)
.*?a href="([^"]+)".*?' + patron += '= 0: - color1, color2, color3, color4, color5 = perfil[__perfil__ - 1] -else: - color1 = color2 = color3 = color4 = color5 = "" - -adult_content = config.get_setting("adult_content", "copiapop") - - -def login(pagina): - logger.info() - - try: - user = config.get_setting("%suser" % pagina.split(".")[0], "copiapop") - password = config.get_setting("%spassword" % pagina.split(".")[0], "copiapop") - if pagina == "copiapop.com": - if user == "" and password == "": - return False, "Para ver los enlaces de copiapop es necesario registrarse en copiapop.com" - elif user == "" or password == "": - return False, "Copiapop: Usuario o contraseña en blanco. Revisa tus credenciales" - else: - if user == "" or password == "": - return False, "DiskoKosmiko: Usuario o contraseña en blanco. Revisa tus credenciales" - - data = httptools.downloadpage("http://%s" % pagina).data - if re.search(r'(?i)%s' % user, data): - return True, "" - - token = scrapertools.find_single_match(data, 'name="__RequestVerificationToken".*?value="([^"]+)"') - post = "__RequestVerificationToken=%s&UserName=%s&Password=%s" % (token, user, password) - headers = {'X-Requested-With': 'XMLHttpRequest'} - url_log = "http://%s/action/Account/Login" % pagina - data = httptools.downloadpage(url_log, post, headers).data - if "redirectUrl" in data: - logger.info("Login correcto") - return True, "" - else: - logger.error("Error en el login") - return False, "Nombre de usuario no válido. Comprueba tus credenciales" - except: - import traceback - logger.error(traceback.format_exc()) - return False, "Error durante el login. Comprueba tus credenciales" - - -def mainlist(item): - logger.info() - itemlist = [] - item.text_color = color1 - - logueado, error_message = login("copiapop.com") - - if not logueado: - itemlist.append(item.clone(title=error_message, action="configuracion", folder=False)) - else: - item.extra = "http://copiapop.com" - itemlist.append(item.clone(title="Copiapop", action="", text_color=color2)) - itemlist.append( - item.clone(title=" Búsqueda", action="search", url="http://copiapop.com/action/SearchFiles")) - itemlist.append(item.clone(title=" Colecciones", action="colecciones", - url="http://copiapop.com/action/home/MoreNewestCollections?pageNumber=1")) - itemlist.append(item.clone(title=" Búsqueda personalizada", action="filtro", - url="http://copiapop.com/action/SearchFiles")) - itemlist.append(item.clone(title=" Mi cuenta", action="cuenta")) - - item.extra = "http://diskokosmiko.mx/" - itemlist.append(item.clone(title="DiskoKosmiko", action="", text_color=color2)) - itemlist.append(item.clone(title=" Búsqueda", action="search", url="http://diskokosmiko.mx/action/SearchFiles")) - itemlist.append(item.clone(title=" Colecciones", action="colecciones", - url="http://diskokosmiko.mx/action/home/MoreNewestCollections?pageNumber=1")) - itemlist.append(item.clone(title=" Búsqueda personalizada", action="filtro", - url="http://diskokosmiko.mx/action/SearchFiles")) - itemlist.append(item.clone(title=" Mi cuenta", action="cuenta")) - itemlist.append(item.clone(action="", title="")) - - folder_thumb = filetools.join(config.get_data_path(), 'thumbs_copiapop') - files = filetools.listdir(folder_thumb) - if files: - itemlist.append( - item.clone(title="Eliminar caché de imágenes (%s)" % len(files), action="delete_cache", text_color="red")) - itemlist.append(item.clone(title="Configuración del canal", action="configuracion", text_color="gold")) - - return itemlist - - -def search(item, texto): - logger.info() - item.post = "Mode=List&Type=Video&Phrase=%s&SizeFrom=0&SizeTo=0&Extension=&ref=pager&pageNumber=1" % texto.replace( - " ", "+") - try: - return listado(item) - except: - import sys, traceback - for line in sys.exc_info(): - logger.error("%s" % line) - logger.error(traceback.format_exc()) - return [] - - -def configuracion(item): - from platformcode import platformtools - ret = platformtools.show_channel_settings() - platformtools.itemlist_refresh() - return ret - - -def listado(item): - logger.info() - itemlist = [] - - data_thumb = httptools.downloadpage(item.url, item.post.replace("Mode=List", "Mode=Gallery")).data - if not item.post: - data_thumb = "" - item.url = item.url.replace("/gallery,", "/list,") - - data = httptools.downloadpage(item.url, item.post).data - data = re.sub(r"\n|\r|\t|\s{2}| |
", "", data) - - folder = filetools.join(config.get_data_path(), 'thumbs_copiapop') - patron = '
(.*?)

' - bloques = scrapertools.find_multiple_matches(data, patron) - for block in bloques: - if "adult_info" in block and not adult_content: - continue - size = scrapertools.find_single_match(block, '

([^<]+)

') - scrapedurl, scrapedtitle = scrapertools.find_single_match(block, - '
([^<]+)<') - scrapedthumbnail = scrapertools.find_single_match(block, "background-image:url\('([^']+)'") - if scrapedthumbnail: - try: - thumb = scrapedthumbnail.split("-", 1)[0].replace("?", "\?") - if data_thumb: - url_thumb = scrapertools.find_single_match(data_thumb, "(%s[^']+)'" % thumb) - else: - url_thumb = scrapedthumbnail - scrapedthumbnail = filetools.join(folder, "%s.jpg" % url_thumb.split("e=", 1)[1][-20:]) - except: - scrapedthumbnail = "" - - if scrapedthumbnail: - t = threading.Thread(target=download_thumb, args=[scrapedthumbnail, url_thumb]) - t.setDaemon(True) - t.start() - - else: - scrapedthumbnail = item.extra + "/img/file_types/gallery/movie.png" - - scrapedurl = item.extra + scrapedurl - title = "%s (%s)" % (scrapedtitle, size) - if "adult_info" in block: - title += " [COLOR %s][+18][/COLOR]" % color4 - plot = scrapertools.find_single_match(block, '
(.*?)
') - if plot: - plot = scrapertools.decodeHtmlentities(plot) - - new_item = Item(channel=item.channel, action="findvideos", title=title, url=scrapedurl, - thumbnail=scrapedthumbnail, contentTitle=scrapedtitle, text_color=color2, - extra=item.extra, infoLabels={'plot': plot}, post=item.post) - if item.post: - try: - new_item.folderurl, new_item.foldername = scrapertools.find_single_match(block, - '

([^<]+)<') - except: - pass - else: - new_item.folderurl = item.url.rsplit("/", 1)[0] - new_item.foldername = item.foldername - new_item.fanart = item.thumbnail - - itemlist.append(new_item) - - next_page = scrapertools.find_single_match(data, '

", "", content) - else: - usuario = True - if item.follow: - content = scrapertools.find_single_match(data, - 'id="followed_collections"(.*?)