minor fixes

This commit is contained in:
alfa-addon
2017-08-06 16:58:01 -04:00
parent a44cc8f12b
commit b044a1df32
4 changed files with 321 additions and 305 deletions
+1 -1
View File
@@ -476,7 +476,7 @@ def clear_saved_searches(item):
def get_saved_searches(): def get_saved_searches():
current_saved_searches_list = config.get_setting("saved_searches_list", "buscador") current_saved_searches_list = config.get_setting("saved_searches_list", "search")
if current_saved_searches_list is None: if current_saved_searches_list is None:
saved_searches_list = [] saved_searches_list = []
else: else:
+263 -256
View File
@@ -1,256 +1,263 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import re import re
import base64
from core import channeltools
from core import config from core import channeltools
from core import httptools from core import config
from core import logger from core import httptools
from core import scrapertoolsV2 from core import logger
from core import servertools from core import scrapertoolsV2
from core import tmdb from core import servertools
from core.item import Item from core import tmdb
from core.item import Item
HOST = 'http://www.yaske.ro'
parameters = channeltools.get_channel_parameters('yaske')
fanart_host = parameters['fanart'] HOST = 'http://www.yaske.ro'
thumbnail_host = parameters['thumbnail'] parameters = channeltools.get_channel_parameters('yaske')
color1, color2, color3 = ['0xFFA5F6AF', '0xFF5FDA6D', '0xFF11811E'] fanart_host = parameters['fanart']
thumbnail_host = parameters['thumbnail']
color1, color2, color3 = ['0xFFA5F6AF', '0xFF5FDA6D', '0xFF11811E']
def mainlist(item):
logger.info()
itemlist = [] def mainlist(item):
item.url = HOST logger.info()
item.text_color = color2 itemlist = []
item.fanart = fanart_host item.url = HOST
thumbnail = "https://raw.githubusercontent.com/master-1970/resources/master/images/genres/4/verdes/%s.png" item.text_color = color2
item.fanart = fanart_host
itemlist.append(item.clone(title="Novedades", action="peliculas", text_bold=True, viewcontent='movies', thumbnail = "https://raw.githubusercontent.com/master-1970/resources/master/images/genres/4/verdes/%s.png"
url=HOST + "/ultimas-y-actualizadas",
thumbnail=thumbnail % 'novedades', viewmode="movie_with_plot")) itemlist.append(item.clone(title="Novedades", action="peliculas", text_bold=True, viewcontent='movies',
itemlist.append(item.clone(title="Estrenos", action="peliculas", text_bold=True, url=HOST + "/ultimas-y-actualizadas",
url=HOST + "/genre/premieres", thumbnail=thumbnail % 'estrenos')) thumbnail=thumbnail % 'novedades', viewmode="movie_with_plot"))
itemlist.append(item.clone(title="", folder=False)) itemlist.append(item.clone(title="Estrenos", action="peliculas", text_bold=True,
url=HOST + "/genre/premieres", thumbnail=thumbnail % 'estrenos'))
itemlist.append(Item(channel=item.channel, title="Filtrar por:", fanart=fanart_host, folder=False, itemlist.append(item.clone(title="", folder=False))
text_color=color3, text_bold=True, thumbnail=thumbnail_host))
itemlist.append(item.clone(title=" Género", action="menu_buscar_contenido", text_color=color1, text_italic=True, itemlist.append(Item(channel=item.channel, title="Filtrar por:", fanart=fanart_host, folder=False,
extra="genre", thumbnail=thumbnail % 'generos', viewmode="thumbnails")) text_color=color3, text_bold=True, thumbnail=thumbnail_host))
itemlist.append(item.clone(title=" Idioma", action="menu_buscar_contenido", text_color=color1, text_italic=True, itemlist.append(item.clone(title=" Género", action="menu_buscar_contenido", text_color=color1, text_italic=True,
extra="audio", thumbnail=thumbnail % 'idiomas')) extra="genre", thumbnail=thumbnail % 'generos', viewmode="thumbnails"))
itemlist.append(item.clone(title=" Calidad", action="menu_buscar_contenido", text_color=color1, text_italic=True, itemlist.append(item.clone(title=" Idioma", action="menu_buscar_contenido", text_color=color1, text_italic=True,
extra="quality", thumbnail=thumbnail % 'calidad')) extra="audio", thumbnail=thumbnail % 'idiomas'))
itemlist.append(item.clone(title=" Año", action="menu_buscar_contenido", text_color=color1, text_italic=True, itemlist.append(item.clone(title=" Calidad", action="menu_buscar_contenido", text_color=color1, text_italic=True,
extra="year", thumbnail=thumbnail % 'year')) extra="quality", thumbnail=thumbnail % 'calidad'))
itemlist.append(item.clone(title=" Año", action="menu_buscar_contenido", text_color=color1, text_italic=True,
itemlist.append(item.clone(title="", folder=False)) extra="year", thumbnail=thumbnail % 'year'))
itemlist.append(item.clone(title="Buscar por título", action="search", thumbnail=thumbnail % 'buscar'))
itemlist.append(item.clone(title="", folder=False))
return itemlist itemlist.append(item.clone(title="Buscar por título", action="search", thumbnail=thumbnail % 'buscar'))
return itemlist
def search(item, texto):
logger.info()
itemlist = [] def search(item, texto):
logger.info()
try: itemlist = []
# http://www.yaske.ro/search/?q=los+pitufos
item.url = HOST + "/search/?q=" + texto.replace(' ', '+') try:
item.extra = "" # http://www.yaske.ro/search/?q=los+pitufos
itemlist.extend(peliculas(item)) item.url = HOST + "/search/?q=" + texto.replace(' ', '+')
if itemlist[-1].title == ">> Página siguiente": item.extra = ""
item_pag = itemlist[-1] itemlist.extend(peliculas(item))
itemlist = sorted(itemlist[:-1], key=lambda Item: Item.contentTitle) if itemlist[-1].title == ">> Página siguiente":
itemlist.append(item_pag) item_pag = itemlist[-1]
else: itemlist = sorted(itemlist[:-1], key=lambda Item: Item.contentTitle)
itemlist = sorted(itemlist, key=lambda Item: Item.contentTitle) itemlist.append(item_pag)
else:
return itemlist itemlist = sorted(itemlist, key=lambda Item: Item.contentTitle)
except: return itemlist
import sys
for line in sys.exc_info(): except:
logger.error("%s" % line) import sys
return [] for line in sys.exc_info():
logger.error("%s" % line)
return []
def newest(categoria):
logger.info()
item = Item() def newest(categoria):
try: logger.info()
if categoria == 'peliculas': item = Item()
item.url = HOST + "/ultimas-y-actualizadas" try:
elif categoria == 'infantiles': if categoria == 'peliculas':
item.url = HOST + "/search/?q=&genre%5B%5D=animation" item.url = HOST + "/ultimas-y-actualizadas"
else: elif categoria == 'infantiles':
return [] item.url = HOST + "/search/?q=&genre%5B%5D=animation"
else:
itemlist = peliculas(item) return []
if itemlist[-1].title == ">> Página siguiente":
itemlist.pop() itemlist = peliculas(item)
if itemlist[-1].title == ">> Página siguiente":
# Se captura la excepción, para no interrumpir al canal novedades si un canal falla itemlist.pop()
except:
import sys # Se captura la excepción, para no interrumpir al canal novedades si un canal falla
for line in sys.exc_info(): except:
logger.error("{0}".format(line)) import sys
return [] for line in sys.exc_info():
logger.error("{0}".format(line))
return itemlist return []
return itemlist
def peliculas(item):
logger.info()
itemlist = [] def peliculas(item):
url_next_page = "" logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data url_next_page = ""
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
data = httptools.downloadpage(item.url).data
patron = '<article class.*?' data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;", "", data)
patron += '<a href="([^"]+)">.*?'
patron += '<img src="([^"]+)".*?' patron = '<article class.*?'
patron += '<aside class="item-control down">(.*?)</aside>.*?' patron += '<a href="([^"]+)">.*?'
patron += '<small class="pull-right text-muted">([^<]+)</small>.*?' patron += '<img src="([^"]+)".*?'
patron += '<h2 class.*?>([^<]+)</h2>' patron += '<aside class="item-control down">(.*?)</aside>.*?'
patron += '<small class="pull-right text-muted">([^<]+)</small>.*?'
matches = re.compile(patron, re.DOTALL).findall(data) patron += '<h2 class.*?>([^<]+)</h2>'
# Paginacion matches = re.compile(patron, re.DOTALL).findall(data)
if item.next_page != 'b':
if len(matches) > 30: # Paginacion
url_next_page = item.url if item.next_page != 'b':
matches = matches[:30] if len(matches) > 30:
next_page = 'b' url_next_page = item.url
else: matches = matches[:30]
matches = matches[30:] next_page = 'b'
next_page = 'a' else:
patron_next_page = 'Anteriores</a> <a href="([^"]+)" class="btn btn-default ".*?Siguiente' matches = matches[30:]
matches_next_page = re.compile(patron_next_page, re.DOTALL).findall(data) next_page = 'a'
if len(matches_next_page) > 0: patron_next_page = 'Anteriores</a> <a href="([^"]+)" class="btn btn-default ".*?Siguiente'
url_next_page = matches_next_page[0] matches_next_page = re.compile(patron_next_page, re.DOTALL).findall(data)
if len(matches_next_page) > 0:
for scrapedurl, scrapedthumbnail, idiomas, year, scrapedtitle in matches: url_next_page = matches_next_page[0]
patronidiomas = "<img src='([^']+)'"
matchesidiomas = re.compile(patronidiomas, re.DOTALL).findall(idiomas) for scrapedurl, scrapedthumbnail, idiomas, year, scrapedtitle in matches:
patronidiomas = "<img src='([^']+)'"
idiomas_disponibles = [] matchesidiomas = re.compile(patronidiomas, re.DOTALL).findall(idiomas)
for idioma in matchesidiomas:
if idioma.endswith("la_la.png"): idiomas_disponibles = []
idiomas_disponibles.append("LAT") for idioma in matchesidiomas:
elif idioma.endswith("en_en.png"): if idioma.endswith("la_la.png"):
idiomas_disponibles.append("VO") idiomas_disponibles.append("LAT")
elif idioma.endswith("en_es.png"): elif idioma.endswith("en_en.png"):
idiomas_disponibles.append("VOSE") idiomas_disponibles.append("VO")
elif idioma.endswith("es_es.png"): elif idioma.endswith("en_es.png"):
idiomas_disponibles.append("ESP") idiomas_disponibles.append("VOSE")
elif idioma.endswith("es_es.png"):
if idiomas_disponibles: idiomas_disponibles.append("ESP")
idiomas_disponibles = "[" + "/".join(idiomas_disponibles) + "]"
if idiomas_disponibles:
contentTitle = scrapertoolsV2.decodeHtmlentities(scrapedtitle.strip()) idiomas_disponibles = "[" + "/".join(idiomas_disponibles) + "]"
title = "%s %s" % (contentTitle, idiomas_disponibles)
contentTitle = scrapertoolsV2.decodeHtmlentities(scrapedtitle.strip())
itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=scrapedurl, title = "%s %s" % (contentTitle, idiomas_disponibles)
thumbnail=scrapedthumbnail, contentTitle=contentTitle,
infoLabels={"year": year}, text_color=color1)) itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=scrapedurl,
thumbnail=scrapedthumbnail, contentTitle=contentTitle,
# Obtenemos los datos basicos de todas las peliculas mediante multihilos infoLabels={"year": year}, text_color=color1))
tmdb.set_infoLabels(itemlist)
# Obtenemos los datos basicos de todas las peliculas mediante multihilos
# Si es necesario añadir paginacion tmdb.set_infoLabels(itemlist)
if url_next_page:
itemlist.append( # Si es necesario añadir paginacion
Item(channel=item.channel, action="peliculas", title=">> Página siguiente", thumbnail=thumbnail_host, if url_next_page:
url=url_next_page, next_page=next_page, folder=True, text_color=color3, text_bold=True)) itemlist.append(
Item(channel=item.channel, action="peliculas", title=">> Página siguiente", thumbnail=thumbnail_host,
return itemlist url=url_next_page, next_page=next_page, folder=True, text_color=color3, text_bold=True))
return itemlist
def menu_buscar_contenido(item):
logger.info(item)
def menu_buscar_contenido(item):
data = httptools.downloadpage(item.url).data logger.info(item)
patron = '<select name="' + item.extra + '(.*?)</select>'
data = scrapertoolsV2.get_match(data, patron) data = httptools.downloadpage(item.url).data
patron = '<select name="' + item.extra + '(.*?)</select>'
# Extrae las entradas data = scrapertoolsV2.get_match(data, patron)
patron = "<option value='([^']+)'>([^<]+)</option>"
matches = re.compile(patron, re.DOTALL).findall(data) # Extrae las entradas
patron = "<option value='([^']+)'>([^<]+)</option>"
itemlist = [] matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedvalue, scrapedtitle in matches:
thumbnail = "" itemlist = []
for scrapedvalue, scrapedtitle in matches:
if item.extra == 'genre': thumbnail = ""
if scrapedtitle.strip() in ['Documental', 'Short', 'News']:
continue if item.extra == 'genre':
if scrapedtitle.strip() in ['Documental', 'Short', 'News']:
url = HOST + "/search/?q=&genre%5B%5D=" + scrapedvalue continue
filename = scrapedtitle.lower().replace(' ', '%20')
if filename == "ciencia%20ficción": url = HOST + "/search/?q=&genre%5B%5D=" + scrapedvalue
filename = "ciencia%20ficcion" filename = scrapedtitle.lower().replace(' ', '%20')
thumbnail = "https://raw.githubusercontent.com/master-1970/resources/master/images/genres/4/verdes/%s.png" \ if filename == "ciencia%20ficción":
% filename filename = "ciencia%20ficcion"
thumbnail = "https://raw.githubusercontent.com/master-1970/resources/master/images/genres/4/verdes/%s.png" \
elif item.extra == 'year': % filename
url = HOST + "/search/?q=&year=" + scrapedvalue
thumbnail = item.thumbnail elif item.extra == 'year':
else: url = HOST + "/search/?q=&year=" + scrapedvalue
# http://www.yaske.ro/search/?q=&quality%5B%5D=c9 thumbnail = item.thumbnail
# http://www.yaske.ro/search/?q=&audio%5B%5D=es else:
url = HOST + "/search/?q=&" + item.extra + "%5B%5D=" + scrapedvalue # http://www.yaske.ro/search/?q=&quality%5B%5D=c9
thumbnail = item.thumbnail # http://www.yaske.ro/search/?q=&audio%5B%5D=es
url = HOST + "/search/?q=&" + item.extra + "%5B%5D=" + scrapedvalue
itemlist.append(Item(channel=item.channel, action="peliculas", title=scrapedtitle, url=url, text_color=color1, thumbnail = item.thumbnail
thumbnail=thumbnail, contentType='movie', folder=True, viewmode="movie_with_plot"))
itemlist.append(Item(channel=item.channel, action="peliculas", title=scrapedtitle, url=url, text_color=color1,
if item.extra in ['genre', 'audio', 'year']: thumbnail=thumbnail, contentType='movie', folder=True, viewmode="movie_with_plot"))
return sorted(itemlist, key=lambda i: i.title.lower(), reverse=item.extra == 'year')
else: if item.extra in ['genre', 'audio', 'year']:
return itemlist return sorted(itemlist, key=lambda i: i.title.lower(), reverse=item.extra == 'year')
else:
return itemlist
def findvideos(item):
logger.info()
itemlist = list() def findvideos(item):
sublist = list() logger.info()
itemlist = list()
# Descarga la página sublist = list()
data = httptools.downloadpage(item.url).data
# Descarga la página
if not item.plot: data = httptools.downloadpage(item.url).data
item.plot = scrapertoolsV2.find_single_match(data, '>Sinopsis</dt> <dd>([^<]+)</dd>')
item.plot = scrapertoolsV2.decodeHtmlentities(item.plot) if not item.plot:
item.plot = scrapertoolsV2.find_single_match(data, '>Sinopsis</dt> <dd>([^<]+)</dd>')
patron = '<option value="([^"]+)"[^>]+' item.plot = scrapertoolsV2.decodeHtmlentities(item.plot)
patron += '>([^<]+).*?</i>([^<]+)'
matches = re.compile(patron, re.DOTALL).findall(data) patron = '<option value="([^"]+)"[^>]+'
patron += '>([^<]+).*?</i>([^<]+)'
for url, idioma, calidad in matches: matches = re.compile(patron, re.DOTALL).findall(data)
sublist.append(item.clone(action="play", url=url, folder=False, text_color=color1, quality=calidad.strip(),
language=idioma.strip())) for url, idioma, calidad in matches:
if 'yaske' in url:
sublist = servertools.get_servers_itemlist(sublist, lambda i: "Ver en %s %s" % (i.server, i.quality), True) data = httptools.downloadpage(url).data
url_enc = scrapertoolsV2.find_single_match(data, "eval.*?'(.*?)'")
# Añadir servidores encontrados, agrupandolos por idioma url_dec = base64.b64decode(url_enc)
for k in ["Español", "Latino", "Subtitulado", "Ingles"]: url = scrapertoolsV2.find_single_match(url_dec, 'iframe src="(.*?)"')
lista_idioma = filter(lambda i: i.language == k, sublist) sublist.append(item.clone(action="play", url=url, folder=False, text_color=color1, quality=calidad.strip(),
if lista_idioma: language=idioma.strip()))
itemlist.append(Item(channel=item.channel, title=k, fanart=item.fanart, folder=False,
text_color=color2, text_bold=True, thumbnail=thumbnail_host)) sublist = servertools.get_servers_itemlist(sublist, lambda i: "Ver en %s %s" % (i.server, i.quality), True)
itemlist.extend(lista_idioma)
# Añadir servidores encontrados, agrupandolos por idioma
# Insertar items "Buscar trailer" y "Añadir a la videoteca" for k in ["Español", "Latino", "Subtitulado", "Ingles"]:
if itemlist and item.extra != "library": lista_idioma = filter(lambda i: i.language == k, sublist)
title = "%s [Buscar trailer]" % (item.contentTitle) if lista_idioma:
itemlist.insert(0, item.clone(channel="trailertools", action="buscartrailer", itemlist.append(Item(channel=item.channel, title=k, fanart=item.fanart, folder=False,
text_color=color3, title=title, viewmode="list")) text_color=color2, text_bold=True, thumbnail=thumbnail_host))
itemlist.extend(lista_idioma)
if config.get_videolibrary_support():
itemlist.append(Item(channel=item.channel, title="Añadir película a la videoteca", # Insertar items "Buscar trailer" y "Añadir a la videoteca"
action="add_pelicula_to_library", url=item.url, text_color="green", if itemlist and item.extra != "library":
contentTitle=item.contentTitle, extra="library", thumbnail=thumbnail_host)) title = "%s [Buscar trailer]" % (item.contentTitle)
itemlist.insert(0, item.clone(channel="trailertools", action="buscartrailer",
return itemlist text_color=color3, title=title, viewmode="list"))
if config.get_videolibrary_support():
itemlist.append(Item(channel=item.channel, title="Añadir película a la videoteca",
action="add_pelicula_to_library", url=item.url, text_color="green",
contentTitle=item.contentTitle, extra="library", thumbnail=thumbnail_host))
return itemlist
+52 -47
View File
@@ -1,48 +1,53 @@
{ {
"active": true, "active": true,
"changes": [ "changes": [
{ {
"date": "18/07/2017", "date": "18/07/2017",
"description": "Versión incial" "description": "Versión incial"
} }
], ],
"find_videos": { "find_videos": {
"ignore_urls": [], "ignore_urls": [],
"patterns": [ "patterns": [
{ {
"pattern": "(?s)https://youtube.googleapis.com.*?docid=([^(?:&|\")]+)", "pattern": "(?s)https://youtube.googleapis.com.*?docid=([^(?:&|\")]+)",
"url": "http://docs.google.com/get_video_info?docid=\\1" "url": "http://docs.google.com/get_video_info?docid=\\1"
} },
] {
}, "pattern": "(?s)https://drive.google.com/file/d/(.*?)/preview",
"free": true, "url": "http://docs.google.com/get_video_info?docid=\\1"
"id": "gvideo", }
"name": "gvideo",
"settings": [ ]
{ },
"default": false, "free": true,
"enabled": true, "id": "gvideo",
"id": "black_list", "name": "gvideo",
"label": "Incluir en lista negra", "settings": [
"type": "bool", {
"visible": true "default": false,
}, "enabled": true,
{ "id": "black_list",
"default": 0, "label": "Incluir en lista negra",
"enabled": true, "type": "bool",
"id": "favorites_servers_list", "visible": true
"label": "Incluir en lista de favoritos", },
"lvalues": [ {
"No", "default": 0,
"1", "enabled": true,
"2", "id": "favorites_servers_list",
"3", "label": "Incluir en lista de favoritos",
"4", "lvalues": [
"5" "No",
], "1",
"type": "list", "2",
"visible": false "3",
} "4",
], "5"
"version": 1 ],
"type": "list",
"visible": false
}
],
"version": 1
} }
+5 -1
View File
@@ -42,12 +42,16 @@
"ignore_urls": [], "ignore_urls": [],
"patterns": [ "patterns": [
{ {
"pattern": "(http:\\/\\/(?:.*?)\\.torrent)", "pattern": "(http:\\/\\/(?:[a-zA-Z0-9]+)\\.torrent)",
"url": "\\1" "url": "\\1"
}, },
{ {
"pattern": "(magnet:\\?xt=urn:[^\"]+)", "pattern": "(magnet:\\?xt=urn:[^\"]+)",
"url": "\\1" "url": "\\1"
},
{
"pattern": "(http://tumejorjuego.com/descargar/index.php\\?link=[^\"]+)",
"url": "\\1"
} }
] ]
}, },