Merge pull request #557 from paeznet/master

gmobi
This commit is contained in:
Alfa
2019-02-13 14:32:09 -05:00
committed by GitHub
4 changed files with 145 additions and 109 deletions

View File

@@ -76,9 +76,8 @@ def lista(item):
def play(item):
logger.info()
data = scrapertools.cachePage(item.url)
url = scrapertools.find_single_match(data,'<div id=\'dle-content\'>.*?<iframe src="([^"]+)"')
url = "http:" + url
itemlist = servertools.find_video_items(data=url)
itemlist = servertools.find_video_items(data=data)
for videoitem in itemlist:
videoitem.title = item.title
videoitem.fulltitle = item.fulltitle

View File

@@ -4,35 +4,59 @@
"active": true,
"adult": false,
"language": ["cast", "lat"],
"thumbnail": "http://www.gnula.mobi/wp-content/uploads/2018/05/Captura-1.png?%3E",
"thumbnail": "https://gnula.mobi/wp-content/uploads/2018/12/gnula-logo.png",
"banner": "",
"categories": [
"movie"
],
"settings": [
{
"id": "filter_languages",
"type": "list",
"label": "Mostrar enlaces en idioma...",
"default": 0,
"enabled": true,
"visible": true,
"lvalues": [
"No filtrar",
"LAT",
"ESP",
"VOSE"
]
},
{
"id": "modo_grafico",
"type": "bool",
"label": "Buscar información extra",
"default": true,
"enabled": true,
"visible": true
},
{
"id": "include_in_global_search",
"type": "bool",
"label": "Incluir en busqueda global",
"default": true,
"enabled": true,
"visible": true
},
{
"id": "comprueba_enlaces",
"type": "bool",
"label": "Verificar si los enlaces existen",
"default": false,
"enabled": false,
"visible": false
},
{
"id": "include_in_newest_castellano",
"type": "bool",
"label": "Incluir en Novedades - Castellano",
"default": true,
"enabled": true,
"visible": true
},
{
"id": "include_in_newest_latino",
"type": "bool",
"label": "Incluir en Novedades - Latino",
"default": true,
"id": "comprueba_enlaces_num",
"type": "list",
"label": "Número de enlaces a verificar",
"default": 1,
"enabled": true,
"visible": true
}
]
"visible": "eq(-1,true)",
"lvalues": [ "5", "10", "15", "20" ]
}
]
}

View File

@@ -3,36 +3,60 @@
# Alfa
# ------------------------------------------------------------
import re
import re, urllib, urlparse
import base64
from core import httptools
from core import scrapertools
from core import servertools
from core import tmdb
from channels import autoplay
from platformcode import config, logger, platformtools
from core.item import Item
from platformcode import logger
from core import httptools, scrapertools, jsontools, tmdb
from core import servertools
from channels import filtertools
host = 'http://www.gnula.mobi'
IDIOMAS = {'Latino': 'LAT', 'Castellano': 'ESP', 'Subtitulado': 'VOSE'}
list_language = IDIOMAS.values()
list_servers = ['rapidvideo', 'streamgo', 'openload']
list_quality = ['HD', 'BR-S', 'TS']
__channel__='gmobi'
__comprueba_enlaces__ = config.get_setting('comprueba_enlaces', __channel__)
__comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', __channel__)
try:
__modo_grafico__ = config.get_setting('modo_grafico', __channel__)
except:
__modo_grafico__ = True
host = 'http://www.gnula.mobi/'
def mainlist(item):
logger.info()
itemlist = list()
itemlist.append(item.clone(title="Novedades", action="peliculas", url=host))
itemlist.append(item.clone(title="Castellano", action="peliculas",
url="http://www.gnula.mobi/tag/espanol/"))
itemlist.append(item.clone(title="Latino", action="peliculas", url="http://gnula.mobi/tag/latino/"))
itemlist.append(item.clone(title="VOSE", action="peliculas", url="http://gnula.mobi/tag/subtitulada/"))
autoplay.init(item.channel, list_servers, list_quality)
itemlist.append(item.clone(title="Novedades", action="lista", url=host + "/categorias/estrenos"))
itemlist.append(item.clone(title="Categorias" , action="categorias", url= host))
itemlist.append(item.clone(title="Buscar", action="search"))
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 search(item, texto):
logger.info()
texto = texto.replace(" ", "+")
item.url = "http://gnula.mobi/?s=%s" % texto
item.url = host + "/?s=%s" % texto
try:
return sub_search(item)
return lista(item)
except:
import sys
for line in sys.exc_info():
@@ -40,55 +64,49 @@ def search(item, texto):
return []
def sub_search(item):
def categorias(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|&nbsp;|<br>", "", data)
patron = '<div class="row">.*?<a href="([^"]+)" title="([^"]+)">.*?<img src="(.*?)" title'
matches = scrapertools.find_multiple_matches(data, patron)
for url, name, img in matches:
itemlist.append(item.clone(title=name, url=url, action="findvideos", thumbnail=img))
paginacion = scrapertools.find_single_match(data, '<a href="([^"]+)" ><i class="glyphicon '
'glyphicon-chevron-right" aria-hidden="true"></i>')
if paginacion:
itemlist.append(Item(channel=item.channel, action="sub_search", title="Next page >>", url=paginacion))
data = scrapertools.get_match(data,'<a>CATEGORÍAS</a>(.*?)</ul>')
patron = '<a href="([^"]+)">([^"]+)</a>'
matches = re.compile(patron,re.DOTALL).findall(data)
for scrapedurl,scrapedtitle in matches:
scrapedplot = ""
scrapedthumbnail = ""
itemlist.append(item.clone(channel=item.channel, action="lista", title=scrapedtitle , url=scrapedurl ,
thumbnail=scrapedthumbnail , plot=scrapedplot) )
return itemlist
def peliculas(item):
def lista(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|&nbsp;|<br>", "", data)
patron = '<div class="col-mt-5 postsh">.*?href="(.*?)" title="(.*?)".*?<.*?src="(.*?)"'
patron = '<article id="post-\d+".*?'
patron += '<a href="([^"]+)".*?'
patron += '<div class="Image">(.*?)</div>.*?'
patron += '"Title">([^"]+)</h2>.*?'
patron += '"Year">(\d+)</span>.*?'
patron += '<span class="Qlty">\w+ \(([^"]+)\)</span>'
matches = scrapertools.find_multiple_matches(data, patron)
for scrapedurl, scrapedtitle, scrapedthumbnail in matches:
filter_thumb = scrapedthumbnail.replace("http://image.tmdb.org/t/p/w300", "")
filter_list = {"poster_path": filter_thumb}
filter_list = filter_list.items()
itemlist.append(Item(channel=item.channel,
action="findvideos",
title=scrapedtitle,
fulltitle = scrapedtitle,
url=scrapedurl,
thumbnail=scrapedthumbnail,
infoLabels={'filtro': filter_list}))
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear, calidad in matches:
thumbnail = scrapertools.find_single_match(scrapedthumbnail, 'src="([^"]+)"')
scrapedtitle = scrapedtitle.replace("(%s)" % scrapedyear, "")
if not config.get_setting('unify'):
title = title = '%s [COLOR red] %s [/COLOR] (%s)' % (scrapedtitle, calidad , scrapedyear)
else:
title = ''
if not '>TV<' in scrapedthumbnail:
itemlist.append(item.clone(action="findvideos", title=title, url=scrapedurl, thumbnail=thumbnail,
contentTitle = scrapedtitle, quality=calidad, infoLabels={'year':scrapedyear}) )
tmdb.set_infoLabels(itemlist, True)
next_page_url = scrapertools.find_single_match(data, '<link rel="next" href="(.*?)"')
next_page_url = scrapertools.find_single_match(data, '<a class="next page-numbers" href="([^"]+)"')
if next_page_url != "":
next_page_url = next_page_url
itemlist.append(item.clone(action="peliculas", title="Siguiente >>", text_color="yellow",
itemlist.append(item.clone(action="lista", title="Siguiente >>", text_color="yellow",
url=next_page_url))
return itemlist
@@ -96,50 +114,46 @@ def findvideos(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
patron = 'data-src="([^"]+)".*?'
patron += 'data-toggle="tab">([^<]+)'
patron = '"server":"[^"]+",'
patron += '"lang":"([^"]+)",'
patron += '"quality":"\w+ \(([^"]+)\)",'
patron += '"link":"https:.*?=([^"]+)"'
matches = scrapertools.find_multiple_matches(data, patron)
for url, language in matches:
url = url.replace("&amp;", "&")
response = httptools.downloadpage(url, follow_redirects=False, add_referer=True)
if response.data:
url = scrapertools.find_single_match(response.data, 'src="([^"]+)"')
for lang, quality, url in matches:
if lang in IDIOMAS:
lang = IDIOMAS[lang]
url = base64.b64decode(url + "==")
if not config.get_setting('unify'):
title = '[COLOR red] %s [/COLOR] (%s)' % (quality , lang)
else:
url = response.headers.get("location", "")
url = url.replace("&quot","")
titulo = "Ver en %s (" + language + ")"
itemlist.append(item.clone(
action = "play",
title = titulo,
url = url,
language = language))
tmdb.set_infoLabels(itemlist, True)
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
title = ''
itemlist.append(item.clone(action = "play", title = '%s'+ title, url = url, language=lang, quality=quality,
fulltitle = item.title))
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
# Requerido para Filtrar enlaces
if __comprueba_enlaces__:
itemlist = servertools.check_list_links(itemlist, __comprueba_enlaces_num__)
# Requerido para FilterTools
itemlist = filtertools.get_links(itemlist, item, list_language)
# Requerido para AutoPlay
autoplay.start(itemlist, item)
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra !='findvideos' :
itemlist.append(Item(channel=item.channel, action="add_pelicula_to_library",
title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', url=item.url,
extra="findvideos", contentTitle=item.contentTitle))
return itemlist
def play(item):
item.thumbnail = item.contentThumbnail
return [item]
def newest(categoria):
logger.info()
itemlist = []
item = Item()
try:
if categoria == 'peliculas':
item.url = host
elif categoria == 'castellano':
item.url = host +'tag/espanol/'
elif categoria == 'latino':
item.url = host +'tag/latino/'
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 []
data = scrapertools.cachePage(item.url)
itemlist = servertools.find_video_items(data=data)
for videoitem in itemlist:
videoitem.title = item.fulltitle
videoitem.fulltitle = item.fulltitle
videoitem.thumbnail = item.thumbnail
videoitem.channel = item.channel
return itemlist

View File

@@ -13,7 +13,7 @@ host = 'http://mirapeliculas.net'
IDIOMAS = {'Latino': 'LAT', 'Español': 'ESP', 'Subtitulado': 'VOSE'}
list_language = IDIOMAS.values()
list_servers = ['Streamango', 'Streamplay', 'Openload', 'Okru']
list_servers = ['streamango', 'streamplay', 'openload', 'okru']
list_quality = ['BR-Rip', 'HD-Rip', 'DVD-Rip', 'TS-HQ', 'TS-Screner', 'Cam']
__channel__='mirapeliculas'
@@ -67,7 +67,6 @@ def categorias(item):
data = httptools.downloadpage(item.url).data
patron = '<li class="cat-item cat-item-3"><a href="([^"]+)" title="([^"]+)">'
matches = re.compile(patron,re.DOTALL).findall(data)
scrapertools.printMatches(matches) # esto luego de terminado el canal se debe eliminar
for scrapedurl,scrapedtitle in matches:
scrapedplot = ""
scrapedthumbnail = ""