Merge remote-tracking branch 'alfa-addon/master'
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
<addon id="plugin.video.alfa" name="Alfa" version="2.4.14" provider-name="Alfa Addon">
|
<addon id="plugin.video.alfa" name="Alfa" version="2.4.15" provider-name="Alfa Addon">
|
||||||
<requires>
|
<requires>
|
||||||
<import addon="xbmc.python" version="2.1.0"/>
|
<import addon="xbmc.python" version="2.1.0"/>
|
||||||
<import addon="script.module.libtorrent" optional="true"/>
|
<import addon="script.module.libtorrent" optional="true"/>
|
||||||
@@ -19,13 +19,12 @@
|
|||||||
</assets>
|
</assets>
|
||||||
<news>[B]Estos son los cambios para esta versión:[/B]
|
<news>[B]Estos son los cambios para esta versión:[/B]
|
||||||
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
|
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
|
||||||
» animeid » anitoonstv
|
» hdfull » pelisplus
|
||||||
» hentaiid » mundoflv
|
» cinemahd » cinecalidad
|
||||||
» vertelenovelas » todopeliculas
|
» peliculasgratis » pelisplusco
|
||||||
» cinemahd » filebebo
|
» ultrapeliculashd » thevideome
|
||||||
» clipwatching » sendvid
|
|
||||||
» thevideome » videowood
|
|
||||||
¤ arreglos internos
|
¤ arreglos internos
|
||||||
|
[COLOR green]Gracias a [B][COLOR yellow]atomizasser[/COLOR][/B] por su colaboración en esta versión[/COLOR]
|
||||||
</news>
|
</news>
|
||||||
<description lang="es">Navega con Kodi por páginas web para ver sus videos de manera fácil.</description>
|
<description lang="es">Navega con Kodi por páginas web para ver sus videos de manera fácil.</description>
|
||||||
<summary lang="en">Browse web pages using Kodi</summary>
|
<summary lang="en">Browse web pages using Kodi</summary>
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -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,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",
|
||||||
|
|||||||
@@ -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 = "http://hdfull.tv"
|
host = "https://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.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="http://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="http://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("http://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("http://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)
|
||||||
|
|||||||
@@ -46,20 +46,20 @@ def mainlist(item):
|
|||||||
url= host,
|
url= host,
|
||||||
thumbnail="http://imgur.com/fN2p6qH.png", fanart="http://imgur.com/b8OuBR2.jpg",
|
thumbnail="http://imgur.com/fN2p6qH.png", fanart="http://imgur.com/b8OuBR2.jpg",
|
||||||
contentType="movie"))
|
contentType="movie"))
|
||||||
itemlist.append(itemlist[-1].clone(title="[COLOR lightskyblue][B]Series[/B][/COLOR]", action="scraper",
|
# itemlist.append(itemlist[-1].clone(title="[COLOR lightskyblue][B]Series[/B][/COLOR]", action="scraper",
|
||||||
url= host + "/lista-de-series",
|
# url= host + "/lista-de-series",
|
||||||
thumbnail="http://imgur.com/Jia27Uc.png", fanart="http://imgur.com/b8OuBR2.jpg",
|
# thumbnail="http://imgur.com/Jia27Uc.png", fanart="http://imgur.com/b8OuBR2.jpg",
|
||||||
contentType="tvshow"))
|
# contentType="tvshow"))
|
||||||
itemlist.append(itemlist[-1].clone(title="[COLOR lightskyblue][B]Buscar[/B][/COLOR]",
|
itemlist.append(itemlist[-1].clone(title="[COLOR lightskyblue][B]Buscar[/B][/COLOR]",
|
||||||
thumbnail="http://imgur.com/mwTwfN7.png", fanart="http://imgur.com/b8OuBR2.jpg"))
|
thumbnail="http://imgur.com/mwTwfN7.png", fanart="http://imgur.com/b8OuBR2.jpg"))
|
||||||
itemlist.append(
|
itemlist.append(
|
||||||
itemlist[-1].clone(title="[COLOR lightskyblue][B] Buscar Película[/B][/COLOR]", action="search", url="",
|
itemlist[-1].clone(title="[COLOR lightskyblue][B] Buscar Película[/B][/COLOR]", action="search", url="",
|
||||||
thumbnail="http://imgur.com/mwTwfN7.png", fanart="http://imgur.com/b8OuBR2.jpg",
|
thumbnail="http://imgur.com/mwTwfN7.png", fanart="http://imgur.com/b8OuBR2.jpg",
|
||||||
contentType="movie"))
|
contentType="movie"))
|
||||||
itemlist.append(
|
# itemlist.append(
|
||||||
itemlist[-1].clone(title="[COLOR lightskyblue][B] Buscar Serie[/B][/COLOR]", action="search", url="",
|
# itemlist[-1].clone(title="[COLOR lightskyblue][B] Buscar Serie[/B][/COLOR]", action="search", url="",
|
||||||
thumbnail="http://imgur.com/mwTwfN7.png", fanart="http://imgur.com/b8OuBR2.jpg",
|
# thumbnail="http://imgur.com/mwTwfN7.png", fanart="http://imgur.com/b8OuBR2.jpg",
|
||||||
contentType="tvshow"))
|
# contentType="tvshow"))
|
||||||
|
|
||||||
return itemlist
|
return itemlist
|
||||||
|
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -434,11 +434,20 @@ def get_vip(url):
|
|||||||
if 'plus'in item:
|
if 'plus'in item:
|
||||||
id, tipo, lang= scrapertools.find_single_match(item,'plus\/(\d+)\/.*?=(\d+).*?=(.*)')
|
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)
|
new_url = 'https://www.elreyxhd.com/pelisplus.php?id=%s&tipo=%s&idioma=%s' % (id, tipo, lang)
|
||||||
|
datax=httptools.downloadpage(new_url, follow_redirects=False).headers.get("location", "")
|
||||||
|
itemlist.append(Item(url=datax))
|
||||||
else:
|
else:
|
||||||
id = scrapertools.find_single_match(item,'episodes\/(\d+)')
|
id = scrapertools.find_single_match(item,'episodes\/(\d+)')
|
||||||
new_url = 'https://www.elreyxhd.com/samir.php?id=%s&tipo=capitulo&idioma=latino&x=&sv=' % id
|
data_vip = httptools.downloadpage(item).data
|
||||||
data=httptools.downloadpage(new_url, follow_redirects=False).headers.get("location", "")
|
patron = '<a href="(.*?)">'
|
||||||
itemlist.append(Item(url=data))
|
matches = re.compile(patron, re.DOTALL).findall(data_vip)
|
||||||
|
for urls in matches:
|
||||||
|
x = scrapertools.find_single_match(urls,r"&x=(\d)&")
|
||||||
|
if x != '':
|
||||||
|
new_url = 'https://www.elreyxhd.com/samir.php?id=%s&tipo=capitulo&idioma=latino&x=%s&sv=si' % (id, x)
|
||||||
|
datax = httptools.downloadpage(new_url, follow_redirects=False).headers.get("location", "")
|
||||||
|
itemlist.append(Item(url=datax))
|
||||||
|
|
||||||
return itemlist
|
return itemlist
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -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| |<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| |<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
|
||||||
|
|
||||||
|
|||||||
Executable → Regular
+60
-25
@@ -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| |<br>|\s{2,}', "", data)
|
data = re.sub(r'"|\n|\r|\t| |<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| |<br>|\s{2,}', "", data)
|
data = re.sub(r'"|\n|\r|\t| |<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| |<br>|\s{2,}', "", data)
|
data = re.sub(r'"|\n|\r|\t| |<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| |<br>|\s{2,}', "", data)
|
data = re.sub(r'"|\n|\r|\t| |<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(
|
||||||
|
|||||||
@@ -4,11 +4,7 @@
|
|||||||
"ignore_urls": [],
|
"ignore_urls": [],
|
||||||
"patterns": [
|
"patterns": [
|
||||||
{
|
{
|
||||||
"pattern": "(?:thevideo.me|tvad.me|thevid.net)/(?:embed-|)([A-z0-9]+)",
|
"pattern": "(?:thevideo.me|tvad.me|thevid.net|thevideo.ch|thevideo.us)/(?:embed-|)([A-z0-9]+)",
|
||||||
"url": "http://thevideo.me/embed-\\1.html"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"pattern": "(?:thevideo.me|tvad.me|thevid.net|thevideo.us)/(?:embed-|)([A-z0-9]+)",
|
|
||||||
"url": "http://thevideo.me/embed-\\1.html"
|
"url": "http://thevideo.me/embed-\\1.html"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -6,6 +6,11 @@
|
|||||||
"name": "xbmctorrent",
|
"name": "xbmctorrent",
|
||||||
"url": "plugin://plugin.video.xbmctorrent/play/%s"
|
"url": "plugin://plugin.video.xbmctorrent/play/%s"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "plugin.video.elementum",
|
||||||
|
"name": "elementum",
|
||||||
|
"url": "plugin://plugin.video.elementum/play?uri=%s"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "plugin.video.pulsar",
|
"id": "plugin.video.pulsar",
|
||||||
"name": "pulsar",
|
"name": "pulsar",
|
||||||
|
|||||||
Reference in New Issue
Block a user