Correcciones menores a canales
This commit is contained in:
@@ -287,7 +287,6 @@ def findvideos(item):
|
||||
strm_id = scrapertools.find_single_match(data, '"id": (.*?),')
|
||||
streams = scrapertools.find_single_match(data, '"stream": (.*?)};')
|
||||
dict_strm = jsontools.load(streams)
|
||||
|
||||
base_url = 'http:%s%s/' % (dict_strm['accessPoint'], strm_id)
|
||||
for server in dict_strm['servers']:
|
||||
expire = dict_strm['expire']
|
||||
@@ -297,24 +296,26 @@ def findvideos(item):
|
||||
|
||||
strm_url = base_url +'%s?expire=%s&callback=%s&signature=%s&last_modify=%s' % (server, expire, callback,
|
||||
signature, last_modify)
|
||||
|
||||
strm_data = httptools.downloadpage(strm_url).data
|
||||
strm_data = scrapertools.unescape(strm_data)
|
||||
title = '%s'
|
||||
language = ''
|
||||
if server not in ['fire', 'meph']:
|
||||
urls = scrapertools.find_multiple_matches(strm_data, '"(?:file|src)"*?:.*?"(.*?)"')
|
||||
for url in urls:
|
||||
try:
|
||||
strm_data = httptools.downloadpage(strm_url).data
|
||||
strm_data = scrapertools.unescape(strm_data)
|
||||
title = '%s'
|
||||
language = ''
|
||||
if server not in ['fire', 'meph']:
|
||||
urls = scrapertools.find_multiple_matches(strm_data, '"(?:file|src)"*?:.*?"(.*?)"')
|
||||
for url in urls:
|
||||
if url != '':
|
||||
url = url.replace ('\\/','/')
|
||||
itemlist.append(Item(channel=item.channel, title=title, url=url, action='play'))
|
||||
elif server in ['fire', 'mpeh']:
|
||||
url = scrapertools.find_single_match(strm_data, 'xmlhttp.open(\"GET\", \"(.*?)\"')
|
||||
if url != '':
|
||||
url = url.replace ('\\/','/')
|
||||
itemlist.append(Item(channel=item.channel, title=title, url=url, action='play'))
|
||||
elif server in ['fire', 'mpeh']:
|
||||
url = scrapertools.find_single_match(strm_data, 'xmlhttp.open(\"GET\", \"(.*?)\"')
|
||||
if url != '':
|
||||
url = url.replace('\\/', '/')
|
||||
itemlist.append(Item(channel=item.channel, title=url, url=url, action='play'))
|
||||
else:
|
||||
continue
|
||||
url = url.replace('\\/', '/')
|
||||
itemlist.append(Item(channel=item.channel, title=url, url=url, action='play'))
|
||||
else:
|
||||
continue
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server)
|
||||
|
||||
@@ -74,7 +74,11 @@ def menu_alf(item):
|
||||
|
||||
for letra in ['[0-9]', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
|
||||
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']:
|
||||
itemlist.append(Item(channel=item.channel, action="series", title=letra,
|
||||
if 'series' in item.url:
|
||||
action = 'series'
|
||||
else:
|
||||
action = 'pelis'
|
||||
itemlist.append(Item(channel=item.channel, action=action, title=letra,
|
||||
url=item.url + "?keywords=^" + letra + "&page=0"))
|
||||
|
||||
return itemlist
|
||||
@@ -117,6 +121,7 @@ def series(item):
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
lista = jsontools.load(data)
|
||||
logger.debug(lista)
|
||||
if item.extra == "next":
|
||||
lista_ = lista[25:]
|
||||
else:
|
||||
@@ -171,6 +176,7 @@ def episodios(item):
|
||||
# post = "page=%s&x=34&y=14" % urllib.quote(item.url)
|
||||
# response = httptools.downloadpage(url, post, follow_redirects=False).data
|
||||
# url = scrapertools.find_single_match(response, '<meta http-equiv="refresh".*?url=([^"]+)"')
|
||||
logger.debug(item)
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
data = jsontools.load(data)
|
||||
|
||||
@@ -9,274 +9,301 @@ from platformcode import config, logger
|
||||
__perfil__ = int(config.get_setting('perfil', 'pelisultra'))
|
||||
|
||||
# Fijar perfil de color
|
||||
perfil = [['0xFFFFE6CC', '0xFFFFCE9C', '0xFF994D00'],
|
||||
['0xFFA5F6AF', '0xFF5FDA6D', '0xFF11811E'],
|
||||
perfil = [['0xFFFFE6CC', '0xFFFFCE9C', '0xFF994D00'], ['0xFFA5F6AF', '0xFF5FDA6D', '0xFF11811E'],
|
||||
['0xFF58D3F7', '0xFF2E9AFE', '0xFF2E64FE']]
|
||||
|
||||
if __perfil__ < 3:
|
||||
color1, color2, color3 = perfil[__perfil__]
|
||||
color1, color2, color3 = perfil[__perfil__]
|
||||
else:
|
||||
color1 = color2 = color3 = ""
|
||||
color1 = color2 = color3 = ""
|
||||
|
||||
host = "http://www.pelisultra.com"
|
||||
|
||||
host="http://www.pelisultra.com"
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item.thumbnail = "https://github.com/master-1970/resources/raw/master/images/genres/0/Directors%20Chair.png"
|
||||
itemlist.append(item.clone(title="Películas:", folder=False, text_color="0xFFD4AF37", text_bold=True))
|
||||
itemlist.append(Item(channel = item.channel, title = " Novedades", action = "peliculas", url = host))
|
||||
itemlist.append(Item(channel = item.channel, title = " Estrenos", action = "peliculas", url = host + "/genero/estrenos/" ))
|
||||
itemlist.append(Item(channel = item.channel, title = " Por género", action = "genero", url = host + "/genero/" ))
|
||||
item.thumbnail = "https://github.com/master-1970/resources/raw/master/images/genres/0/TV%20Series.png"
|
||||
itemlist.append(item.clone(title="Series:", folder=False, text_color="0xFFD4AF37", text_bold=True))
|
||||
itemlist.append(Item(channel = item.channel, title = " Todas las series", action = "series", url = host + "/series/" ))
|
||||
itemlist.append(Item(channel = item.channel, title = " Nuevos episodios", action = "nuevos_episodios", url = host + "/episodio/" ))
|
||||
itemlist.append(Item(channel = item.channel, title = "Buscar...", action = "search", url = host, text_color="red", text_bold=True))
|
||||
itemlist.append(item.clone(title="Configurar canal...", text_color="green", action="configuracion", text_bold=True))
|
||||
return itemlist
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item.thumbnail = "https://github.com/master-1970/resources/raw/master/images/genres/0/Directors%20Chair.png"
|
||||
itemlist.append(item.clone(title="Películas:", folder=False, text_color="0xFFD4AF37", text_bold=True))
|
||||
itemlist.append(Item(channel=item.channel, title=" Novedades", action="peliculas", url=host))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title=" Estrenos", action="peliculas", url=host + "/genero/estrenos/"))
|
||||
itemlist.append(Item(channel=item.channel, title=" Por género", action="genero", url=host))
|
||||
item.thumbnail = "https://github.com/master-1970/resources/raw/master/images/genres/0/TV%20Series.png"
|
||||
itemlist.append(item.clone(title="Series:", folder=False, text_color="0xFFD4AF37", text_bold=True))
|
||||
itemlist.append(Item(channel=item.channel, title=" Todas las series", action="series", url=host + "/series/"))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title=" Nuevos episodios", action="nuevos_episodios", url=host + "/episodio/"))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title="Buscar...", action="search", url=host, text_color="red", text_bold=True))
|
||||
itemlist.append(item.clone(title="Configurar canal...", text_color="green", action="configuracion", text_bold=True))
|
||||
return itemlist
|
||||
|
||||
|
||||
def configuracion(item):
|
||||
from platformcode import platformtools
|
||||
ret = platformtools.show_channel_settings()
|
||||
platformtools.itemlist_refresh()
|
||||
return ret
|
||||
from platformcode import platformtools
|
||||
ret = platformtools.show_channel_settings()
|
||||
platformtools.itemlist_refresh()
|
||||
return ret
|
||||
|
||||
|
||||
def newest(categoria):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria in ["peliculas", "latino"]:
|
||||
item.url = host
|
||||
itemlist = peliculas(item)
|
||||
elif categoria == 'terror':
|
||||
item.url = host + '/genero/terror/'
|
||||
itemlist = peliculas(item)
|
||||
elif categoria == "series":
|
||||
item.url = host + "/episodio/"
|
||||
itemlist = nuevos_episodios(item)
|
||||
if "Pagina" in itemlist[-1].title:
|
||||
itemlist.pop()
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria in ["peliculas", "latino"]:
|
||||
item.url = host
|
||||
itemlist = peliculas(item)
|
||||
elif categoria == 'terror':
|
||||
item.url = host + '/genero/terror/'
|
||||
itemlist = peliculas(item)
|
||||
elif categoria == "series":
|
||||
item.url = host + "/episodio/"
|
||||
itemlist = nuevos_episodios(item)
|
||||
if "Pagina" in itemlist[-1].title:
|
||||
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 []
|
||||
# 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
|
||||
|
||||
return itemlist
|
||||
|
||||
def peliculas(item):
|
||||
#logger.info()
|
||||
logger.info(item)
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
# logger.info()
|
||||
logger.info(item)
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
data2 = scrapertools.find_single_match(data,'(?s)<div class="item_1.*?>(.*?)id="paginador">')
|
||||
data2 = scrapertools.find_single_match(data, '(?s)<div class="item_1.*?>(.*?)id="paginador">')
|
||||
|
||||
# Se saca la info
|
||||
#(?s)class="ml-item.*?a href="([^"]+).*?img src="([^"]+).*?alt="([^"]+).*?class="year">(\d{4})</span>(.*?)<div
|
||||
patron = '(?s)class="ml-item.*?' # base
|
||||
patron += 'a href="([^"]+).*?' # url
|
||||
patron += 'img src="([^"]+).*?' # imagen
|
||||
patron += 'alt="([^"]+).*?' # titulo
|
||||
patron += 'class="year">(\d{4})' # año
|
||||
patron += '</span>(.*?)<div' # calidad
|
||||
matches = scrapertools.find_multiple_matches(data2, patron)
|
||||
# Se saca la info
|
||||
# (?s)class="ml-item.*?a href="([^"]+).*?img src="([^"]+).*?alt="([^"]+).*?class="year">(\d{4})</span>(.*?)<div
|
||||
patron = '(?s)class="ml-item.*?' # base
|
||||
patron += 'a href="([^"]+).*?' # url
|
||||
patron += 'img src="([^"]+).*?' # imagen
|
||||
patron += 'alt="([^"]+).*?' # titulo
|
||||
patron += 'class="year">(\d{4})' # año
|
||||
patron += '</span>(.*?)<div' # calidad
|
||||
matches = scrapertools.find_multiple_matches(data2, patron)
|
||||
|
||||
scrapertools.printMatches(matches)
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear, scrapedquality in matches:
|
||||
if not "/series/" in scrapedurl:
|
||||
scrapedquality = scrapertools.find_single_match(scrapedquality, '<span class="calidad2">(.*?)</span>')
|
||||
itemlist.append(Item(action = "findvideos", channel = item.channel, title = scrapedtitle + " (" + scrapedyear + ") [" + scrapedquality + "]", contentTitle=scrapedtitle, thumbnail = scrapedthumbnail, url = scrapedurl, quality=scrapedquality, infoLabels={'year':scrapedyear}))
|
||||
else:
|
||||
if item.action == "search":
|
||||
itemlist.append(Item(action = "temporadas", channel = item.channel, title = scrapedtitle + " (" + scrapedyear + ")", contentSerieName=scrapedtitle, contentType="tvshow", thumbnail = scrapedthumbnail, url = scrapedurl, infoLabels={'year':scrapedyear}))
|
||||
scrapertools.printMatches(matches)
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear, scrapedquality in matches:
|
||||
if not "/series/" in scrapedurl:
|
||||
scrapedquality = scrapertools.find_single_match(scrapedquality, '<span class="calidad2">(.*?)</span>')
|
||||
itemlist.append(Item(action="findvideos", channel=item.channel,
|
||||
title=scrapedtitle + " (" + scrapedyear + ") [" + scrapedquality + "]",
|
||||
contentTitle=scrapedtitle, thumbnail=scrapedthumbnail, url=scrapedurl,
|
||||
quality=scrapedquality, infoLabels={'year': scrapedyear}))
|
||||
else:
|
||||
if item.action == "search":
|
||||
itemlist.append(
|
||||
Item(action="temporadas", channel=item.channel, title=scrapedtitle + " (" + scrapedyear + ")",
|
||||
contentSerieName=scrapedtitle, contentType="tvshow", thumbnail=scrapedthumbnail,
|
||||
url=scrapedurl, infoLabels={'year': scrapedyear}))
|
||||
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
# Pagina siguiente
|
||||
patron_siguiente = 'class="pag_b"><a href="([^"]+)'
|
||||
url_pagina_siguiente = scrapertools.find_single_match(data, patron_siguiente)
|
||||
|
||||
# Pagina siguiente
|
||||
patron_siguiente='class="pag_b"><a href="([^"]+)'
|
||||
url_pagina_siguiente=scrapertools.find_single_match(data, patron_siguiente)
|
||||
if url_pagina_siguiente != "":
|
||||
pagina = ">>> Pagina: " + scrapertools.find_single_match(url_pagina_siguiente, '\d+')
|
||||
itemlist.append(Item(channel=item.channel, action="peliculas", title=pagina, url=url_pagina_siguiente))
|
||||
|
||||
if url_pagina_siguiente != "":
|
||||
pagina = ">>> Pagina: " + scrapertools.find_single_match(url_pagina_siguiente, '\d+')
|
||||
itemlist.append(Item(channel = item.channel, action = "peliculas", title = pagina, url = url_pagina_siguiente))
|
||||
return itemlist
|
||||
|
||||
return itemlist
|
||||
|
||||
def genero(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
# Delimita la búsqueda a la lista donde estan los géneros
|
||||
data = scrapertools.find_single_match(data,'(?s)<ul id="menu-generos" class="">(.*?)</ul>')
|
||||
# Extrae la url y el género
|
||||
patron = '<a href="(.*?)">(.*?)</a></li>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
# Se quita "Estrenos" de la lista porque tiene su propio menu
|
||||
matches.pop(0)
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
# Delimita la búsqueda a la lista donde estan los géneros
|
||||
data = scrapertools.find_single_match(data, '(?s)<ul id="menu-generos" class="">(.*?)</ul>')
|
||||
# Extrae la url y el género
|
||||
patron = '<a href="(.*?)">(.*?)</a></li>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
# Se quita "Estrenos" de la lista porque tiene su propio menu
|
||||
matches.pop(0)
|
||||
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
itemlist.append(Item(action = "peliculas", channel = item.channel, title = scrapedtitle, url = scrapedurl))
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
itemlist.append(Item(action="peliculas", channel=item.channel, title=scrapedtitle, url=scrapedurl))
|
||||
|
||||
return itemlist
|
||||
|
||||
return itemlist
|
||||
|
||||
def series(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
# Se saca la info
|
||||
patron = '(?s)class="ml-item.*?' # base
|
||||
patron += 'a href="([^"]+).*?' # url
|
||||
patron += 'img src="([^"]+).*?' # imagen
|
||||
patron += 'alt="([^"]+).*?' # titulo
|
||||
patron += 'class="year">(\d{4})' # año
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
# Se saca la info
|
||||
patron = '(?s)class="ml-item.*?' # base
|
||||
patron += 'a href="([^"]+).*?' # url
|
||||
patron += 'img src="([^"]+).*?' # imagen
|
||||
patron += 'alt="([^"]+).*?' # titulo
|
||||
patron += 'class="year">(\d{4})' # año
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
|
||||
#if config.get_setting('temporada_o_todos', 'pelisultra') == 0:
|
||||
if config.get_setting('temporada_o_todos', 'pelisultra'):
|
||||
accion="temporadas"
|
||||
else:
|
||||
accion="episodios"
|
||||
# if config.get_setting('temporada_o_todos', 'pelisultra') == 0:
|
||||
if config.get_setting('temporada_o_todos', 'pelisultra'):
|
||||
accion = "temporadas"
|
||||
else:
|
||||
accion = "episodios"
|
||||
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear in matches:
|
||||
itemlist.append(Item(action = accion, channel = item.channel, title = scrapedtitle + " (" + scrapedyear + ")", contentSerieName=scrapedtitle, contentType="tvshow", thumbnail = scrapedthumbnail, url = scrapedurl, infoLabels={'year':scrapedyear}))
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear in matches:
|
||||
itemlist.append(Item(action=accion, channel=item.channel, title=scrapedtitle + " (" + scrapedyear + ")",
|
||||
contentSerieName=scrapedtitle, contentType="tvshow", thumbnail=scrapedthumbnail,
|
||||
url=scrapedurl, infoLabels={'year': scrapedyear}))
|
||||
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
|
||||
# Pagina siguiente
|
||||
patron_siguiente='class="pag_b"><a href="([^"]+)'
|
||||
url_pagina_siguiente=scrapertools.find_single_match(data, patron_siguiente)
|
||||
# Pagina siguiente
|
||||
patron_siguiente = 'class="pag_b"><a href="([^"]+)'
|
||||
url_pagina_siguiente = scrapertools.find_single_match(data, patron_siguiente)
|
||||
|
||||
if url_pagina_siguiente != "":
|
||||
pagina = ">>> Pagina: " + scrapertools.find_single_match(url_pagina_siguiente, '\d+')
|
||||
itemlist.append(Item(channel = item.channel, action = "series", title = pagina, url = url_pagina_siguiente))
|
||||
if url_pagina_siguiente != "":
|
||||
pagina = ">>> Pagina: " + scrapertools.find_single_match(url_pagina_siguiente, '\d+')
|
||||
itemlist.append(Item(channel=item.channel, action="series", title=pagina, url=url_pagina_siguiente))
|
||||
|
||||
return itemlist
|
||||
|
||||
return itemlist
|
||||
|
||||
def temporadas(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
# Extrae las temporadas
|
||||
patron = '<span class="se-t.*?>(.*?)</span>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
# Extrae las temporadas
|
||||
patron = '<span class="se-t.*?>(.*?)</span>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
|
||||
# Excepción para la serie Sin Límites
|
||||
if item.contentTitle == 'Amar sin límites':
|
||||
item.contentSerieName = "limitless"
|
||||
item.infoLabels['tmdb_id']=''
|
||||
# Excepción para la serie Sin Límites
|
||||
if item.contentTitle == 'Amar sin límites':
|
||||
item.contentSerieName = "limitless"
|
||||
item.infoLabels['tmdb_id'] = ''
|
||||
|
||||
for scrapedseason in matches:
|
||||
itemlist.append(item.clone(action = "episodios", title = "Temporada " + scrapedseason, contentSeason=scrapedseason))
|
||||
for scrapedseason in matches:
|
||||
itemlist.append(item.clone(action="episodios", title="Temporada " + scrapedseason, contentSeason=scrapedseason))
|
||||
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
|
||||
return itemlist
|
||||
|
||||
return itemlist
|
||||
|
||||
def episodios(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '(?s)class="episodiotitle">.*?a href="(.*?)">(.*?)</a>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '(?s)class="episodiotitle">.*?a href="(.*?)">(.*?)</a>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
# Saco el numero de capitulo de la url
|
||||
numero_capitulo=scrapertools.get_season_and_episode(scrapedurl)
|
||||
if numero_capitulo != "":
|
||||
temporada=numero_capitulo.split("x")[0]
|
||||
capitulo=numero_capitulo.split("x")[1]
|
||||
else:
|
||||
temporada="_"
|
||||
capitulo="_"
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
# Saco el numero de capitulo de la url
|
||||
numero_capitulo = scrapertools.get_season_and_episode(scrapedurl)
|
||||
if numero_capitulo != "":
|
||||
temporada = numero_capitulo.split("x")[0]
|
||||
capitulo = numero_capitulo.split("x")[1]
|
||||
else:
|
||||
temporada = "_"
|
||||
capitulo = "_"
|
||||
|
||||
if item.contentSeason and str(item.contentSeason) != temporada:
|
||||
continue
|
||||
if item.contentSeason and str(item.contentSeason) != temporada:
|
||||
continue
|
||||
|
||||
itemlist.append(item.clone(action = "findvideos", title = numero_capitulo + " - " + scrapedtitle.strip(), url = scrapedurl, contentSeason=temporada, contentEpisodeNumber=capitulo))
|
||||
itemlist.append(
|
||||
item.clone(action="findvideos", title=numero_capitulo + " - " + scrapedtitle.strip(), url=scrapedurl,
|
||||
contentSeason=temporada, contentEpisodeNumber=capitulo))
|
||||
|
||||
# if item.contentTitle.startswith('Temporada'):
|
||||
# if str(item.contentSeason) == temporada:
|
||||
# itemlist.append(item.clone(action = "findvideos", title = numero_capitulo + " - " + scrapedtitle.strip(), url = scrapedurl, contentSeason=temporada, contentEpisodeNumber=capitulo))
|
||||
# else:
|
||||
# itemlist.append(item.clone(action = "findvideos", title = numero_capitulo + " - " + scrapedtitle.strip(), url = scrapedurl, contentSeason=temporada, contentEpisodeNumber=capitulo))
|
||||
# if item.contentTitle.startswith('Temporada'):
|
||||
# if str(item.contentSeason) == temporada:
|
||||
# itemlist.append(item.clone(action = "findvideos", title = numero_capitulo + " - " + scrapedtitle.strip(),
|
||||
# url = scrapedurl, contentSeason=temporada, contentEpisodeNumber=capitulo))
|
||||
# else:
|
||||
# itemlist.append(item.clone(action = "findvideos", title = numero_capitulo + " - " + scrapedtitle.strip(),
|
||||
# url = scrapedurl, contentSeason=temporada, contentEpisodeNumber=capitulo))
|
||||
|
||||
#episodios_por_pagina=20
|
||||
# if config.get_setting('episodios_x_pag', 'pelisultra').isdigit():
|
||||
# episodios_por_pagina=int(config.get_setting('episodios_x_pag', 'pelisultra'))
|
||||
# else:
|
||||
# episodios_por_pagina=20
|
||||
# config.set_setting('episodios_x_pag', '20', 'pelisultra')
|
||||
|
||||
episodios_por_pagina= int(config.get_setting('episodios_x_pag', 'pelisultra')) * 5 + 10
|
||||
# episodios_por_pagina=20
|
||||
# if config.get_setting('episodios_x_pag', 'pelisultra').isdigit():
|
||||
# episodios_por_pagina=int(config.get_setting('episodios_x_pag', 'pelisultra'))
|
||||
# else:
|
||||
# episodios_por_pagina=20
|
||||
# config.set_setting('episodios_x_pag', '20', 'pelisultra')
|
||||
|
||||
if not item.page:
|
||||
item.page = 0
|
||||
episodios_por_pagina = int(config.get_setting('episodios_x_pag', 'pelisultra')) * 5 + 10
|
||||
|
||||
itemlist_page = itemlist[item.page: item.page + episodios_por_pagina]
|
||||
if not item.page:
|
||||
item.page = 0
|
||||
|
||||
if len(itemlist) > item.page + episodios_por_pagina:
|
||||
itemlist_page.append(item.clone(title = ">>> Pagina siguiente", page = item.page + episodios_por_pagina))
|
||||
itemlist_page = itemlist[item.page: item.page + episodios_por_pagina]
|
||||
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist_page, seekTmdb=True)
|
||||
if len(itemlist) > item.page + episodios_por_pagina:
|
||||
itemlist_page.append(item.clone(title=">>> Pagina siguiente", page=item.page + episodios_por_pagina))
|
||||
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist_page, seekTmdb=True)
|
||||
|
||||
return itemlist_page
|
||||
|
||||
return itemlist_page
|
||||
|
||||
def nuevos_episodios(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '(?s)<td class="bb">.*?' # base
|
||||
patron += '<a href="(.*?)">' # url
|
||||
patron += '(.*?)</a>.*?' # nombre_serie
|
||||
patron += '<img src="(.*?)>.*?' # imagen
|
||||
patron += '<h2>(.*?)</h2>' # titulo
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '(?s)<td class="bb">.*?' # base
|
||||
patron += '<a href="(.*?)">' # url
|
||||
patron += '(.*?)</a>.*?' # nombre_serie
|
||||
patron += '<img src="(.*?)>.*?' # imagen
|
||||
patron += '<h2>(.*?)</h2>' # titulo
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
|
||||
for scrapedurl, scrapedseriename, scrapedthumbnail, scrapedtitle in matches:
|
||||
numero_capitulo=scrapertools.get_season_and_episode(scrapedurl)
|
||||
if numero_capitulo != "":
|
||||
temporada=numero_capitulo.split("x")[0]
|
||||
capitulo=numero_capitulo.split("x")[1]
|
||||
else:
|
||||
temporada="_"
|
||||
capitulo="_"
|
||||
for scrapedurl, scrapedseriename, scrapedthumbnail, scrapedtitle in matches:
|
||||
numero_capitulo = scrapertools.get_season_and_episode(scrapedurl)
|
||||
if numero_capitulo != "":
|
||||
temporada = numero_capitulo.split("x")[0]
|
||||
capitulo = numero_capitulo.split("x")[1]
|
||||
else:
|
||||
temporada = "_"
|
||||
capitulo = "_"
|
||||
|
||||
itemlist.append(Item(channel = item.channel, action = "findvideos", title = scrapedseriename +": " + numero_capitulo + " - " + scrapedtitle.strip(), url = scrapedurl, thumbnail = scrapedthumbnail, contentSerieName=scrapedseriename, contentSeason=temporada, contentEpisodeNumber=capitulo))
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos",
|
||||
title=scrapedseriename + ": " + numero_capitulo + " - " + scrapedtitle.strip(),
|
||||
url=scrapedurl, thumbnail=scrapedthumbnail, contentSerieName=scrapedseriename,
|
||||
contentSeason=temporada, contentEpisodeNumber=capitulo))
|
||||
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
# InfoLabels:
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
|
||||
# Pagina siguiente
|
||||
patron_siguiente='class="pag_b"><a href="([^"]+)'
|
||||
url_pagina_siguiente=scrapertools.find_single_match(data, patron_siguiente)
|
||||
# Pagina siguiente
|
||||
patron_siguiente = 'class="pag_b"><a href="([^"]+)'
|
||||
url_pagina_siguiente = scrapertools.find_single_match(data, patron_siguiente)
|
||||
|
||||
if url_pagina_siguiente != "":
|
||||
pagina = ">>> Pagina: " + scrapertools.find_single_match(url_pagina_siguiente, '\d+')
|
||||
itemlist.append(Item(channel = item.channel, action = "nuevos_episodios", title = pagina, url = url_pagina_siguiente))
|
||||
if url_pagina_siguiente != "":
|
||||
pagina = ">>> Pagina: " + scrapertools.find_single_match(url_pagina_siguiente, '\d+')
|
||||
itemlist.append(Item(channel=item.channel, action="nuevos_episodios", title=pagina, url=url_pagina_siguiente))
|
||||
|
||||
return itemlist
|
||||
|
||||
return itemlist
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
texto = texto.replace(" ", "+")
|
||||
try:
|
||||
item.url = host + "/?s=%s" % texto
|
||||
itemlist.extend(peliculas(item))
|
||||
return itemlist
|
||||
# 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("%s" % line)
|
||||
return []
|
||||
logger.info()
|
||||
itemlist = []
|
||||
texto = texto.replace(" ", "+")
|
||||
try:
|
||||
item.url = host + "/?s=%s" % texto
|
||||
itemlist.extend(peliculas(item))
|
||||
return itemlist
|
||||
# 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("%s" % line)
|
||||
return []
|
||||
|
||||
@@ -16,14 +16,14 @@ HOST = 'http://seriesdanko.to/'
|
||||
IDIOMAS = {'es': 'Español', 'la': 'Latino', 'vos': 'VOS', 'vo': 'VO'}
|
||||
list_idiomas = IDIOMAS.values()
|
||||
list_servers = ['streamcloud', 'powvideo', 'gamovideo', 'streamplay', 'openload', 'flashx', 'nowvideo', 'thevideo']
|
||||
CALIDADES = ['SD', 'MicroHD', 'HD/MKV']
|
||||
list_quality = ['SD', 'MicroHD', 'HD/MKV']
|
||||
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
|
||||
autoplay.init(item.channel, list_servers, CALIDADES)
|
||||
autoplay.init(item.channel, list_servers, list_quality)
|
||||
itemlist = list()
|
||||
|
||||
itemlist.append(Item(channel=item.channel, title="Novedades", action="novedades", url=HOST))
|
||||
@@ -33,7 +33,7 @@ def mainlist(item):
|
||||
itemlist.append(Item(channel=item.channel, title="Buscar...", action="search",
|
||||
url=urlparse.urljoin(HOST, "all.php")))
|
||||
|
||||
itemlist = filtertools.show_option(itemlist, item.channel, list_idiomas, CALIDADES)
|
||||
itemlist = filtertools.show_option(itemlist, item.channel, list_idiomas, list_quality)
|
||||
|
||||
autoplay.show_option(item.channel, itemlist)
|
||||
|
||||
@@ -76,7 +76,7 @@ def novedades(item):
|
||||
|
||||
itemlist.append(Item(channel=item.channel, title=title, url=urlparse.urljoin(HOST, scrapedurl), show=show,
|
||||
action="episodios", thumbnail=scrapedthumb,
|
||||
context=filtertools.context(item, list_idiomas, CALIDADES), language=language))
|
||||
context=filtertools.context(item, list_idiomas, list_quality), language=language))
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -124,7 +124,7 @@ def series_seccion(item):
|
||||
for scrapedurl, scrapedtitle in matches[item.first:limit]:
|
||||
itemlist.append(Item(channel=item.channel, action="episodios", title=scrapedtitle, show=scrapedtitle,
|
||||
url=urlparse.urljoin(HOST, scrapedurl),
|
||||
context=filtertools.context(item, list_idiomas, CALIDADES)))
|
||||
context=filtertools.context(item, list_idiomas, list_quality)))
|
||||
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
#pagination
|
||||
@@ -157,7 +157,7 @@ def series_por_letra(item):
|
||||
itemlist = []
|
||||
for url, title, img in shows:
|
||||
itemlist.append(item.clone(title=title, url=urlparse.urljoin(HOST, url), action="episodios", thumbnail=img,
|
||||
show=title, context=filtertools.context(item, list_idiomas, CALIDADES)))
|
||||
show=title, context=filtertools.context(item, list_idiomas, list_quality)))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -172,7 +172,7 @@ def search(item, texto):
|
||||
data, re.IGNORECASE)
|
||||
for url, title in shows:
|
||||
itemlist.append(item.clone(title=title, url=urlparse.urljoin(HOST, url), action="episodios", show=title,
|
||||
context=filtertools.context(item, list_idiomas, CALIDADES)))
|
||||
context=filtertools.context(item, list_idiomas, list_quality)))
|
||||
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
# Se captura la excepción, para no interrumpir al buscador global si un canal falla
|
||||
@@ -228,7 +228,7 @@ def episodios(item):
|
||||
infoLabels=infoLabels))
|
||||
|
||||
|
||||
itemlist = filtertools.get_links(itemlist, item, list_idiomas, CALIDADES)
|
||||
itemlist = filtertools.get_links(itemlist, item, list_idiomas, list_quality)
|
||||
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
|
||||
|
||||
# Opción "Añadir esta serie a la videoteca de XBMC"
|
||||
@@ -266,7 +266,7 @@ def findvideos(item):
|
||||
|
||||
# Requerido para FilterTools
|
||||
|
||||
itemlist = filtertools.get_links(itemlist, item, list_idiomas, CALIDADES)
|
||||
itemlist = filtertools.get_links(itemlist, item, list_idiomas, list_quality)
|
||||
|
||||
# Requerido para AutoPlay
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ HOST = "http://www.seriespapaya.com"
|
||||
IDIOMAS = {'es': 'Español', 'lat': 'Latino', 'in': 'Inglés', 'ca': 'Catalán', 'sub': 'VOSE', 'Español Latino':'lat',
|
||||
'Español Castellano':'es', 'Sub Español':'VOSE'}
|
||||
list_idiomas = IDIOMAS.values()
|
||||
CALIDADES = ['360p', '480p', '720p HD', '1080p HD', 'default']
|
||||
list_quality = ['360p', '480p', '720p HD', '1080p HD', 'default']
|
||||
list_servers = ['powvideo', 'streamplay', 'filebebo', 'flashx', 'gamovideo', 'nowvideo', 'openload', 'streamango',
|
||||
'streamcloud', 'vidzi', 'clipwatching', ]
|
||||
|
||||
@@ -29,7 +29,7 @@ list_servers = ['powvideo', 'streamplay', 'filebebo', 'flashx', 'gamovideo', 'no
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
|
||||
autoplay.init(item.channel, list_servers, CALIDADES)
|
||||
autoplay.init(item.channel, list_servers, list_quality)
|
||||
|
||||
thumb_series = get_thumb("channels_tvshow.png")
|
||||
thumb_series_az = get_thumb("channels_tvshow_az.png")
|
||||
@@ -42,7 +42,7 @@ def mainlist(item):
|
||||
Item(action="novedades", title="Capítulos de estreno", channel=item.channel, thumbnail=thumb_series))
|
||||
itemlist.append(Item(action="search", title="Buscar", channel=item.channel, thumbnail=thumb_buscar))
|
||||
|
||||
itemlist = filtertools.show_option(itemlist, item.channel, list_idiomas, CALIDADES)
|
||||
itemlist = filtertools.show_option(itemlist, item.channel, list_idiomas, list_quality)
|
||||
|
||||
autoplay.show_option(item.channel, itemlist)
|
||||
|
||||
@@ -92,7 +92,7 @@ def series_por_letra_y_grupo(item):
|
||||
show=name,
|
||||
url=urlparse.urljoin(HOST, url),
|
||||
thumbnail=urlparse.urljoin(HOST, img),
|
||||
context=filtertools.context(item, list_idiomas, CALIDADES),
|
||||
context=filtertools.context(item, list_idiomas, list_quality),
|
||||
plot = plot,
|
||||
infoLabels={'year':year}
|
||||
)
|
||||
@@ -153,7 +153,7 @@ def episodios(item):
|
||||
language=filter_lang
|
||||
))
|
||||
|
||||
itemlist = filtertools.get_links(itemlist, item, list_idiomas, CALIDADES)
|
||||
itemlist = filtertools.get_links(itemlist, item, list_idiomas, list_quality)
|
||||
|
||||
# Opción "Añadir esta serie a la videoteca de XBMC"
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0:
|
||||
@@ -177,7 +177,7 @@ def search(item, texto):
|
||||
show=show["titulo"],
|
||||
url=urlparse.urljoin(HOST, show["urla"]),
|
||||
thumbnail=urlparse.urljoin(HOST, show["img"]),
|
||||
context=filtertools.context(item, list_idiomas, CALIDADES)
|
||||
context=filtertools.context(item, list_idiomas, list_quality)
|
||||
) for show in tvshows]
|
||||
|
||||
|
||||
@@ -227,7 +227,7 @@ def findvideos(item):
|
||||
|
||||
# Requerido para FilterTools
|
||||
|
||||
itemlist = filtertools.get_links(itemlist, item, list_idiomas, CALIDADES)
|
||||
itemlist = filtertools.get_links(itemlist, item, list_idiomas, list_quality)
|
||||
|
||||
# Requerido para AutoPlay
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ def list_all(item):
|
||||
|
||||
url = host + scrapedurl
|
||||
thumbnail = scrapedthumbnail
|
||||
title = scrapedtitle
|
||||
title = scrapertools.decodeHtmlentities(scrapedtitle)
|
||||
|
||||
itemlist.append(Item(channel=item.channel,
|
||||
action='seasons',
|
||||
@@ -125,7 +125,10 @@ def section(item):
|
||||
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
|
||||
url = host + scrapedurl
|
||||
if item.title == 'Generos':
|
||||
url = host + scrapedurl
|
||||
else:
|
||||
url = scrapedurl
|
||||
title = scrapedtitle
|
||||
itemlist.append(Item(channel=item.channel,
|
||||
action='list_all',
|
||||
@@ -211,7 +214,6 @@ def add_language(title, string):
|
||||
|
||||
languages = scrapertools.find_multiple_matches(string, '/banderas/(.*?).png')
|
||||
|
||||
|
||||
language = []
|
||||
for lang in languages:
|
||||
|
||||
@@ -219,7 +221,7 @@ def add_language(title, string):
|
||||
lang = 'vos'
|
||||
|
||||
if len(languages) == 1:
|
||||
language = IDIOMAS[languages[0]]
|
||||
language = IDIOMAS[lang]
|
||||
title = '%s [%s]' % (title, language)
|
||||
else:
|
||||
language.append(IDIOMAS[lang])
|
||||
|
||||
@@ -149,7 +149,6 @@ def generos(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r'"|\n|\r|\t| |<br>|\s{2,}', "", data)
|
||||
logger.debug(data)
|
||||
patron = 'genres menu-item-.*?><a href=(.*?)>(.*?)<'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
|
||||
@@ -201,13 +200,11 @@ def alpha(item):
|
||||
url = 'https://www.ultrapeliculashd.com/wp-json/dooplay/glossary/?term=%s&nonce=4e850b7d59&type=all' % item.id
|
||||
data = httptools.downloadpage(url).data
|
||||
dict_data = jsontools.load(data)
|
||||
logger.debug(dict_data)
|
||||
|
||||
for elem in dict_data:
|
||||
logger.debug(dict_data[elem])
|
||||
elem = dict_data[elem]
|
||||
itemlist.append(Item(channel=item.channel, action='findvideos', title = elem['title'], url=elem['url'],
|
||||
thumbnail=elem['img']))
|
||||
if 'error' not in dict_data:
|
||||
for elem in dict_data:
|
||||
elem = dict_data[elem]
|
||||
itemlist.append(Item(channel=item.channel, action='findvideos', title = elem['title'], url=elem['url'],
|
||||
thumbnail=elem['img']))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -216,19 +213,15 @@ def findvideos(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r'"|\n|\r|\t| |<br>|\s{2,}', "", data)
|
||||
#logger.debug(data)
|
||||
patron = '<iframe.*?rptss src=(.*?) (?:width.*?|frameborder.*?) allowfullscreen><\/iframe>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
|
||||
for video_url in matches:
|
||||
logger.debug('video_url: %s' % video_url)
|
||||
if 'stream' in video_url and 'streamango' not in video_url:
|
||||
data = httptools.downloadpage('https:'+video_url).data
|
||||
logger.debug(data)
|
||||
if not 'iframe' in video_url:
|
||||
new_url=scrapertools.find_single_match(data, 'iframe src="(.*?)"')
|
||||
new_data = httptools.downloadpage(new_url).data
|
||||
logger.debug('new_data %s' % new_data)
|
||||
url= ''
|
||||
try:
|
||||
url, quality = scrapertools.find_single_match(new_data, 'file:.*?(?:\"|\')(https.*?)(?:\"|\'),'
|
||||
|
||||
@@ -69,7 +69,8 @@ def list_all(item):
|
||||
action = 'seasons'
|
||||
|
||||
if 'episode' in item.url:
|
||||
scrapedtitle, season, episode = scrapertools.find_single_match(scrapedtitle, '(.*?) (\d+)x(\d+)')
|
||||
scrapedtitle, season, episode = scrapertools.find_single_match(scrapedtitle,
|
||||
'(.*?) (\d+).*?(?:x|X).*?(\d+)')
|
||||
contentSerieName = scrapedtitle
|
||||
scrapedtitle = '%sx%s - %s' % (season, episode, scrapedtitle)
|
||||
action='findvideos'
|
||||
|
||||
Reference in New Issue
Block a user