Merge branch 'master' into fixes
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="plugin.video.alfa" name="Alfa" version="2.7.5" provider-name="Alfa Addon">
|
||||
<addon id="plugin.video.alfa" name="Alfa" version="2.7.6" provider-name="Alfa Addon">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
<import addon="script.module.libtorrent" optional="true"/>
|
||||
@@ -19,19 +19,15 @@
|
||||
</assets>
|
||||
<news>[B]Estos son los cambios para esta versión:[/B]
|
||||
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
|
||||
¤ divxtotal ¤ elitetorrent
|
||||
¤ estrenosgo ¤ grantorrent
|
||||
¤ mejortorrent1 ¤ newpct1
|
||||
¤ pelismagnet ¤ todopeliculas
|
||||
¤ allpeliculas ¤ puyasubs
|
||||
¤ yape ¤ dilo
|
||||
¤ goovie ¤ pelisipad
|
||||
¤ seriesblanco ¤ pepecine
|
||||
¤ maxipelis24 ¤ pelisplanet
|
||||
¤ yts
|
||||
¤ newpct1 ¤ zonatorrent
|
||||
¤ mejortorrent ¤ mejortorrent1
|
||||
¤ clasicofilm ¤ danimados
|
||||
¤ pelisplus ¤ seriesblancoxyz
|
||||
¤ pelisplanet ¤ canalporno
|
||||
¤ pelisgratis ¤ hdfull
|
||||
¤ arreglos internos
|
||||
|
||||
¤ Agradecimientos a @wrlopez y @chivmalev por colaborar en ésta versión
|
||||
¤ Agradecimientos a @chivmalev por colaborar en ésta versión
|
||||
|
||||
</news>
|
||||
<description lang="es">Navega con Kodi por páginas web para ver sus videos de manera fácil.</description>
|
||||
|
||||
@@ -63,14 +63,15 @@ def categorias(item):
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
bloque = scrapertools.find_single_match(data, '<ul class="ordenar-por ordenar-por-categoria">'
|
||||
'(.*?)<div class="publis-bottom">')
|
||||
'(.*?)<\/ul>')
|
||||
|
||||
patron = '<div class="muestra-categorias">.*?<a class="thumb" href="([^"]+)".*?<img class="categorias" src="([^"]+)".*?<div class="nombre">([^"]+)</div>'
|
||||
#patron = '<div class="muestra-categorias">.*?<a class="thumb" href="([^"]+)".*?<img class="categorias" src="([^"]+)".*?<div class="nombre">([^"]+)</div>'
|
||||
patron = "<li><a href='([^']+)'\s?title='([^']+)'>.*?<\/a><\/li>"
|
||||
matches = scrapertools.find_multiple_matches(bloque, patron)
|
||||
for url, thumbnail, title in matches:
|
||||
for url, title in matches:
|
||||
url = host + url
|
||||
thumbnail = "http:" + thumbnail
|
||||
itemlist.append(item.clone(action="findvideos", title=title, url=url, thumbnail=thumbnail))
|
||||
#thumbnail = "http:" + thumbnail
|
||||
itemlist.append(item.clone(action="findvideos", title=title, url=url))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -2,13 +2,11 @@
|
||||
|
||||
import re
|
||||
|
||||
from core import filetools
|
||||
from core import jsontools
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core import tmdb
|
||||
from core import videolibrarytools
|
||||
from core.item import Item
|
||||
from platformcode import config, platformtools, logger
|
||||
from channelselector import get_thumb
|
||||
@@ -32,19 +30,16 @@ else:
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
itemlist.append(item.clone(title="Películas", text_color=color2, action="", text_bold=True))
|
||||
itemlist.append(item.clone(action="peliculas", title=" Novedades",
|
||||
url="http://www.clasicofilm.com/feeds/posts/summary?start-index=1&max-results=20&alt=json-in-script&callback=finddatepost",
|
||||
url = host + "feeds/posts/summary?start-index=1&max-results=20&alt=json-in-script&callback=finddatepost",
|
||||
thumbnail=get_thumb('newest', auto=True), text_color=color1))
|
||||
itemlist.append(item.clone(action="generos", title=" Por géneros", url=host,
|
||||
thumbnail=get_thumb('genres', auto=True), text_color=color1))
|
||||
|
||||
itemlist.append(item.clone(title="", action=""))
|
||||
itemlist.append(item.clone(action="search", title="Buscar...", text_color=color3,
|
||||
thumbnail=get_thumb('search', auto=True)))
|
||||
itemlist.append(item.clone(action="configuracion", title="Configurar canal...", text_color="gold", folder=False))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -56,7 +51,6 @@ def configuracion(item):
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
data = httptools.downloadpage(host).data
|
||||
texto = texto.replace(" ", "%20")
|
||||
item.url = host + "search?q=%s" % texto
|
||||
try:
|
||||
@@ -75,20 +69,17 @@ def newest(categoria):
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'peliculas':
|
||||
item.url = "http://www.clasicofilm.com/feeds/posts/summary?start-index=1&max-results=20&alt=json-in-script&callback=finddatepost"
|
||||
item.url = host + "feeds/posts/summary?start-index=1&max-results=20&alt=json-in-script&callback=finddatepost"
|
||||
item.action = "peliculas"
|
||||
itemlist = peliculas(item)
|
||||
|
||||
if itemlist[-1].action == "peliculas":
|
||||
itemlist.pop()
|
||||
|
||||
# Se captura la excepción, para no interrumpir al canal novedades si un canal falla
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("{0}".format(line))
|
||||
return []
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -96,13 +87,10 @@ def peliculas(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item.text_color = color2
|
||||
|
||||
# Descarga la página
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
data = scrapertools.find_single_match(data, 'finddatepost\((\{.*?\]\}\})\);')
|
||||
data = jsontools.load(data)["feed"]
|
||||
|
||||
for entry in data["entry"]:
|
||||
for link in entry["link"]:
|
||||
if link["rel"] == "alternate":
|
||||
@@ -124,17 +112,12 @@ def peliculas(item):
|
||||
url=url, thumbnail=thumbnail, infoLabels=infolabels,
|
||||
contentTitle=fulltitle, contentType="movie")
|
||||
itemlist.append(new_item)
|
||||
|
||||
try:
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
actualpage = int(scrapertools.find_single_match(item.url, 'start-index=(\d+)'))
|
||||
totalresults = int(data["openSearch$totalResults"]["$t"])
|
||||
if actualpage + 20 < totalresults:
|
||||
url_next = item.url.replace("start-index=" + str(actualpage), "start-index=" + str(actualpage + 20))
|
||||
itemlist.append(Item(channel=item.channel, action=item.action, title=">> Página Siguiente", url=url_next))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -163,7 +146,6 @@ def busqueda(item):
|
||||
def generos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
# Descarga la página
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<b>([^<]+)</b><br\s*/>\s*<script src="([^"]+)"'
|
||||
@@ -174,50 +156,35 @@ def generos(item):
|
||||
.replace("recentpostslist", "finddatepost")
|
||||
itemlist.append(Item(channel=item.channel, action="peliculas", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=item.thumbnail, text_color=color3))
|
||||
|
||||
itemlist.sort(key=lambda x: x.title)
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
def decodifica_id(txt):
|
||||
res = ''
|
||||
for i in range(0, len(txt), 3):
|
||||
res += '\\u0' + txt[i:i+3]
|
||||
return res.decode('unicode-escape') #Ej: {"v":"9KD2iEmiYLsF"}
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
if item.infoLabels["tmdb_id"]:
|
||||
tmdb.set_infoLabels_item(item, __modo_grafico__)
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
iframe = scrapertools.find_single_match(data, '<iframe src="([^"]+)"')
|
||||
data = data.replace("googleusercontent","malo") # para que no busque enlaces erroneos de gvideo
|
||||
if "goo.gl/" in iframe:
|
||||
data += httptools.downloadpage(iframe, follow_redirects=False, only_headers=True).headers.get("location", "")
|
||||
itemlist = servertools.find_video_items(item, data)
|
||||
|
||||
library_path = config.get_videolibrary_path()
|
||||
if "data:text/javascript;base64" in data:
|
||||
div_id = scrapertools.find_single_match(data, '<div id="([0-9a-fA-F]+)"')
|
||||
# ~ logger.info(div_id)
|
||||
vid_id = scrapertools.find_single_match(decodifica_id(div_id), ':"([^"]+)"')
|
||||
# ~ logger.info(vid_id)
|
||||
itemlist.append(item.clone(url='http://netu.tv/watch_video.php?v='+vid_id, server='netutv', action='play'))
|
||||
else:
|
||||
iframe = scrapertools.find_single_match(data, '<iframe width="720".*?src="([^"]+)"')
|
||||
data = data.replace("googleusercontent","malo") # para que no busque enlaces erroneos de gvideo
|
||||
if "goo.gl/" in iframe:
|
||||
data += httptools.downloadpage(iframe, follow_redirects=False, only_headers=True).headers.get("location", "")
|
||||
itemlist = servertools.find_video_items(item, data)
|
||||
if config.get_videolibrary_support():
|
||||
title = "Añadir película a la videoteca"
|
||||
if item.infoLabels["imdb_id"] and not library_path.lower().startswith("smb://"):
|
||||
try:
|
||||
movie_path = filetools.join(config.get_videolibrary_path(), 'CINE')
|
||||
files = filetools.walk(movie_path)
|
||||
for dirpath, dirname, filename in files:
|
||||
for f in filename:
|
||||
if item.infoLabels["imdb_id"] in f and f.endswith(".nfo"):
|
||||
head_nfo, it = videolibrarytools.read_nfo(filetools.join(dirpath, dirname, f))
|
||||
canales = it.library_urls.keys()
|
||||
canales.sort()
|
||||
if "clasicofilm" in canales:
|
||||
canales.pop(canales.index("clasicofilm"))
|
||||
canales.insert(0, "[COLOR red]clasicofilm[/COLOR]")
|
||||
title = "Película ya en tu videoteca. [%s] ¿Añadir?" % ",".join(canales)
|
||||
break
|
||||
except:
|
||||
import traceback
|
||||
logger.error(traceback.format_exc())
|
||||
|
||||
itemlist.append(item.clone(action="add_pelicula_to_library", title=title))
|
||||
|
||||
token_auth = config.get_setting("token_trakt", "tvmoviedb")
|
||||
if token_auth and item.infoLabels["tmdb_id"]:
|
||||
itemlist.append(item.clone(channel="tvmoviedb", title="[Trakt] Gestionar con tu cuenta", action="menu_trakt",
|
||||
extra="movie"))
|
||||
|
||||
itemlist.append(item.clone(action="add_pelicula_to_library", title="Añadir película a la videoteca"))
|
||||
return itemlist
|
||||
|
||||
@@ -133,14 +133,15 @@ def episodios(item):
|
||||
itemlist = []
|
||||
infoLabels = {}
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
data_lista = scrapertools.find_single_match(data,
|
||||
'<ul class="episodios">(.+?)<\/ul><\/div><\/div><\/div>')
|
||||
show = item.title
|
||||
patron_caps = '<img alt=".+?" src="([^"]+)"><\/a><\/div><div class=".+?">([^"]+)<\/div>.+?'
|
||||
patron_caps += '<a .+? href="([^"]+)">([^"]+)<\/a>'
|
||||
patron = '(?s)<ul class="episodios">(.+?)<\/ul>'
|
||||
data_lista = scrapertools.find_single_match(data,patron)
|
||||
contentSerieName = item.title
|
||||
patron_caps = 'href="([^"]+)".*?'
|
||||
patron_caps += 'src="([^"]+)".*?'
|
||||
patron_caps += 'numerando">([^<]+).*?'
|
||||
patron_caps += 'link_go">.*?>([^<]+)'
|
||||
matches = scrapertools.find_multiple_matches(data_lista, patron_caps)
|
||||
for scrapedthumbnail, scrapedtempepi, scrapedurl, scrapedtitle in matches:
|
||||
for scrapedurl, scrapedthumbnail, scrapedtempepi, scrapedtitle in matches:
|
||||
tempepi=scrapedtempepi.split(" - ")
|
||||
if tempepi[0]=='Pel':
|
||||
tempepi[0]=0
|
||||
@@ -150,8 +151,8 @@ def episodios(item):
|
||||
itemlist.append(item.clone(thumbnail=scrapedthumbnail,
|
||||
action="findvideos", title=title, url=scrapedurl))
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0:
|
||||
itemlist.append(Item(channel=item.channel, title="[COLOR yellow]Añadir " + show + " a la videoteca[/COLOR]", url=item.url,
|
||||
action="add_serie_to_library", extra="episodios", show=show))
|
||||
itemlist.append(Item(channel=item.channel, title="[COLOR yellow]Añadir " + contentSerieName + " a la videoteca[/COLOR]", url=item.url,
|
||||
action="add_serie_to_library", extra="episodios", contentSerieName=contentSerieName))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -159,16 +160,17 @@ def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
data1 = scrapertools.find_single_match(data,
|
||||
'<div id="playex" .+?>(.+?)<\/nav>?\s<\/div><\/div>')
|
||||
patron = '<div id="playex" .+?>(.+?)<\/nav>'
|
||||
data1 = scrapertools.find_single_match(data, patron)
|
||||
patron = "changeLink\('([^']+)'\)"
|
||||
matches = re.compile(patron, re.DOTALL).findall(data1)
|
||||
matches = scrapertools.find_multiple_matches(data1, patron)
|
||||
for url64 in matches:
|
||||
url1 =base64.b64decode(url64)
|
||||
if 'danimados' in url1:
|
||||
new_data = httptools.downloadpage('https:'+url1.replace('stream', 'stream_iframe')).data
|
||||
logger.info("Intel33 %s" %new_data)
|
||||
url = 'https:'+url1.replace('stream/', 'stream_iframe/')
|
||||
id = scrapertools.find_single_match(url, 'iframe/(.*)')
|
||||
url = url.replace(id, base64.b64encode(id))
|
||||
new_data = httptools.downloadpage(url).data
|
||||
url = scrapertools.find_single_match(new_data, "sources: \[\{file:'([^']+)")
|
||||
if "zkstream" in url:
|
||||
url1 = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers.get("location", "")
|
||||
|
||||
@@ -65,6 +65,7 @@ def menupeliculas(item):
|
||||
itemlist.append(Item(channel=item.channel, action="items_usuario",
|
||||
title="[COLOR orange][B]Pendientes[/B][/COLOR]",
|
||||
url=host + "/a/my?target=movies&action=pending&start=-28&limit=28", folder=True))
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="fichas", title="ABC", url=host + "/peliculas/abc", folder=True))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="fichas", title="Últimas películas", url=host + "/peliculas", folder=True))
|
||||
@@ -94,6 +95,7 @@ def menuseries(item):
|
||||
itemlist.append(Item(channel=item.channel, action="items_usuario",
|
||||
title="[COLOR orange][B]Para Ver[/B][/COLOR]",
|
||||
url=host + "/a/my?target=shows&action=watch&start=-28&limit=28", folder=True))
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="series_abc", title="A-Z", folder=True))
|
||||
itemlist.append(Item(channel=item.channel, action="novedades_episodios", title="Últimos Emitidos",
|
||||
url=host + "/a/episodes?action=latest&start=-24&limit=24&elang=ALL", folder=True))
|
||||
@@ -109,6 +111,7 @@ def menuseries(item):
|
||||
Item(channel=item.channel, action="generos_series", title="Series por Género", url=host, folder=True))
|
||||
itemlist.append(Item(channel=item.channel, action="listado_series", title="Listado de todas las series",
|
||||
url=host + "/series/list", folder=True))
|
||||
|
||||
if account:
|
||||
itemlist.append(Item(channel=item.channel, action="items_usuario",
|
||||
title="[COLOR orange][B]Favoritas[/B][/COLOR]",
|
||||
@@ -235,6 +238,7 @@ def fichas(item):
|
||||
infoLabels=dict()
|
||||
## Carga estados
|
||||
status = jsontools.load(httptools.downloadpage(host + '/a/status/all').data)
|
||||
|
||||
if item.title == "Buscar...":
|
||||
data = agrupa_datos(httptools.downloadpage(item.url, post=item.extra).data)
|
||||
s_p = scrapertools.get_match(data, '<h3 class="section-title">(.*?)<div id="footer-wrapper">').split(
|
||||
@@ -248,6 +252,7 @@ def fichas(item):
|
||||
data = s_p[0] + s_p[1]
|
||||
else:
|
||||
data = agrupa_datos(httptools.downloadpage(item.url).data)
|
||||
|
||||
data = re.sub(
|
||||
r'<div class="span-6[^<]+<div class="item"[^<]+' + \
|
||||
'<a href="([^"]+)"[^<]+' + \
|
||||
@@ -496,9 +501,11 @@ def findvideos(item):
|
||||
itemlist = []
|
||||
it1 = []
|
||||
it2 = []
|
||||
|
||||
## Carga estados
|
||||
status = jsontools.load(httptools.downloadpage(host + '/a/status/all').data)
|
||||
url_targets = item.url
|
||||
|
||||
## Vídeos
|
||||
id = ""
|
||||
type = ""
|
||||
@@ -521,41 +528,43 @@ def findvideos(item):
|
||||
thumbnail=item.thumbnail, show=item.show))
|
||||
it1.append(Item(channel=item.channel, action="set_status", title=title, fulltitle=title, url=url_targets,
|
||||
thumbnail=item.thumbnail, show=item.show, language=item.language, folder=True))
|
||||
|
||||
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\((.*?)\)')
|
||||
|
||||
data_js = httptools.downloadpage("%s/js/providers.js" % host).data
|
||||
try:
|
||||
data_js = jhexdecode(data_js)
|
||||
from lib import alfaresolver
|
||||
provs = alfaresolver.hdfull_providers(data_js)
|
||||
if provs == '': return []
|
||||
except:
|
||||
from lib.aadecode import decode as aadecode
|
||||
data_js = data_js.split(";゚ω゚")
|
||||
decode_aa = ""
|
||||
for match in data_js:
|
||||
decode_aa += aadecode(match)
|
||||
data_js = re.sub(r':(function.*?\})', r':"\g<1>"', decode_aa)
|
||||
data_js = re.sub(r':(var[^,]+),', r':"\g<1>",', data_js)
|
||||
return []
|
||||
|
||||
data = agrupa_datos(httptools.downloadpage(item.url).data)
|
||||
data_obf = scrapertools.find_single_match(data, "var ad\s*=\s*'([^']+)'")
|
||||
data_decrypt = jsontools.load(obfs(base64.b64decode(data_obf), 126 - int(key)))
|
||||
|
||||
infolabels = {}
|
||||
year = scrapertools.find_single_match(data, '<span>Año:\s*</span>.*?(\d{4})')
|
||||
infolabels["year"] = year
|
||||
matches = []
|
||||
for match in data_decrypt:
|
||||
prov = eval(scrapertools.find_single_match(data_js, 'p\[%s\]\s*=\s*(\{.*?\}[\']\})' % match["provider"]))
|
||||
server_url = scrapertools.find_single_match(prov['l'], 'return\s*"(.*?)"')
|
||||
url = '%s%s' % (server_url, match['code'])
|
||||
url = re.sub(r'\'|"|\s|\+', '', url)
|
||||
url = re.sub(r'var_\d+\[\d+\]', '', url)
|
||||
embed = prov["e"]
|
||||
matches.append([match["lang"], match["quality"], url, embed])
|
||||
if match['provider'] in provs:
|
||||
try:
|
||||
embed = provs[match['provider']][0]
|
||||
url = eval(provs[match['provider']][1].replace('_code_', "match['code']"))
|
||||
matches.append([match['lang'], match['quality'], url, embed])
|
||||
except:
|
||||
pass
|
||||
|
||||
for idioma, calidad, url, embed in matches:
|
||||
mostrar_server = True
|
||||
option = "Ver"
|
||||
option1 = 1
|
||||
if re.search(r'return ([\'"]{2,}|\})', embed):
|
||||
if embed == 'd':
|
||||
option = "Descargar"
|
||||
option1 = 2
|
||||
else:
|
||||
option = "Ver"
|
||||
option1 = 1
|
||||
|
||||
calidad = unicode(calidad, "utf8").upper().encode("utf8")
|
||||
title = option + ": %s (" + calidad + ")" + " (" + idioma + ")"
|
||||
thumbnail = item.thumbnail
|
||||
@@ -569,6 +578,7 @@ def findvideos(item):
|
||||
Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail,
|
||||
plot=plot, fanart=fanart, show=item.show, folder=True, infoLabels=infolabels, language=idioma,
|
||||
contentTitle=item.contentTitle, contentType=item.contentType, tipo=option, tipo1=option1, idioma=idioma))
|
||||
|
||||
it2 = servertools.get_servers_itemlist(it2, lambda i: i.title % i.server.capitalize())
|
||||
it2.sort(key=lambda it: (it.tipo1, it.idioma, it.server))
|
||||
for item in it2:
|
||||
@@ -576,6 +586,7 @@ def findvideos(item):
|
||||
item.url += "###" + id + ";" + type
|
||||
itemlist.extend(it1)
|
||||
itemlist.extend(it2)
|
||||
|
||||
## 2 = película
|
||||
if type == "2" and item.category != "Cine":
|
||||
if config.get_videolibrary_support():
|
||||
|
||||
@@ -1,23 +1,24 @@
|
||||
{
|
||||
"id": "mejortorrent",
|
||||
"name": "Mejor Torrent",
|
||||
"name": "MejorTorrent",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["*"],
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "mejortorrent.png",
|
||||
"banner": "mejortorrent.png",
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
"tvshow",
|
||||
"documentary"
|
||||
"documentary",
|
||||
"vos"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "domain_name",
|
||||
"type": "text",
|
||||
"label": "URL actual de la Web Mejor Torrent",
|
||||
"default": "http://www.mejortorrent.com/",
|
||||
"default": "http://www.mejortorrent.org/",
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
@@ -37,6 +38,22 @@
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "filter_languages",
|
||||
"type": "list",
|
||||
"label": "Mostrar enlaces en idioma...",
|
||||
"default": 0,
|
||||
"enabled": true,
|
||||
"visible": true,
|
||||
"lvalues": [
|
||||
"No filtrar",
|
||||
"CAST",
|
||||
"LAT",
|
||||
"VO",
|
||||
"VOS",
|
||||
"VOSE"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "seleccionar_ult_temporadda_activa",
|
||||
"type": "bool",
|
||||
@@ -60,6 +77,27 @@
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "timeout_downloadpage",
|
||||
"type": "list",
|
||||
"label": "Timeout (segs.) en descarga de páginas o verificación de servidores",
|
||||
"default": 5,
|
||||
"enabled": true,
|
||||
"visible": true,
|
||||
"lvalues": [
|
||||
"None",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"6",
|
||||
"7",
|
||||
"8",
|
||||
"9",
|
||||
"10"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import re
|
||||
import sys
|
||||
import urllib
|
||||
import urlparse
|
||||
import time
|
||||
|
||||
from channelselector import get_thumb
|
||||
from core import httptools
|
||||
@@ -13,11 +14,25 @@ from core.item import Item
|
||||
from platformcode import config, logger
|
||||
from core import tmdb
|
||||
from lib import generictools
|
||||
from channels import filtertools
|
||||
from channels import autoplay
|
||||
|
||||
host = 'http://www.mejortorrent.com/'
|
||||
#host = config.get_setting('domain_name', 'mejortorrent')
|
||||
|
||||
__modo_grafico__ = config.get_setting('modo_grafico', 'mejortorrent')
|
||||
#IDIOMAS = {'CAST': 'Castellano', 'LAT': 'Latino', 'VO': 'Version Original'}
|
||||
IDIOMAS = {'Castellano': 'CAST', 'Latino': 'LAT', 'Version Original': 'VO'}
|
||||
list_language = IDIOMAS.values()
|
||||
list_quality = []
|
||||
list_servers = ['torrent']
|
||||
|
||||
channel = "mejortorrent"
|
||||
|
||||
host = 'http://www.mejortorrent.org/'
|
||||
#host = config.get_setting('domain_name', channel)
|
||||
|
||||
categoria = channel.capitalize()
|
||||
__modo_grafico__ = config.get_setting('modo_grafico', channel)
|
||||
timeout = config.get_setting('timeout_downloadpage', channel)
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
@@ -31,9 +46,13 @@ def mainlist(item):
|
||||
thumb_series_az = get_thumb("channels_tvshow_az.png")
|
||||
thumb_docus = get_thumb("channels_documentary.png")
|
||||
thumb_buscar = get_thumb("search.png")
|
||||
thumb_separador = get_thumb("next.png")
|
||||
thumb_settings = get_thumb("setting_0.png")
|
||||
|
||||
autoplay.init(item.channel, list_servers, list_quality)
|
||||
|
||||
itemlist.append(Item(channel=item.channel, title="Novedades", action="listado_busqueda", extra="novedades", tipo=False,
|
||||
url= host + "/secciones.php?sec=ultimos_torrents", thumbnail=thumb_buscar))
|
||||
#itemlist.append(Item(channel=item.channel, title="Novedades", action="listado_busqueda", extra="novedades", tipo=False,
|
||||
# url= host + "/secciones.php?sec=ultimos_torrents", thumbnail=thumb_buscar))
|
||||
itemlist.append(Item(channel=item.channel, title="Peliculas", action="listado", extra="peliculas", tipo=False,
|
||||
url= host + "/torrents-de-peliculas.html", thumbnail=thumb_pelis))
|
||||
itemlist.append(Item(channel=item.channel, title="Peliculas HD", action="listado", extra="peliculas", tipo=False,
|
||||
@@ -57,7 +76,20 @@ def mainlist(item):
|
||||
itemlist.append(Item(channel=item.channel, title="Documentales Listado Alfabetico", action="alfabeto", extra="documentales", url= host + "/torrents-de-documentales.html", thumbnail=thumb_docus))
|
||||
itemlist.append(Item(channel=item.channel, title="Buscar...", action="search", thumbnail=thumb_buscar, tipo=False))
|
||||
|
||||
itemlist.append(Item(channel=item.channel, url=host, title="[COLOR yellow]Configuración:[/COLOR]", folder=False, thumbnail=thumb_separador))
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="configuracion", title="Configurar canal", thumbnail=thumb_settings))
|
||||
|
||||
autoplay.show_option(item.channel, itemlist) #Activamos Autoplay
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def configuracion(item):
|
||||
from platformcode import platformtools
|
||||
ret = platformtools.show_channel_settings()
|
||||
platformtools.itemlist_refresh()
|
||||
return
|
||||
|
||||
|
||||
def alfabeto(item):
|
||||
@@ -366,6 +398,9 @@ def listado(item):
|
||||
title = re.sub(r'-\s[m|M].*?serie', '', title)
|
||||
title_subs += ["Miniserie"]
|
||||
|
||||
if item_local.language == []:
|
||||
item_local.language = ['CAST'] #Por defecto
|
||||
|
||||
if title.endswith('.'):
|
||||
title = title[:-1]
|
||||
|
||||
@@ -608,6 +643,9 @@ def listado_busqueda(item):
|
||||
title = re.sub(r'-\s[m|M].*?serie', '', title)
|
||||
title_subs += ["Miniserie"]
|
||||
|
||||
if item_local.language == []:
|
||||
item_local.language = ['CAST'] #Por defecto
|
||||
|
||||
if title.endswith('.'):
|
||||
title = title[:-1]
|
||||
|
||||
@@ -687,7 +725,13 @@ def listado_busqueda(item):
|
||||
item_local.contentSeason_save = item_local.contentSeason
|
||||
del item_local.infoLabels['season']
|
||||
|
||||
itemlist.append(item_local.clone())
|
||||
#Ahora se filtra por idioma, si procede, y se pinta lo que vale
|
||||
if config.get_setting('filter_languages', channel) > 0: #Si hay idioma seleccionado, se filtra
|
||||
itemlist = filtertools.get_link(itemlist, item_local, list_language)
|
||||
else:
|
||||
itemlist.append(item_local.clone()) #Si no, pintar pantalla
|
||||
|
||||
#cnt_title = len(itemlist) #Contador de líneas añadidas
|
||||
|
||||
#logger.debug(item_local)
|
||||
|
||||
@@ -715,6 +759,10 @@ def listado_busqueda(item):
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist_t = [] #Itemlist total de enlaces
|
||||
itemlist_f = [] #Itemlist de enlaces filtrados
|
||||
if not item.language:
|
||||
item.language = ['CAST'] #Castellano por defecto
|
||||
|
||||
#Bajamos los datos de la página
|
||||
data = ''
|
||||
@@ -778,6 +826,8 @@ def findvideos(item):
|
||||
# Extrae la dimensión del vídeo
|
||||
size = scrapertools.find_single_match(item_local.url, '(\d{1,3},\d{1,2}?\w+)\.torrent')
|
||||
size = size.upper().replace(".", ",").replace("G", " G ").replace("M", " M ") #sustituimos . por , porque Unify lo borra
|
||||
if not size:
|
||||
size = generictools.get_torrent_size(item_local.url) #Buscamos el tamaño en el .torrent
|
||||
if size:
|
||||
item_local.title = re.sub('\s\[\d+,?\d*?\s\w[b|B]\]', '', item_local.title) #Quitamos size de título, si lo traía
|
||||
item_local.title = '%s [%s]' % (item_local.title, size) #Agregamos size al final del título
|
||||
@@ -785,18 +835,40 @@ def findvideos(item):
|
||||
item_local.quality = '%s [%s]' % (item.quality, size) #Agregamos size al final de calidad
|
||||
|
||||
#Ahora pintamos el link del Torrent, si lo hay
|
||||
if item_local.url: # Hay Torrent ?
|
||||
item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent
|
||||
item_local.title = re.sub(r'\s\[COLOR \w+\]\[\[?\]?\]\[\/COLOR\]', '', item_local.title) #Quitamos etiquetas vacías
|
||||
item_local.title = re.sub(r'\s\[COLOR \w+\]\[\/COLOR\]', '', item_local.title) #Quitamos colores vacíos
|
||||
item_local.alive = "??" #Calidad del link sin verificar
|
||||
item_local.action = "play" #Visualizar vídeo
|
||||
item_local.server = "torrent" #Seridor Torrent
|
||||
if item_local.url: # Hay Torrent ?
|
||||
item_local.title = '[COLOR yellow][?][/COLOR] [COLOR yellow][Torrent][/COLOR] [COLOR limegreen][%s][/COLOR] [COLOR red]%s[/COLOR]' % (item_local.quality, str(item_local.language)) #Preparamos título de Torrent
|
||||
|
||||
#Preparamos título y calidad, quitamos etiquetas vacías
|
||||
item_local.title = re.sub(r'\s?\[COLOR \w+\]\[\[?\s?\]?\]\[\/COLOR\]', '', item_local.title)
|
||||
item_local.title = re.sub(r'\s?\[COLOR \w+\]\s?\[\/COLOR\]', '', item_local.title)
|
||||
item_local.title = item_local.title.replace("--", "").replace("[]", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip()
|
||||
item_local.quality = re.sub(r'\s?\[COLOR \w+\]\[\[?\s?\]?\]\[\/COLOR\]', '', item_local.quality)
|
||||
item_local.quality = re.sub(r'\s?\[COLOR \w+\]\s?\[\/COLOR\]', '', item_local.quality)
|
||||
item_local.quality = item_local.quality.replace("--", "").replace("[]", "").replace("()", "").replace("(/)", "").replace("[/]", "").strip()
|
||||
|
||||
item_local.alive = "??" #Calidad del link sin verificar
|
||||
item_local.action = "play" #Visualizar vídeo
|
||||
item_local.server = "torrent" #Seridor Torrent
|
||||
|
||||
itemlist.append(item_local.clone()) #Pintar pantalla
|
||||
itemlist_t.append(item_local.clone()) #Pintar pantalla, si no se filtran idiomas
|
||||
|
||||
# Requerido para FilterTools
|
||||
if config.get_setting('filter_languages', channel) > 0: #Si hay idioma seleccionado, se filtra
|
||||
itemlist_f = filtertools.get_link(itemlist_f, item_local, list_language) #Pintar pantalla, si no está vacío
|
||||
|
||||
#logger.debug("title=[" + item.title + "], torrent=[ " + item_local.url + " ], url=[ " + url + " ], post=[" + item.post + "], thumbnail=[ " + item.thumbnail + " ]" + " size: " + size)
|
||||
|
||||
if len(itemlist_f) > 0: #Si hay entradas filtradas...
|
||||
itemlist.extend(itemlist_f) #Pintamos pantalla filtrada
|
||||
else:
|
||||
if config.get_setting('filter_languages', channel) > 0 and len(itemlist_t) > 0: #Si no hay entradas filtradas ...
|
||||
thumb_separador = get_thumb("next.png") #... pintamos todo con aviso
|
||||
itemlist.append(Item(channel=item.channel, url=host, title="[COLOR red][B]NO hay elementos con el idioma seleccionado[/B][/COLOR]", thumbnail=thumb_separador))
|
||||
itemlist.extend(itemlist_t) #Pintar pantalla con todo si no hay filtrado
|
||||
|
||||
# Requerido para AutoPlay
|
||||
autoplay.start(itemlist, item) #Lanzamos Autoplay
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"id": "mejortorrent1",
|
||||
"name": "Mejor Torrent 1",
|
||||
"name": "MejorTorrent 1",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "miltorrents",
|
||||
"name": "Miltorrents",
|
||||
"active": true,
|
||||
"active": false,
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"thumbnail": "http://imgur.com/KZoska0.png",
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
"thumbnail": "http://imgur.com/ThH8Zmk.png",
|
||||
"banner": "peliculasgratis.png",
|
||||
"categories": [
|
||||
"torrent",
|
||||
"direct",
|
||||
"movie",
|
||||
"tvshow"
|
||||
],
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"id": "pelispekes",
|
||||
"name": "PelisPekes",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["lat"],
|
||||
"thumbnail": "pelispekes.png",
|
||||
"banner": "pelispekes.png",
|
||||
"categories": [
|
||||
"movie"
|
||||
]
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
if item.url == "":
|
||||
item.url = "http://www.pelispekes.com/"
|
||||
|
||||
data = scrapertools.cachePage(item.url)
|
||||
patron = '<div class="poster-media-card"[^<]+'
|
||||
patron += '<a href="([^"]+)" title="([^"]+)"[^<]+'
|
||||
patron += '<div class="poster"[^<]+'
|
||||
patron += '<div class="title"[^<]+'
|
||||
patron += '<span[^<]+</span[^<]+'
|
||||
patron += '</div[^<]+'
|
||||
patron += '<span class="rating"[^<]+'
|
||||
patron += '<i[^<]+</i><span[^<]+</span[^<]+'
|
||||
patron += '</span[^<]+'
|
||||
patron += '<div class="poster-image-container"[^<]+'
|
||||
patron += '<img width="\d+" height="\d+" src="([^"]+)"'
|
||||
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail in matches:
|
||||
url = scrapedurl
|
||||
title = scrapedtitle
|
||||
thumbnail = scrapedthumbnail
|
||||
plot = ""
|
||||
logger.debug("title=[" + title + "], url=[" + url + "], thumbnail=[" + thumbnail + "]")
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="findvideos", title=title, url=url, thumbnail=thumbnail, fanart=thumbnail,
|
||||
plot=plot, contentTitle=title, contentThumbnail=thumbnail))
|
||||
|
||||
# Extrae la pagina siguiente
|
||||
next_page_url = scrapertools.find_single_match(data,
|
||||
'<a href="([^"]+)"><i class="glyphicon glyphicon-chevron-right')
|
||||
if next_page_url != "":
|
||||
itemlist.append(Item(channel=item.channel, action="mainlist", title=">> Página siguiente", url=next_page_url,
|
||||
viewmode="movie"))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
logger.info("item=" + item.tostring())
|
||||
data = scrapertools.cachePage(item.url)
|
||||
data = data.replace("www.pelispekes.com/player/tune.php?nt=", "netu.tv/watch_video.php?v=")
|
||||
|
||||
item.plot = scrapertools.find_single_match(data, '<h2>Sinopsis</h2>(.*?)<div')
|
||||
item.plot = scrapertools.htmlclean(item.plot).strip()
|
||||
item.contentPlot = item.plot
|
||||
logger.info("plot=" + item.plot)
|
||||
|
||||
return servertools.find_video_items(item=item, data=data)
|
||||
@@ -13,6 +13,14 @@
|
||||
"vos"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": false,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "modo_grafico",
|
||||
"type": "bool",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"id": "seriesblanco",
|
||||
"name": "SeriesBlanco",
|
||||
"name": "SeriesBlanco.org",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"id": "tiotorrent",
|
||||
"name": "TioTorrent",
|
||||
"active": true,
|
||||
"active": false,
|
||||
"adult": false,
|
||||
"language": ["cast","lat"],
|
||||
"thumbnail": "https://s1.postimg.cc/29eths1fi7/tiotorrent.png",
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
"torrent",
|
||||
"movie",
|
||||
"tvshow",
|
||||
"vos"
|
||||
"vos",
|
||||
"direct"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -179,6 +179,9 @@ def render_items(itemlist, parent_item):
|
||||
from core import httptools
|
||||
|
||||
if item.action == 'play':
|
||||
#### Compatibilidad con Kodi 18: evita que se quede la ruedecedita dando vueltas en enlaces Directos
|
||||
item.folder = False
|
||||
|
||||
item.thumbnail = unify.thumbnail_type(item)
|
||||
else:
|
||||
item.thumbnail = httptools.get_url_headers(item.thumbnail)
|
||||
@@ -1002,12 +1005,6 @@ def set_player(item, xlistitem, mediaurl, view, strm):
|
||||
|
||||
# Reproduce
|
||||
# xbmc_player = xbmc_player
|
||||
|
||||
#### Compatibilidad con Kodi 18: evita cuelgues/cancelaciones cuando el .torrent se lanza desde pantalla convencional
|
||||
if xbmc.getCondVisibility('Window.IsMedia'):
|
||||
xbmcplugin.setResolvedUrl(int(sys.argv[1]), False, xlistitem) #Preparamos el entorno para evitar error Kod1 18
|
||||
xbmc.sleep(100) #Dejamos tiempo para que se ejecute
|
||||
|
||||
xbmc_player.play(playlist, xlistitem)
|
||||
if config.get_setting('trakt_sync'):
|
||||
trakt_tools.wait_for_update_trakt()
|
||||
@@ -1025,10 +1022,6 @@ def set_player(item, xlistitem, mediaurl, view, strm):
|
||||
xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xlistitem)
|
||||
|
||||
elif config.get_setting("player_mode") == 2:
|
||||
#### Compatibilidad con Kodi 18: evita cuelgues/cancelaciones cuando el .torrent se lanza desde pantalla convencional
|
||||
if xbmc.getCondVisibility('Window.IsMedia'):
|
||||
xbmcplugin.setResolvedUrl(int(sys.argv[1]), False, xlistitem) #Preparamos el entorno para evitar error Kod1 18
|
||||
xbmc.sleep(100) #Dejamos tiempo para que se ejecute
|
||||
xbmc.executebuiltin("PlayMedia(" + mediaurl + ")")
|
||||
|
||||
# TODO MIRAR DE QUITAR VIEW
|
||||
@@ -1089,7 +1082,7 @@ def play_torrent(item, xlistitem, mediaurl):
|
||||
#### Compatibilidad con Kodi 18: evita cuelgues/cancelaciones cuando el .torrent se lanza desde pantalla convencional
|
||||
if xbmc.getCondVisibility('Window.IsMedia'):
|
||||
xbmcplugin.setResolvedUrl(int(sys.argv[1]), False, xlistitem) #Preparamos el entorno para evitar error Kod1 18
|
||||
xbmc.sleep(500) #Dejamos tiempo para que se ejecute
|
||||
xbmc.sleep(500) #Dejamos tiempo para que se ejecute
|
||||
|
||||
mediaurl = urllib.quote_plus(item.url)
|
||||
if ("quasar" in torrent_options[seleccion][1] or "elementum" in torrent_options[seleccion][1]) and item.infoLabels['tmdb_id']: #Llamada con más parámetros para completar el título
|
||||
|
||||
@@ -3245,6 +3245,10 @@ msgctxt "#70135"
|
||||
msgid "Custom Colours"
|
||||
msgstr "Colores Personalizados"
|
||||
|
||||
msgctxt "#70136"
|
||||
msgid "Tv Show"
|
||||
msgstr "Serie"
|
||||
|
||||
msgctxt "#70137"
|
||||
msgid "Movies"
|
||||
msgstr "Películas"
|
||||
@@ -4000,7 +4004,7 @@ msgid "Error in the user and/or password. Check your credentials"
|
||||
msgstr "Error en el usuario y/o contraseña. Comprueba tus credenciales"
|
||||
|
||||
msgctxt "#70331"
|
||||
msgid "Error during login. Check your credentials
|
||||
msgid "Error during login. Check your credentials"
|
||||
msgstr "Error durante el login. Comprueba tus credenciales"
|
||||
|
||||
msgctxt "#70332"
|
||||
@@ -4052,7 +4056,7 @@ msgid "[Trakt] Remove %s from your watchlist"
|
||||
msgstr "[Trakt] Eliminar %s de tu watchlist"
|
||||
|
||||
msgctxt "#70344"
|
||||
msgid "Add to %s your watchlist""
|
||||
msgid "Add to %s your watchlist"
|
||||
msgstr "[Trakt] Añadir %s a tu watchlist"
|
||||
|
||||
msgctxt "#70345"
|
||||
@@ -4060,7 +4064,7 @@ msgid "[Trakt] Remove %s from your collection"
|
||||
msgstr "[Trakt] Eliminar %s de tu colección"
|
||||
|
||||
msgctxt "#70346"
|
||||
msgid "[Trakt] Add %s to your collection
|
||||
msgid "[Trakt] Add %s to your collection"
|
||||
msgstr "[Trakt] Añadir %s a tu colección"
|
||||
|
||||
msgctxt "#70347"
|
||||
@@ -4684,8 +4688,8 @@ msgid "Genre: "
|
||||
msgstr "Género: "
|
||||
|
||||
msgctxt "#70500"
|
||||
msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")"
|
||||
msgstr "Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")"
|
||||
msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, \"http://i.imgur.com/mHgwcn3.png\")"
|
||||
msgstr "Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, \"http://i.imgur.com/mHgwcn3.png\")"
|
||||
|
||||
msgctxt "#70501"
|
||||
msgid "Search did not match (%s)"
|
||||
@@ -4928,7 +4932,7 @@ msgid "Movies by Genre"
|
||||
msgstr "Por generos"
|
||||
|
||||
msgctxt "#70561"
|
||||
msgid "Search Similar
|
||||
msgid "Search Similar"
|
||||
msgstr "Buscar Similares"
|
||||
|
||||
|
||||
|
||||
@@ -3245,6 +3245,10 @@ msgctxt "#70135"
|
||||
msgid "Custom Colours"
|
||||
msgstr "Colores Personalizados"
|
||||
|
||||
msgctxt "#70136"
|
||||
msgid "Tv Show"
|
||||
msgstr "Serie"
|
||||
|
||||
msgctxt "#70137"
|
||||
msgid "Movies"
|
||||
msgstr "Películas"
|
||||
@@ -4000,7 +4004,7 @@ msgid "Error in the user and/or password. Check your credentials"
|
||||
msgstr "Error en el usuario y/o contraseña. Comprueba tus credenciales"
|
||||
|
||||
msgctxt "#70331"
|
||||
msgid "Error during login. Check your credentials
|
||||
msgid "Error during login. Check your credentials"
|
||||
msgstr "Error durante el login. Comprueba tus credenciales"
|
||||
|
||||
msgctxt "#70332"
|
||||
@@ -4052,7 +4056,7 @@ msgid "[Trakt] Remove %s from your watchlist"
|
||||
msgstr "[Trakt] Eliminar %s de tu watchlist"
|
||||
|
||||
msgctxt "#70344"
|
||||
msgid "Add to %s your watchlist""
|
||||
msgid "Add to %s your watchlist"
|
||||
msgstr "[Trakt] Añadir %s a tu watchlist"
|
||||
|
||||
msgctxt "#70345"
|
||||
@@ -4060,7 +4064,7 @@ msgid "[Trakt] Remove %s from your collection"
|
||||
msgstr "[Trakt] Eliminar %s de tu colección"
|
||||
|
||||
msgctxt "#70346"
|
||||
msgid "[Trakt] Add %s to your collection
|
||||
msgid "[Trakt] Add %s to your collection"
|
||||
msgstr "[Trakt] Añadir %s a tu colección"
|
||||
|
||||
msgctxt "#70347"
|
||||
@@ -4684,8 +4688,8 @@ msgid "Genre: "
|
||||
msgstr "Género: "
|
||||
|
||||
msgctxt "#70500"
|
||||
msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")"
|
||||
msgstr "Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")"
|
||||
msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, \"http://i.imgur.com/mHgwcn3.png\")"
|
||||
msgstr "Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, \"http://i.imgur.com/mHgwcn3.png\")"
|
||||
|
||||
msgctxt "#70501"
|
||||
msgid "Search did not match (%s)"
|
||||
@@ -4928,7 +4932,7 @@ msgid "Movies by Genre"
|
||||
msgstr "Por generos"
|
||||
|
||||
msgctxt "#70561"
|
||||
msgid "Search Similar
|
||||
msgid "Search Similar"
|
||||
msgstr "Buscar Similares"
|
||||
|
||||
|
||||
|
||||
@@ -3245,6 +3245,10 @@ msgctxt "#70135"
|
||||
msgid "Custom Colours"
|
||||
msgstr "Colores Personalizados"
|
||||
|
||||
msgctxt "#70136"
|
||||
msgid "Tv Show"
|
||||
msgstr "Serie"
|
||||
|
||||
msgctxt "#70137"
|
||||
msgid "Movies"
|
||||
msgstr "Películas"
|
||||
@@ -4000,7 +4004,7 @@ msgid "Error in the user and/or password. Check your credentials"
|
||||
msgstr "Error en el usuario y/o contraseña. Comprueba tus credenciales"
|
||||
|
||||
msgctxt "#70331"
|
||||
msgid "Error during login. Check your credentials
|
||||
msgid "Error during login. Check your credentials"
|
||||
msgstr "Error durante el login. Comprueba tus credenciales"
|
||||
|
||||
msgctxt "#70332"
|
||||
@@ -4052,7 +4056,7 @@ msgid "[Trakt] Remove %s from your watchlist"
|
||||
msgstr "[Trakt] Eliminar %s de tu watchlist"
|
||||
|
||||
msgctxt "#70344"
|
||||
msgid "Add to %s your watchlist""
|
||||
msgid "Add to %s your watchlist"
|
||||
msgstr "[Trakt] Añadir %s a tu watchlist"
|
||||
|
||||
msgctxt "#70345"
|
||||
@@ -4060,7 +4064,7 @@ msgid "[Trakt] Remove %s from your collection"
|
||||
msgstr "[Trakt] Eliminar %s de tu colección"
|
||||
|
||||
msgctxt "#70346"
|
||||
msgid "[Trakt] Add %s to your collection
|
||||
msgid "[Trakt] Add %s to your collection"
|
||||
msgstr "[Trakt] Añadir %s a tu colección"
|
||||
|
||||
msgctxt "#70347"
|
||||
@@ -4684,8 +4688,8 @@ msgid "Genre: "
|
||||
msgstr "Género: "
|
||||
|
||||
msgctxt "#70500"
|
||||
msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")"
|
||||
msgstr "Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, "http://i.imgur.com/mHgwcn3.png")"
|
||||
msgid "Notification([COLOR red][B]Update Kodi to its latest version[/B][/COLOR], [COLOR skyblue]for best info[/COLOR],8000, \"http://i.imgur.com/mHgwcn3.png\")"
|
||||
msgstr "Notification([COLOR red][B]Actualiza Kodi a su última versión[/B][/COLOR], [COLOR skyblue]para mejor info[/COLOR],8000, \"http://i.imgur.com/mHgwcn3.png\")"
|
||||
|
||||
msgctxt "#70501"
|
||||
msgid "Search did not match (%s)"
|
||||
@@ -4928,7 +4932,7 @@ msgid "Movies by Genre"
|
||||
msgstr "Por generos"
|
||||
|
||||
msgctxt "#70561"
|
||||
msgid "Search Similar
|
||||
msgid "Search Similar"
|
||||
msgstr "Buscar Similares"
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ def get_video_url(page_url, user="", password="", video_password=""):
|
||||
video_urls = []
|
||||
videos = scrapertools.find_multiple_matches(unpacked, 'file:"([^"]+).*?label:"([^"]+)')
|
||||
for video, label in videos:
|
||||
video_urls.append([label + " [clipwatching]", video])
|
||||
logger.info("Url: %s" % videos)
|
||||
if ".jpg" not in video:
|
||||
video_urls.append([label + " [clipwatching]", video])
|
||||
video_urls.sort(key=lambda it: int(it[0].split("p ", 1)[0]))
|
||||
return video_urls
|
||||
|
||||
@@ -8,6 +8,8 @@ from platformcode import logger
|
||||
def test_video_exists(page_url):
|
||||
logger.info("(page_url='%s')" % page_url)
|
||||
response = httptools.downloadpage(page_url)
|
||||
if "Contenido rechazado" in response.data:
|
||||
return False, "[Dailymotion] El archivo no existe o ha sido borrado"
|
||||
if response.code == 404:
|
||||
return False, "[Dailymotion] El archivo no existe o ha sido borrado"
|
||||
return True, ""
|
||||
|
||||
@@ -17,6 +17,8 @@ def test_video_exists(page_url):
|
||||
data = httptools.downloadpage(page_url, headers={'referer': referer}).data
|
||||
if data == "File was deleted" or data == '':
|
||||
return False, "[powvideo] El video ha sido borrado"
|
||||
if 'function(p,a,c,k,e,' not in data:
|
||||
return False, "[powvideo] El video no está disponible"
|
||||
return True, ""
|
||||
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
{
|
||||
"active": true,
|
||||
"find_videos": {
|
||||
"ignore_urls": [],
|
||||
"patterns": [
|
||||
{
|
||||
"pattern": "streamix.cloud/(?:embed-|)([A-z0-9]+)",
|
||||
"url": "http://streamix.cloud/embed-\\1.html"
|
||||
}
|
||||
]
|
||||
},
|
||||
"free": true,
|
||||
"id": "streamixcloud",
|
||||
"name": "streamixcloud",
|
||||
"settings": [
|
||||
{
|
||||
"default": false,
|
||||
"enabled": true,
|
||||
"id": "black_list",
|
||||
"label": "@60654",
|
||||
"type": "bool",
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"default": 0,
|
||||
"enabled": true,
|
||||
"id": "favorites_servers_list",
|
||||
"label": "@60655",
|
||||
"lvalues": [
|
||||
"No",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5"
|
||||
],
|
||||
"type": "list",
|
||||
"visible": false
|
||||
}
|
||||
],
|
||||
"thumbnail": "http://i.imgur.com/NuD85Py.png?1"
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from lib import jsunpack
|
||||
from platformcode import logger
|
||||
|
||||
|
||||
def test_video_exists(page_url):
|
||||
logger.info("(page_url='%s')" % page_url)
|
||||
data = httptools.downloadpage(page_url).data
|
||||
if "Not Found" in data or "File was deleted" in data:
|
||||
return False, "[streamixcloud] El archivo no existe o ha sido borrado"
|
||||
if "Video is processing" in data:
|
||||
return False, "[streamixcloud] El video se está procesando, inténtelo mas tarde"
|
||||
return True, ""
|
||||
|
||||
|
||||
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
|
||||
logger.info("(page_url='%s')" % page_url)
|
||||
data = httptools.downloadpage(page_url).data
|
||||
video_urls = []
|
||||
patron = "<script type='text/javascript'>(eval\(function\(p,a,c,k,e,d.*?)</script"
|
||||
packed = scrapertools.find_single_match(data, patron)
|
||||
data = jsunpack.unpack(packed)
|
||||
media_url = scrapertools.find_multiple_matches(data, '\{file:"([^"]+)",')
|
||||
ext = scrapertools.get_filename_from_url(media_url[0])[-4:]
|
||||
for url in media_url:
|
||||
video_urls.append(["%s [streamixcloud]" % ext, url])
|
||||
return video_urls
|
||||
@@ -11,6 +11,8 @@ def test_video_exists(page_url):
|
||||
data = httptools.downloadpage(page_url).data
|
||||
if "Video not found..." in data:
|
||||
return False, config.get_localized_string(70292) % "Thevid"
|
||||
if "Video removed for inactivity..." in data:
|
||||
return False, "[Thevid] El video ha sido removido por inactividad"
|
||||
return True, ""
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user