Merge pull request #144 from Alfa-beto/Fixes

Fixes - again
This commit is contained in:
Alfa
2017-10-28 03:21:09 +02:00
committed by GitHub
6 changed files with 271 additions and 363 deletions

View File

@@ -1,12 +1,11 @@
{
"id": "ohpelis",
"name": "OH-PELIS",
"id": "ohlatino",
"name": "OH!Latino",
"active": true,
"adult": false,
"language": ["lat"],
"thumbnail": "https://s28.postimg.org/6v7ig831p/oh-pelis.png",
"thumbnail": "http://cinemiltonero.com/wp-content/uploads/2017/08/logo-Latino0.png",
"banner": "https://s27.postimg.org/bz0fh8jpf/oh-pelis-banner.png",
"version": 1,
"categories": [
"movie"
],

View File

@@ -0,0 +1,206 @@
# -*- coding: utf-8 -*-
# -*- Channel OH!Latino -*-
# -*- Created for Alfa-addon -*-
# -*- By the Alfa Develop Group -*-
import re
from channelselector import get_thumb
from core import httptools
from core import scrapertools
from core import servertools
from core import tmdb
from core.item import Item
from platformcode import config, logger
host = 'http://www.ohpeliculas.com'
def mainlist(item):
logger.info()
itemlist = []
data = httptools.downloadpage(host).data
patron = '<li class="cat-item cat-item-\d+"><a href="(.*?)" >(.*?)<\/a> <i>(\d+)<\/i>'
matches = scrapertools.find_multiple_matches(data, patron)
mcantidad = 0
for scrapedurl, scrapedtitle, cantidad in matches:
mcantidad += int(cantidad)
itemlist.append(
item.clone(title="Peliculas",
action='movies_menu'
))
itemlist.append(
item.clone(title="Buscar",
action="search",
url=host+'?s=',
))
return itemlist
def movies_menu(item):
logger.info()
itemlist = []
itemlist.append(
item.clone(title="Todas",
action="list_all",
url=host
))
itemlist.append(
item.clone(title="Generos",
action="section",
url=host, extra='genres'))
itemlist.append(
item.clone(title="Por año",
action="section",
url=host, extra='byyear'
))
return itemlist
def get_source(url):
logger.info()
data = httptools.downloadpage(url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
return data
def list_all(item):
logger.info()
itemlist = []
data = get_source(item.url)
patron = '<div id=mt-.*? class=item>.*?<a href=(.*?)><div class=image>.*?'
patron +='<img src=(.*?) alt=.*?span class=tt>(.*?)<.*?ttx>(.*?)'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedplot in matches:
url = scrapedurl
action = 'findvideos'
thumbnail = scrapedthumbnail
contentTitle = scrapedtitle
plot = scrapedplot
title = contentTitle
filtro_thumb = scrapedthumbnail.replace("https://image.tmdb.org/t/p/w185", "")
filtro_list = {"poster_path": filtro_thumb}
filtro_list = filtro_list.items()
itemlist.append(Item(channel=item.channel,
action=action,
title=title,
url=url,
plot=plot,
thumbnail=thumbnail,
contentTitle=contentTitle,
infoLabels={'filtro': filtro_list}
))
#tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
# Paginacion
if itemlist != []:
actual_page_url = item.url
next_page = scrapertools.find_single_match(data,
'alignleft><a href=(.*?) ><\/a><\/div><div class=nav-next alignright>')
if next_page != '':
itemlist.append(Item(channel=item.channel,
action="list_all",
title='Siguiente >>>',
url=next_page,
thumbnail='https://s16.postimg.org/9okdu7hhx/siguiente.png'
))
return itemlist
def section(item):
logger.info()
itemlist = []
duplicated =[]
data = httptools.downloadpage(item.url).data
if item.extra == 'genres':
patron = '<li class="cat-item cat-item-.*?><a href="(.*?)" >(.*?)<\/a>'
elif item.extra == 'byyear':
patron = '<a href="([^"]+)">(\d{4})<\/a><\/li>'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle in matches:
title = scrapedtitle
url = scrapedurl
if url not in duplicated:
itemlist.append(Item(channel=item.channel,
action='list_all',
title=title,
url=url
))
duplicated.append(url)
return itemlist
def search(item, texto):
logger.info()
texto = texto.replace(" ", "+")
item.url = item.url + texto
if texto != '':
return list_all(item)
def findvideos(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
itemlist.extend(servertools.find_video_items(data=data))
for videoitem in itemlist:
videoitem.channel = item.channel
videoitem.contentTitle = item.fulltitle
videoitem.infoLabels = item.infoLabels
if videoitem.server != 'youtube':
videoitem.title = item.title + ' (%s)' % videoitem.server
else:
videoitem.title = 'Trailer en %s' % videoitem.server
videoitem.action = 'play'
videoitem.server = ""
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos':
itemlist.append(
Item(channel=item.channel,
title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]',
url=item.url,
action="add_pelicula_to_library",
extra="findvideos",
))
tmdb.set_infoLabels(itemlist, True)
itemlist = servertools.get_servers_itemlist(itemlist)
return itemlist
def newest(categoria):
logger.info()
item = Item()
try:
if categoria == 'peliculas':
item.url = host + '/release/2017/'
elif categoria == 'infantiles':
item.url = host + '/genero/infantil/'
itemlist = list_all(item)
if itemlist[-1].title == '>> Página siguiente':
itemlist.pop()
except:
import sys
for line in sys.exc_info():
logger.error("%s" % line)
return []
return itemlist
def play(item):
logger.info()
item.thumbnail = item.contentThumbnail
return [item]

View File

@@ -1,323 +0,0 @@
# -*- coding: utf-8 -*-
# -*- Channel OH-PELIS -*-
# -*- Created for Alfa-addon -*-
# -*- By the Alfa Develop Group -*-
import re
from channelselector import get_thumb
from core import httptools
from core import scrapertools
from core import servertools
from core import tmdb
from core.item import Item
from platformcode import config, logger
host = 'http://www.ohpelis.com'
def mainlist(item):
logger.info()
itemlist = []
data = httptools.downloadpage(host).data
patron = '<li class="cat-item cat-item-\d+"><a href="(.*?)" >(.*?)<\/a> <i>(\d+)<\/i>'
matches = scrapertools.find_multiple_matches(data, patron)
mcantidad = 0
for scrapedurl, scrapedtitle, cantidad in matches:
mcantidad += int(cantidad)
itemlist.append(
item.clone(title="Peliculas (%s)" %mcantidad,
action='movies_menu'
))
itemlist.append(
item.clone(title="Series",
action='series_menu'
))
itemlist.append(
item.clone(title="Buscar",
action="search",
url='http://www.ohpelis.com/?s=',
))
return itemlist
def series_menu(item):
logger.info()
itemlist = []
itemlist.append(
item.clone(title="Series",
action="list_all",
url=host + '/series/',
extra='serie'
))
return itemlist
def movies_menu(item):
logger.info()
itemlist = []
itemlist.append(
item.clone(title="Todas",
action="list_all",
url=host + '/peliculas/'
))
itemlist.append(
item.clone(title="Generos",
action="section",
url=host, extra='genres'))
itemlist.append(
item.clone(title="Por año",
action="section",
url=host, extra='byyear'
))
return itemlist
def list_all(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
patron = '<div class="poster"><a href="(.*?)"><img src="(.*?)" alt="(.*?)"><\/a>.*?<span>(\d{4})<\/span>.*?'
patron += '<div class="texto">(.*?)<div'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear, scrapedplot in matches:
title = scrapedtitle
thumbnail = scrapedthumbnail
url = scrapedurl
year = scrapedyear
new_item = (item.clone(title=title,
url=url,
thumbnail=thumbnail,
fulltitle=title,
contentTitle=title,
infoLabels={'year': year}
))
if item.extra == 'serie':
new_item.action = 'seasons'
new_item.contentSerieName = title
else:
new_item.action = 'findvideos'
new_item.contentTitle = title
itemlist.append(new_item)
tmdb.set_infoLabels(itemlist, True)
# Paginacion
next_page = scrapertools.find_single_match(data, '<link rel="next" href="(.*?) />')
if next_page:
itemlist.append(Item(channel=item.channel,
action="list_all",
title=">> Página siguiente",
url=next_page,
thumbnail=get_thumb("next.png")))
return itemlist
def section(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
if item.extra == 'genres':
patron = '<li class="cat-item cat-item-\d+"><a href="(.*?)" >(.*?)<\/a> <i>\d+<\/i>'
elif item.extra == 'byyear':
patron = '<li><a href="(http:\/\/www\.ohpelis\.com\/release.*?)">(.*?)<\/a><\/li>'
elif item.extra == 'alpha':
patron = '<li><a href="(http:\/\/www\.ohpelis\.com\/.*?)" >(.*?)<\/a><\/li>'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle in matches:
title = scrapedtitle
url = scrapedurl
itemlist.append(Item(channel=item.channel,
action='list_all',
title=title,
url=url
))
return itemlist
def search_list(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
patron = '><div class="result-item">.*?<a href="(.*?)"><img src="(.*?)" alt="(.*?)" \/><span class="(.*?)".*?'
patron += '<span class="year">(.*?)<\/span>.*?<p>(.*?)<\/p>'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedtype, scrapedyear, scrapedplot in matches:
title = scrapedtitle
thumbnail = scrapedthumbnail
url = scrapedurl
year = scrapedyear
new_item = item.clone(action='',
title=title,
url=url,
thumbnail=thumbnail,
infoLabels={'year': year})
if scrapedtype == 'movies':
new_item.action = 'findvideos'
new_item.contentTitle = title
else:
new_item.action = 'seasons'
new_item.contentSerieName = title
itemlist.append(new_item)
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist
def search(item, texto):
logger.info()
texto = texto.replace(" ", "+")
item.url = item.url + texto
if texto != '':
return search_list(item)
def seasons(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
patron = '<span class="se-t(?: "| se-o")>(.*?)<\/span><span class="title">(.*?) <i>'
matches = re.compile(patron, re.DOTALL).findall(data)
infoLabels = item.infoLabels
for scrapedseason, scrapedtitle in matches:
title = scrapedtitle
contentSeasonNumber = scrapedseason
infoLabels['season'] = scrapedseason
itemlist.append(item.clone(title=title,
contentSeasonNumber=contentSeasonNumber,
action='episodesxseason',
infoLabels=infoLabels))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
if config.get_videolibrary_support() and len(itemlist) > 0:
itemlist.append(item.clone(title='[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]',
url=item.url,
action="add_serie_to_library",
extra='episodes',
contentSerieName=item.contentSerieName,
))
return itemlist
def episodes(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
patron = '<div class="numerando">(\d+) - (\d+)<\/div><div class="episodiotitle"><a href="(.*?)">(.*?)<\/a>'
matches = re.compile(patron, re.DOTALL).findall(data)
infoLabels = item.infoLabels
num_ep = 1
for scrapedseason, scrapedepisode, scrapedurl, scrapedtitle in matches:
season = scrapedseason
contentEpisodeNumber = num_ep
url = scrapedurl
title = '%sx%s - %s' % (season, num_ep, scrapedtitle)
itemlist.append(item.clone(title=title,
url=url,
contentEpisodeNumber=contentEpisodeNumber,
action='findvideos',
infoLabels=infoLabels
))
num_ep += 1
return itemlist
def episodesxseason(item):
logger.info()
itemlist = []
season = item.contentSeasonNumber
data = httptools.downloadpage(item.url).data
patron = '<div class="numerando">%s - (\d+)<\/div><div class="episodiotitle"><a href="(.*?)">(.*?)<\/a>' % season
matches = re.compile(patron, re.DOTALL).findall(data)
infoLabels = item.infoLabels
num_ep = 1
for scrapedepisode, scrapedurl, scrapedtitle in matches:
title = '%sx%s - %s' % (season, num_ep, scrapedtitle)
url = scrapedurl
infoLabels['episode'] = num_ep
itemlist.append(item.clone(title=title,
url=url,
contentEpisodeNumber=num_ep,
action='findvideos',
infoLabels=infoLabels))
num_ep += 1
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
return itemlist
def findvideos(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
itemlist.extend(servertools.find_video_items(data=data))
for videoitem in itemlist:
videoitem.channel = item.channel
videoitem.contentTitle = item.fulltitle
videoitem.infoLabels = item.infoLabels
if videoitem.server != 'youtube':
videoitem.title = item.title + ' (%s)' % videoitem.server
else:
videoitem.title = 'Trailer en %s' % videoitem.server
videoitem.action = 'play'
videoitem.server = ""
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos':
itemlist.append(
Item(channel=item.channel,
title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]',
url=item.url,
action="add_pelicula_to_library",
extra="findvideos",
))
tmdb.set_infoLabels(itemlist, True)
itemlist = servertools.get_servers_itemlist(itemlist)
return itemlist
def newest(categoria):
logger.info()
item = Item()
try:
if categoria == 'peliculas':
item.url = host + '/release/2017/'
elif categoria == 'infantiles':
item.url = host + '/genero/infantil/'
itemlist = list_all(item)
if itemlist[-1].title == '>> Página siguiente':
itemlist.pop()
except:
import sys
for line in sys.exc_info():
logger.error("%s" % line)
return []
return itemlist
def play(item):
logger.info()
item.thumbnail = item.contentThumbnail
return [item]

View File

@@ -423,6 +423,21 @@ def generos(item):
))
return itemlist
def get_vip(url):
logger.info()
itemlist =[]
url= url.replace('reproductor','vip')
data = httptools.downloadpage(url).data
patron = '<a href="(.*?)"> '
video_urls = scrapertools.find_multiple_matches(data,'<a href="(.*?)">')
for item in video_urls:
id, tipo, lang= scrapertools.find_single_match(item,'plus\/(\d+)\/.*?=(\d+).*?=(.*)')
new_url = 'https://www.elreyxhd.com/pelisplus.php?id=%s&tipo=%s&idioma=%s' % (id, tipo, lang)
data=httptools.downloadpage(new_url, follow_redirects=False).headers
itemlist.extend(servertools.find_video_items(data=str(data)))
return itemlist
def findvideos(item):
logger.info()
@@ -430,44 +445,13 @@ def findvideos(item):
duplicados = []
data = httptools.downloadpage(item.url).data
video_page = scrapertools.find_single_match(data, "<iframe width='100%' height='500' src='(.*?)' frameborder='0'")
itemlist.extend(get_vip(video_page))
data = httptools.downloadpage(video_page).data
patron = '<li data-id=".*?">\s+<a href="(.*?)" >'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl in matches:
if 'tipo' in scrapedurl:
server = 'gvideo'
gvideo_data = httptools.downloadpage(scrapedurl).data
video_url = scrapertools.find_single_match(gvideo_data,'<div id="player">.*?border: none" src="\/\/(.*?)" ')
video_url= 'http://%s'%video_url
gvideo_url = httptools.downloadpage(video_url).data
videourl = servertools.findvideosbyserver(gvideo_url, server)
logger.debug('videourl: %s'%videourl)
language = 'latino'
quality = 'default'
url = videourl[0][1]
title = '%s (%s)'%(item.contentTitle, server)
thumbnail = item.thumbnail
fanart = item.fanart
if video_url not in duplicados:
itemlist.append(item.clone(action="play",
title=title,
url=url,
thumbnail=thumbnail,
fanart=fanart,
show=title,
extra='gvideo',
language=language,
quality=quality,
server=server
))
duplicados.append(video_url)
itemlist.extend(servertools.find_video_items(data=data))
for videoitem in itemlist:

View File

@@ -114,7 +114,7 @@ def setting_channel(item):
custom_button_label = "Todos"
return platformtools.show_channel_settings(list_controls=list_controls,
caption="Canales incluidos en la búsqueda global",
caption="Canales incluidos en la búsqueda",
callback="save_settings", item=item,
custom_button={'visible': True,
'function': "cb_custom_button",
@@ -277,6 +277,13 @@ def channel_search(search_results, channel_parameters, tecleado):
def do_search(item, categories=None):
logger.info("blaa categorias %s" % categories)
if item.contextual==True:
categories = ["Películas"]
setting_item = Item(channel=item.channel, title="Elegir canales incluidos en la búsqueda", folder=False,
thumbnail=get_thumb("search.png"))
setting_channel(setting_item)
if categories is None:
categories = []
@@ -417,6 +424,8 @@ def do_search(item, categories=None):
title = channel
# resultados agrupados por canales
if item.contextual == True:
result_mode = 1
if result_mode == 0:
if len(search_results[channel]) > 1:
title += " [%s]" % element["item"].title.strip()
@@ -432,7 +441,7 @@ def do_search(item, categories=None):
else:
title = " [ Resultados del canal %s ] " % channel
itemlist.append(Item(title=title, channel="search", action="",
folder=False, text_bold=True))
folder=False, text_bold=True, from_channel=channel))
for i in element["itemlist"]:
if i.action:
title = " " + i.title
@@ -445,6 +454,24 @@ def do_search(item, categories=None):
progreso.close()
#Para opcion Buscar en otros canales
if item.contextual == True:
return exact_results(itemlist, tecleado)
else:
return itemlist
def exact_results(results, wanted):
logger.info()
itemlist =[]
for item in results:
if item.action=='':
channel=item.from_channel
if item.action != '' and item.contentTitle==wanted:
item.title = '%s [%s]' % (item.title, channel)
itemlist.append(item)
return itemlist

View File

@@ -394,6 +394,21 @@ def set_context_commands(item, parent_item):
from_channel=item.channel,
from_action=item.action).tourl())))
#Buscar en otros canales
if item.contentType in ['movie','tvshow']and item.channel != 'search':
# Buscar en otros canales
if item.contentSerieName!='':
item.extra=item.contentSerieName
else:
item.extra = item.contentTitle
context_commands.append(("[COLOR yellow]Buscar en otros canales[/COLOR]",
"XBMC.Container.Update (%s?%s)" % (sys.argv[0],
item.clone(channel='search',
action="do_search",
from_channel=item.channel,
contextual=True).tourl())))
if item.channel != "videolibrary":
# Añadir Serie a la videoteca
if item.action in ["episodios", "get_episodios"] and item.contentSerieName: