# -*- coding: utf-8 -*- # -*- Channel Rexpelis -*- # -*- Created for Alfa-addon -*- # -*- By the Alfa Develop Group -*- from channelselector import get_thumb from channels import autoplay from channels import filtertools from core import httptools from core import jsontools from core import scrapertools from core import servertools from core import tmdb from core.item import Item from platformcode import config, logger, platformtools idio = {'es-mx': 'LAT','es-es': 'ESP','en': 'VO'} cali = {'poor': 'SD','low': 'SD','medium': 'HD','high': 'HD'} list_language = idio.values() list_quality = ["SD","HD"] list_servers = ['rapidvideo', 'streamango', 'fastplay', 'openload', 'netu', 'vidoza', 'uptobox'] __channel__='rexpelis' host = "https://www.rexpelis.com" try: __modo_grafico__ = config.get_setting('modo_grafico', __channel__) except: __modo_grafico__ = True def mainlist(item): logger.info() autoplay.init(item.channel, list_servers, list_quality) itemlist = [] data = httptools.downloadpage(host).data matches = scrapertools.find_multiple_matches(data, 'cant-genre">([^<]+)') cantidad = 0 for cantidad1 in matches: cantidad += int(cantidad1) itemlist.append(Item(channel = item.channel, title = "Actualizadas", action = "peliculas", url = host, page=1, type ="movie", thumbnail = get_thumb("updated", auto = True))) itemlist.append(Item(channel = item.channel, title = "Estrenos", action = "estrenos", url = host + "/estrenos", page=1, thumbnail = get_thumb("premieres", auto = True))) itemlist.append(Item(channel = item.channel, title = "Por género (Total películas: %s)" %cantidad, action = "generos", url = host, extra = "Genero", thumbnail = get_thumb("genres", auto = True) )) itemlist.append(Item(channel = item.channel, title = "Por año", action = "annos", url = host, extra = "Genero", thumbnail = get_thumb("year", auto = True) )) itemlist.append(Item(channel = item.channel, title = "")) itemlist.append(Item(channel = item.channel, title = "Buscar", action = "search", url = host + "/search?term=", thumbnail = get_thumb("search", auto = True))) itemlist.append(item.clone(title="Configurar canal...", text_color="gold", action="configuracion", folder=False)) autoplay.show_option(item.channel, itemlist) return itemlist def configuracion(item): ret = platformtools.show_channel_settings() platformtools.itemlist_refresh() return ret def estrenos(item): logger.info() itemlist = [] data = httptools.downloadpage(item.url).data patron = 'item-pelicula.*?href="([^"]+).*?' patron += 'src="([^"]+).*?' patron += '
([^<]+).*?'
patron += '([^<]+)'
matches = scrapertools.find_multiple_matches(data, patron)
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear in matches:
scrapedtitle = scrapedtitle.replace("Película ","")
itemlist.append(Item(channel = item.channel,
action = "findvideos",
contentTitle = scrapedtitle,
infoLabels = {'year':scrapedyear},
thumbnail = scrapedthumbnail,
title = scrapedtitle + " (%s)" %scrapedyear,
url = scrapedurl
))
tmdb.set_infoLabels(itemlist)
return itemlist
def search(item, texto):
logger.info()
item.url = host + "/suggest?que=" + texto
item.extra = "busca"
item.page = 1
item.texto = texto
if texto != '':
return sub_search(item)
else:
return []
def sub_search(item):
logger.info()
itemlist = []
url = item.url
headers = [
['X-Requested-With', 'XMLHttpRequest']
]
data = httptools.downloadpage(item.url).data
token = scrapertools.find_single_match(data, 'csrf-token" content="([^"]+)')
data = httptools.downloadpage(item.url + "&_token=" + token, headers=headers).data
#logger.info("Intel33 %s" %data)
data_js = jsontools.load(data)["data"]["m"]
#logger.info("Intel44 %s" %data_js)
for js in data_js:
itemlist.append(Item(channel = item.channel,
action = "findvideos",
contentTitle = js["title"],
infoLabels = {'year': js["release_year"]},
thumbnail = js["cover"],
title = js["title"] + " (%s)" %js["release_year"],
url = js["slug"]
))
tmdb.set_infoLabels(itemlist)
#pagination
if len(itemlist)>0:
itemlist.append(Item(channel = item.channel,
action = "peliculas",
page = item.page + 1,
title = "Página siguiente >>",
url = item.url
))
return itemlist
def peliculas(item):
logger.info()
itemlist = []
headers = [
['X-Requested-With', 'XMLHttpRequest']
]
data = httptools.downloadpage(item.url).data
token = scrapertools.find_single_match(data, 'csrf-token" content="([^"]+)')
post = "page=%s&type=%s&_token=%s" %(item.page, item.type, token)
if item.slug:
post += "&slug=%s" %item.slug
#logger.info("Intel11 %s" %post)
data = httptools.downloadpage(host + "/pagination", post=post, headers=headers).data
#logger.info("Intel11 %s" %data)
patron = '(?s)href="([^"]+)".*?'
patron += 'src="([^"]+)".*?'
patron += 'text-center">([^<]+).*?'
patron += ' ([^<]+)'
matches = scrapertools.find_multiple_matches(data, patron)
for scrapedurl, scrapedthumbnail, scrapedyear, scrapedtitle in matches:
itemlist.append(Item(channel = item.channel,
action = "findvideos",
contentTitle = scrapedtitle,
infoLabels = {'year':scrapedyear},
thumbnail = scrapedthumbnail,
title = scrapedtitle + " (%s)" %scrapedyear,
url = scrapedurl
))
tmdb.set_infoLabels(itemlist)
#pagination
if len(itemlist)>0:
itemlist.append(Item(channel = item.channel,
action = "peliculas",
page = item.page + 1,
title = "Página siguiente >>",
url = item.url
))
return itemlist
def newest(categoria):
logger.info()
itemlist = []
item = Item()
try:
if categoria in ['peliculas','latino']:
item.url = host
item.page=1
elif categoria == 'infantiles':
item.url = host + '/genero/animacion'
item.page = 1
elif categoria == 'terror':
item.url = host + '/genero/terror'
item.page = 1
itemlist = peliculas(item)
if "Pagina" in itemlist[-1].title:
itemlist.pop()
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
bloque = scrapertools.find_single_match(data, "genressomb.*?")
patron = 'href="([^"]+)".*?'
patron += '([^<]+).*?'
patron += 'cant-genre">([^<]+)'
matches = scrapertools.find_multiple_matches(bloque, patron)
for url, titulo, cantidad in matches:
itemlist.append(Item(channel = item.channel,
action = "peliculas_gen",
page = 1,
slug = titulo,
title = titulo + "(%s)" %cantidad,
type = "genres",
url = url
))
return itemlist
def peliculas_gen(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
patron = 'item-pelicula.*?href="([^"]+)".*?'
patron += 'src="([^"]+)".*?'
patron += ' ([^<]+).*?'
patron += '([^<]+)'
matches = scrapertools.find_multiple_matches(data, patron)
for scrapedurl, scrapedthumbnail, scrapedtitle , scrapedyear in matches:
itemlist.append(Item(channel = item.channel,
action = "findvideos",
contentTitle = scrapedtitle,
infoLabels = {'year':scrapedyear},
thumbnail = scrapedthumbnail,
title = scrapedtitle + " (%s)" %scrapedyear,
url = scrapedurl
))
tmdb.set_infoLabels(itemlist)
return itemlist
def annos(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
bloque = scrapertools.find_single_match(data, 'div class="years.*?')
patron = 'href="([^"]+)"'
patron += '>([^<]+).*?'
matches = scrapertools.find_multiple_matches(bloque, patron)
for url, titulo in matches:
itemlist.append(Item(channel = item.channel,
action = "peliculas",
page = 1,
slug = titulo,
title = titulo,
type = "year",
url = url
))
return itemlist
def findvideos(item):
itemlist = []
data = httptools.downloadpage(item.url).data
patron = '(?i)