Merge branch 'master' into actualizados

This commit is contained in:
Alfa
2018-02-03 09:22:09 -05:00
committed by GitHub
7 changed files with 434 additions and 365 deletions
+18 -2
View File
@@ -4,11 +4,11 @@
"active": true, "active": true,
"adult": false, "adult": false,
"language": ["lat"], "language": ["lat"],
"thumbnail": "", "thumbnail": "https://s13.postimg.org/bnesayzcn/cinemahd.png",
"banner": "", "banner": "",
"version": 1, "version": 1,
"categories": [ "categories": [
"tvshow" "movies"
], ],
"settings": [ "settings": [
{ {
@@ -34,6 +34,22 @@
"default": true, "default": true,
"enabled": true, "enabled": true,
"visible": true "visible": true
},
{
"id": "include_in_newest_latino",
"type": "bool",
"label": "Incluir en Novedades - latino",
"default": true,
"enabled": true,
"visible": true
},
{
"id": "include_in_newest_terror",
"type": "bool",
"label": "Incluir en Novedades - Terror",
"default": true,
"enabled": true,
"visible": true
} }
] ]
} }
+2 -3
View File
@@ -39,7 +39,6 @@ def get_source(url):
def list_all(item): def list_all(item):
logger.info() logger.info()
itemlist = [] itemlist = []
data = get_source(item.url)
if item.section == 'alpha': if item.section == 'alpha':
patron = '<span class=Num>\d+.*?<a href=(.*?) class.*?<img src=(.*?) alt=.*?<strong>(.*?)</strong>.*?' patron = '<span class=Num>\d+.*?<a href=(.*?) class.*?<img src=(.*?) alt=.*?<strong>(.*?)</strong>.*?'
@@ -75,7 +74,7 @@ def list_all(item):
# Paginación # Paginación
url_next_page = scrapertools.find_single_match(data,'<a class=next.*?href=(.*?)>.*?»</a></div>') url_next_page = scrapertools.find_single_match(data,'<a class=next.*?href=(.*?)>')
if url_next_page: if url_next_page:
itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, action='list_all')) itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, action='list_all'))
return itemlist return itemlist
@@ -92,7 +91,7 @@ def section(item):
elif item.section == 'genre': elif item.section == 'genre':
patron = '<a href=(http:.*?) class=Button STPb>(.*?)</a>' patron = '<a href=(http:.*?) class=Button STPb>(.*?)</a>'
elif item.section == 'year': elif item.section == 'year':
patron = 'menu-item-15\d+><a href=(.*?\?s.*?)>(\d{4})<\/a><\/li>' patron = 'custom menu-item-15\d+><a href=(.*?\?s.*?)>(\d{4})<\/a><\/li>'
elif item.section == 'alpha': elif item.section == 'alpha':
patron = '<li><a href=(.*?letters.*?)>(.*?)</a>' patron = '<li><a href=(.*?letters.*?)>(.*?)</a>'
action = 'list_all' action = 'list_all'
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"id": "cuelgame", "id": "cuelgame",
"name": "Cuelgame", "name": "Cuelgame",
"active": true, "active": false,
"adult": false, "adult": false,
"language": ["cast"], "language": ["cast"],
"thumbnail": "cuelgame.png", "thumbnail": "cuelgame.png",
+16 -5
View File
@@ -13,7 +13,7 @@ from core.item import Item
from platformcode import config, logger from platformcode import config, logger
from platformcode import platformtools from platformcode import platformtools
host = "https://hdfull.tv" host = "http://hdfull.tv"
if config.get_setting('hdfulluser', 'hdfull'): if config.get_setting('hdfulluser', 'hdfull'):
account = True account = True
@@ -39,11 +39,22 @@ def login():
httptools.downloadpage(host, post=post) httptools.downloadpage(host, post=post)
def set_host():
global host
logger.info()
hosts_list= [host, 'https://hdfull.tv', 'https://hdfull.me']
for url in hosts_list:
data = httptools.downloadpage(url, only_headers=True)
if data.sucess:
host = url
break
def mainlist(item): def mainlist(item):
logger.info() logger.info()
itemlist = [] itemlist = []
set_host()
itemlist.append(Item(channel=item.channel, action="menupeliculas", title="Películas", url=host, folder=True)) itemlist.append(Item(channel=item.channel, action="menupeliculas", title="Películas", url=host, folder=True))
itemlist.append(Item(channel=item.channel, action="menuseries", title="Series", url=host, folder=True)) itemlist.append(Item(channel=item.channel, action="menuseries", title="Series", url=host, folder=True))
@@ -569,7 +580,7 @@ def generos(item):
itemlist = [] itemlist = []
data = agrupa_datos(httptools.downloadpage(item.url).data) data = agrupa_datos(httptools.downloadpage(item.url).data)
data = scrapertools.find_single_match(data, '<li class="dropdown"><a href="https://hdfull.tv/peliculas"(.*?)</ul>') data = scrapertools.find_single_match(data, '<li class="dropdown"><a href="%s/peliculas"(.*?)</ul>' % host)
patron = '<li><a href="([^"]+)">([^<]+)</a></li>' patron = '<li><a href="([^"]+)">([^<]+)</a></li>'
matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
@@ -591,7 +602,7 @@ def generos_series(item):
itemlist = [] itemlist = []
data = agrupa_datos(httptools.downloadpage(item.url).data) data = agrupa_datos(httptools.downloadpage(item.url).data)
data = scrapertools.find_single_match(data, '<li class="dropdown"><a href="https://hdfull.tv/series"(.*?)</ul>') data = scrapertools.find_single_match(data, '<li class="dropdown"><a href="%s/series"(.*?)</ul>' % host)
patron = '<li><a href="([^"]+)">([^<]+)</a></li>' patron = '<li><a href="([^"]+)">([^<]+)</a></li>'
matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
@@ -642,10 +653,10 @@ def findvideos(item):
it1.append(Item(channel=item.channel, action="set_status", title=title, fulltitle=title, url=url_targets, it1.append(Item(channel=item.channel, action="set_status", title=title, fulltitle=title, url=url_targets,
thumbnail=item.thumbnail, show=item.show, folder=True)) thumbnail=item.thumbnail, show=item.show, folder=True))
data_js = httptools.downloadpage("https://hdfull.tv/templates/hdfull/js/jquery.hdfull.view.min.js").data data_js = httptools.downloadpage("%s/templates/hdfull/js/jquery.hdfull.view.min.js" % host).data
key = scrapertools.find_single_match(data_js, 'JSON.parse\(atob.*?substrings\((.*?)\)') key = scrapertools.find_single_match(data_js, 'JSON.parse\(atob.*?substrings\((.*?)\)')
data_js = httptools.downloadpage("https://hdfull.tv/js/providers.js").data data_js = httptools.downloadpage("%s/js/providers.js" % host).data
try: try:
data_js = jhexdecode(data_js) data_js = jhexdecode(data_js)
+16 -16
View File
@@ -119,11 +119,11 @@ def scraper(item):
patron += 'alt="([^"]+)".*?' patron += 'alt="([^"]+)".*?'
patron += '">([^<]+)<.*?' patron += '">([^<]+)<.*?'
patron += '<div class="l">(.*?)<\/a><h3>.*?' patron += '<div class="l">(.*?)<\/a><h3>.*?'
patron += '<\/a><\/h3> <span>(.*?)<' #patron += '<\/a><\/h3> <span>(.*?)<'
action = "findvideos" action = "findvideos"
matches = scrapertools.find_multiple_matches(bloque_enlaces, patron) matches = scrapertools.find_multiple_matches(bloque_enlaces, patron)
for url, thumb, title, quality, check_idioma, year in matches: for url, thumb, title, quality, check_idioma in matches:
year = year.strip() #year = year.strip()
title_fan = title title_fan = title
title_item = "[COLOR cornflowerblue][B]" + title + "[/B][/COLOR]" title_item = "[COLOR cornflowerblue][B]" + title + "[/B][/COLOR]"
if item.contentType != "movie": if item.contentType != "movie":
@@ -140,20 +140,20 @@ def scraper(item):
title = title title = title
itemlist.append( itemlist.append(
Item(channel=item.channel, title=title, fulltitle=title, url=host + url, action=action, thumbnail=thumb, Item(channel=item.channel, title=title, fulltitle=title, url=host + url, action=action, thumbnail=thumb,
fanart="http://imgur.com/nqmJozd.jpg", extra=title_fan + "|" + title_item + "|" + year, show=title, fanart="http://imgur.com/nqmJozd.jpg", extra=title_fan + "|" + title_item + "|", show=title,
contentType=item.contentType, folder=True, language = idiomas, infoLabels={"year":year})) contentType=item.contentType, folder=True, language = idiomas))
## Paginación ## Paginación
tmdb.set_infoLabels(itemlist) #tmdb.set_infoLabels(itemlist)
if year: #if year:
next = scrapertools.find_single_match(data, 'href="([^"]+)" title="Siguiente página">') next = scrapertools.find_single_match(data, 'href="([^"]+)" title="Siguiente página">')
if len(next) > 0: if len(next) > 0:
url = next url = next
if not "http" in url: if not "http" in url:
url = host + url url = host + url
itemlist.append( itemlist.append(
Item(channel=item.channel, action="scraper", title="[COLOR floralwhite][B]Siguiente[/B][/COLOR]", Item(channel=item.channel, action="scraper", title="[COLOR floralwhite][B]Siguiente[/B][/COLOR]",
url=url, thumbnail="http://imgur.com/jhRFAmk.png", fanart="http://imgur.com/nqmJozd.jpg", url=url, thumbnail="http://imgur.com/jhRFAmk.png", fanart="http://imgur.com/nqmJozd.jpg",
extra=item.extra, contentType=item.contentType, folder=True)) extra=item.extra, contentType=item.contentType, folder=True))
return itemlist return itemlist
+27 -19
View File
@@ -256,20 +256,16 @@ def season_episodes(item):
return itemlist[::-1] return itemlist[::-1]
def get_links_by_language(item, data):
def findvideos(item):
logger.info() logger.info()
itemlist = []
video_list = [] video_list = []
data = httptools.downloadpage(item.url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
patron = 'data-source=(.*?) .*?tab.*?data.*?srt=(.*?) data-iframe=><a>(.*?)\s?-\s?(.*?)<\/a>' language = scrapertools.find_single_match(data, 'ul id=level\d_(.*?)\s*class=')
patron = 'data-source=(.*?)data.*?srt=(.*?)data-iframe.*?Opci.*?<.*?hidden>[^\(]\((.*?)\)'
matches = matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
for url, sub, language, quality in matches:
for url, sub, quality in matches:
if 'http' not in url: if 'http' not in url:
new_url = 'https://onevideo.tv/api/player?key=90503e3de26d45e455b55e9dc54f015b3d1d4150&link' \ new_url = 'https://onevideo.tv/api/player?key=90503e3de26d45e455b55e9dc54f015b3d1d4150&link' \
@@ -281,22 +277,34 @@ def findvideos(item):
for video_url in video_list: for video_url in video_list:
video_url.channel = item.channel video_url.channel = item.channel
video_url.action = 'play' video_url.action = 'play'
video_url.title = item.title + '(%s) (%s)' % (language, video_url.server) video_url.title = item.title + '(%s) (%s)' % ('', video_url.server)
if video_url.language == '': if video_url.language == '':
video_url.language = language video_url.language = language
video_url.subtitle = sub video_url.subtitle = sub
video_url.contentTitle=item.contentTitle video_url.contentTitle = item.contentTitle
else: else:
server = servertools.get_server_from_url(url) video_list.append(item.clone(title='%s [%s] [%s]',
video_list.append(item.clone(title=item.title,
url=url, url=url,
action='play', action='play',
quality = quality, quality=quality,
language = language, language=language,
server=server, subtitle=sub
subtitle = sub
)) ))
return video_list
def findvideos(item):
logger.info()
itemlist = []
video_list = []
data = httptools.downloadpage(item.url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
patron_language ='(<ul id=level\d_.*?\s*class=.*?ul>)'
matches = re.compile(patron_language, re.DOTALL).findall(data)
for language in matches:
video_list.extend(get_links_by_language(item, language))
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos':
itemlist.append( itemlist.append(
@@ -307,6 +315,6 @@ def findvideos(item):
extra="findvideos", extra="findvideos",
contentTitle=item.contentTitle contentTitle=item.contentTitle
)) ))
video_list = servertools.get_servers_itemlist(video_list, lambda i: i.title % (i.server.capitalize(), i.language,i.quality) )
return video_list return video_list
+60 -25
View File
@@ -5,6 +5,7 @@ import re
from core import httptools from core import httptools
from core import scrapertools from core import scrapertools
from core import servertools from core import servertools
from core import jsontools
from core import tmdb from core import tmdb
from core.item import Item from core.item import Item
from platformcode import config, logger from platformcode import config, logger
@@ -106,13 +107,19 @@ def lista(item):
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data) data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
if item.extra != 'buscar': if item.extra != 'buscar':
patron = '<article id=post-.*? class=item movies><div class=poster><a href=(.*?)><img src=(.*?) ' patron = '<article id=.*?<img src=(.*?) alt=(.*?)>.*?<a href=(.*?)>.*?</h3><span>(.*?)<'
patron += 'alt=(.*?)>.*?quality>.*?<.*?<\/h3><span>(.*?)<\/span>'
else: else:
patron = '<article><div class=image>.*?<a href=(.*?)\/><img src=(.*?) alt=(.*?) \/>.*?year>(.*?)<\/span>' patron = '<article><div class=image>.*?<a href=(.*?)\/><img src=(.*?) alt=(.*?) \/>.*?year>(.*?)<\/span>'
matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear in matches: for scrapedthumbnail, scrapedtitle, scrapedurl, scrapedyear in matches:
if item.extra == 'buscar':
aux = scrapedthumbnail
scrapedthumbnail=scrapedtitle
scrapedtitle = scrapedurl
scrapedurl = aux
url = scrapedurl url = scrapedurl
thumbnail = scrapedthumbnail thumbnail = scrapedthumbnail
contentTitle = re.sub(r'\d{4}', '', scrapedtitle) contentTitle = re.sub(r'\d{4}', '', scrapedtitle)
@@ -121,6 +128,8 @@ def lista(item):
title = scrapertools.decodeHtmlentities(contentTitle) title = scrapertools.decodeHtmlentities(contentTitle)
year = scrapedyear year = scrapedyear
fanart = '' fanart = ''
itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=item.title, url=url, itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=item.title, url=url,
thumbnail=thumbnail, fanart=fanart, contentTitle=contentTitle, infoLabels={'year': year})) thumbnail=thumbnail, fanart=fanart, contentTitle=contentTitle, infoLabels={'year': year}))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
@@ -140,15 +149,16 @@ def generos(item):
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data) data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
patron = '<li class=cat-item cat-item-.*?><a href=(.*?) >(.*?)<\/a> <i>(.*?)<\/i><\/li>' logger.debug(data)
patron = 'genres menu-item-.*?><a href=(.*?)>(.*?)<'
matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle, cantidad in matches: for scrapedurl, scrapedtitle in matches:
thumbnail = '' thumbnail = ''
fanart = '' fanart = ''
if scrapedtitle in tgenero: if scrapedtitle in tgenero:
thumbnail = tgenero[scrapedtitle] thumbnail = tgenero[scrapedtitle]
title = scrapedtitle + ' (' + cantidad + ')' title = scrapedtitle
url = scrapedurl url = scrapedurl
if scrapedtitle not in ['PRÓXIMAMENTE', 'EN CINE']: if scrapedtitle not in ['PRÓXIMAMENTE', 'EN CINE']:
itemlist.append(item.clone(action="lista", itemlist.append(item.clone(action="lista",
@@ -166,23 +176,38 @@ def seccion(item):
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data) data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
if item.extra == 'year':
patron = '<li><a href=(.*?\/fecha-estreno.*?)>(.*?)<\/a>' patron = 'glossary=(.*?)>(.*?)<'
else:
patron = '<li><a href=(.*?) >(.*?)<\/a><\/li>'
matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle in matches: for scrapedid, scrapedtitle in matches:
thumbnail = '' thumbnail = ''
if scrapedtitle.lower() in thumbletras: if scrapedtitle.lower() in thumbletras:
thumbnail = thumbletras[scrapedtitle.lower()] thumbnail = thumbletras[scrapedtitle.lower()]
fanart = '' fanart = ''
title = scrapedtitle title = scrapedtitle
url = scrapedurl id = scrapedid
itemlist.append( itemlist.append(
Item(channel=item.channel, action="lista", title=title, fulltitle=item.title, url=url, thumbnail=thumbnail, Item(channel=item.channel, action="alpha", title=title, fulltitle=item.title, thumbnail=thumbnail,
fanart=fanart)) fanart=fanart, id = id))
return itemlist
def alpha(item):
logger.info()
itemlist = []
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']))
return itemlist return itemlist
@@ -191,23 +216,32 @@ def findvideos(item):
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data) data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
#logger.debug(data)
patron = '<iframe class=metaframe rptss src=(.*?) (?:width=.*?|frameborder=0) allowfullscreen><\/iframe>' patron = '<iframe.*?rptss src=(.*?) (?:width.*?|frameborder.*?) allowfullscreen><\/iframe>'
matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
for video_url in matches: for video_url in matches:
logger.debug('video_url: %s' % video_url)
if 'stream' in video_url: if 'stream' in video_url:
data = httptools.downloadpage('https:'+video_url).data data = httptools.downloadpage('https:'+video_url).data
new_url=scrapertools.find_single_match(data, 'iframe src="(.*?)"') logger.debug(data)
new_data = httptools.downloadpage(new_url).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.*?)(?:\"|\'),'
'label:.*?(?:\"|\')(.*?)(?:\"|\'),')
except:
pass
if url != '':
headers_string = '|Referer=%s' % url
url = url.replace('download', 'preview')+headers_string
url, quality = scrapertools.find_single_match(new_data, 'file:.*?"(.*?)",label:.*?"(.*?)"') sub = scrapertools.find_single_match(new_data, 'file:.*?"(.*?srt)"')
headers_string = '|Referer=%s' % url new_item = (Item(title=item.title, url=url, quality=quality, subtitle=sub, server='directo'))
url = url.replace('download', 'preview')+headers_string itemlist.append(new_item)
sub = scrapertools.find_single_match(new_data, 'file:.*?"(.*?srt)"')
new_item = (Item(title=item.title, url=url, quality=quality, server='directo',
subtitle=sub))
itemlist.append(new_item)
else: else:
itemlist.extend(servertools.find_video_items(data=video_url)) itemlist.extend(servertools.find_video_items(data=video_url))
@@ -220,6 +254,7 @@ def findvideos(item):
if 'youtube' in videoitem.url: if 'youtube' in videoitem.url:
videoitem.title = '[COLOR orange]Trailer en Youtube[/COLOR]' videoitem.title = '[COLOR orange]Trailer en Youtube[/COLOR]'
itemlist = servertools.get_servers_itemlist(itemlist)
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos':
itemlist.append( itemlist.append(