Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
23ac80fbd6 | ||
|
|
9a5ddfbccb | ||
|
|
50bbf7d9aa | ||
|
|
2aab5ae0ff | ||
|
|
1bbc51a885 | ||
|
|
f95c3621d4 | ||
|
|
f05cbba109 | ||
|
|
16968f9204 |
@@ -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.3.4" provider-name="Alfa Addon">
|
<addon id="plugin.video.alfa" name="Alfa" version="2.3.5" 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,9 @@
|
|||||||
</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]
|
||||||
» allpeliculas » repelis
|
» seriesblanco » hdfull
|
||||||
» flashx » ultrapeliculashd
|
» gamovideo ¤ arreglos internos
|
||||||
» gvideo » streamixcloud
|
</news>
|
||||||
» vshare » anitoonstv
|
|
||||||
¤ arreglos internos
|
|
||||||
[COLOR green]Gracias a [COLOR yellow]Danielr460[/COLOR] por su colaboración en esta versión[/COLOR]
|
|
||||||
</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>
|
||||||
<description lang="en">Browse web pages using Kodi, you can easily watch their video content.</description>
|
<description lang="en">Browse web pages using Kodi, you can easily watch their video content.</description>
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ from platformcode import platformtools
|
|||||||
|
|
||||||
host = "http://hdfull.tv"
|
host = "http://hdfull.tv"
|
||||||
|
|
||||||
|
A_A = {'User-Agent':'Mozilla/5.0 AppLeWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 SaFAri/537.36'}
|
||||||
if config.get_setting('hdfulluser', 'hdfull'):
|
if config.get_setting('hdfulluser', 'hdfull'):
|
||||||
account = True
|
account = True
|
||||||
else:
|
else:
|
||||||
@@ -28,7 +29,7 @@ def settingCanal(item):
|
|||||||
def login():
|
def login():
|
||||||
logger.info()
|
logger.info()
|
||||||
|
|
||||||
data = agrupa_datos(httptools.downloadpage(host).data)
|
data = agrupa_datos(httptools.downloadpage(host, headers=A_A).data)
|
||||||
|
|
||||||
patron = "<input type='hidden' name='__csrf_magic' value=\"([^\"]+)\" />"
|
patron = "<input type='hidden' name='__csrf_magic' value=\"([^\"]+)\" />"
|
||||||
sid = scrapertools.find_single_match(data, patron)
|
sid = scrapertools.find_single_match(data, patron)
|
||||||
@@ -37,7 +38,7 @@ def login():
|
|||||||
'hdfull') + "&password=" + config.get_setting(
|
'hdfull') + "&password=" + config.get_setting(
|
||||||
'hdfullpassword', 'hdfull') + "&action=login"
|
'hdfullpassword', 'hdfull') + "&action=login"
|
||||||
|
|
||||||
httptools.downloadpage(host, post=post)
|
httptools.downloadpage(host, post=post, headers=A_A)
|
||||||
|
|
||||||
|
|
||||||
def mainlist(item):
|
def mainlist(item):
|
||||||
@@ -137,7 +138,7 @@ def menuseries(item):
|
|||||||
def search(item, texto):
|
def search(item, texto):
|
||||||
logger.info()
|
logger.info()
|
||||||
|
|
||||||
data = agrupa_datos(httptools.downloadpage(host).data)
|
data = agrupa_datos(httptools.downloadpage(host, headers=A_A).data)
|
||||||
|
|
||||||
sid = scrapertools.get_match(data, '.__csrf_magic. value="(sid:[^"]+)"')
|
sid = scrapertools.get_match(data, '.__csrf_magic. value="(sid:[^"]+)"')
|
||||||
item.extra = urllib.urlencode({'__csrf_magic': sid}) + '&menu=search&query=' + texto
|
item.extra = urllib.urlencode({'__csrf_magic': sid}) + '&menu=search&query=' + texto
|
||||||
@@ -173,7 +174,7 @@ def items_usuario(item):
|
|||||||
|
|
||||||
itemlist = []
|
itemlist = []
|
||||||
## Carga estados
|
## Carga estados
|
||||||
status = jsontools.load(httptools.downloadpage(host + '/a/status/all').data)
|
status = jsontools.load(httptools.downloadpage(host + '/a/status/all', headers=A_A).data)
|
||||||
|
|
||||||
## Fichas usuario
|
## Fichas usuario
|
||||||
url = item.url.split("?")[0]
|
url = item.url.split("?")[0]
|
||||||
@@ -187,7 +188,7 @@ def items_usuario(item):
|
|||||||
next_page = url + "?" + post
|
next_page = url + "?" + post
|
||||||
|
|
||||||
## Carga las fichas de usuario
|
## Carga las fichas de usuario
|
||||||
data = httptools.downloadpage(url, post=post).data
|
data = httptools.downloadpage(url, post=post, headers=A_A).data
|
||||||
fichas_usuario = jsontools.load(data)
|
fichas_usuario = jsontools.load(data)
|
||||||
|
|
||||||
for ficha in fichas_usuario:
|
for ficha in fichas_usuario:
|
||||||
@@ -255,7 +256,7 @@ def listado_series(item):
|
|||||||
|
|
||||||
itemlist = []
|
itemlist = []
|
||||||
|
|
||||||
data = agrupa_datos(httptools.downloadpage(item.url).data)
|
data = agrupa_datos(httptools.downloadpage(item.url, headers=A_A).data)
|
||||||
|
|
||||||
patron = '<div class="list-item"><a href="([^"]+)"[^>]+>([^<]+)</a></div>'
|
patron = '<div class="list-item"><a href="([^"]+)"[^>]+>([^<]+)</a></div>'
|
||||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||||
@@ -275,10 +276,10 @@ def fichas(item):
|
|||||||
textoidiomas=''
|
textoidiomas=''
|
||||||
infoLabels=dict()
|
infoLabels=dict()
|
||||||
## Carga estados
|
## Carga estados
|
||||||
status = jsontools.load(httptools.downloadpage(host + '/a/status/all').data)
|
status = jsontools.load(httptools.downloadpage(host + '/a/status/all', headers=A_A).data)
|
||||||
|
|
||||||
if item.title == "Buscar...":
|
if item.title == "Buscar...":
|
||||||
data = agrupa_datos(httptools.downloadpage(item.url, post=item.extra).data)
|
data = agrupa_datos(httptools.downloadpage(item.url, post=item.extra, headers=A_A).data)
|
||||||
s_p = scrapertools.get_match(data, '<h3 class="section-title">(.*?)<div id="footer-wrapper">').split(
|
s_p = scrapertools.get_match(data, '<h3 class="section-title">(.*?)<div id="footer-wrapper">').split(
|
||||||
'<h3 class="section-title">')
|
'<h3 class="section-title">')
|
||||||
|
|
||||||
@@ -290,7 +291,7 @@ def fichas(item):
|
|||||||
else:
|
else:
|
||||||
data = s_p[0] + s_p[1]
|
data = s_p[0] + s_p[1]
|
||||||
else:
|
else:
|
||||||
data = agrupa_datos(httptools.downloadpage(item.url).data)
|
data = agrupa_datos(httptools.downloadpage(item.url, headers=A_A).data)
|
||||||
|
|
||||||
data = re.sub(
|
data = re.sub(
|
||||||
r'<div class="span-6[^<]+<div class="item"[^<]+' + \
|
r'<div class="span-6[^<]+<div class="item"[^<]+' + \
|
||||||
@@ -362,11 +363,12 @@ def fichas(item):
|
|||||||
|
|
||||||
def episodios(item):
|
def episodios(item):
|
||||||
logger.info()
|
logger.info()
|
||||||
|
A_F = L_A
|
||||||
id = "0"
|
id = "0"
|
||||||
itemlist = []
|
itemlist = []
|
||||||
|
|
||||||
## Carga estados
|
## Carga estados
|
||||||
status = jsontools.load(httptools.downloadpage(host + '/a/status/all').data)
|
status = jsontools.load(httptools.downloadpage(host + '/a/status/all', headers=A_A).data)
|
||||||
|
|
||||||
url_targets = item.url
|
url_targets = item.url
|
||||||
|
|
||||||
@@ -376,7 +378,7 @@ def episodios(item):
|
|||||||
item.url = item.url.split("###")[0]
|
item.url = item.url.split("###")[0]
|
||||||
|
|
||||||
## Temporadas
|
## Temporadas
|
||||||
data = agrupa_datos(httptools.downloadpage(item.url).data)
|
data = agrupa_datos(httptools.downloadpage(item.url, headers=A_A).data)
|
||||||
|
|
||||||
if id == "0":
|
if id == "0":
|
||||||
## Se saca el id de la serie de la página cuando viene de listado_series
|
## Se saca el id de la serie de la página cuando viene de listado_series
|
||||||
@@ -410,7 +412,7 @@ def episodios(item):
|
|||||||
for scrapedurl in matches:
|
for scrapedurl in matches:
|
||||||
|
|
||||||
## Episodios
|
## Episodios
|
||||||
data = agrupa_datos(httptools.downloadpage(scrapedurl).data)
|
data = agrupa_datos(httptools.downloadpage(scrapedurl, headers=A_A).data)
|
||||||
|
|
||||||
sid = scrapertools.get_match(data, "<script>var sid = '(\d+)'")
|
sid = scrapertools.get_match(data, "<script>var sid = '(\d+)'")
|
||||||
ssid = scrapertools.get_match(scrapedurl, "temporada-(\d+)")
|
ssid = scrapertools.get_match(scrapedurl, "temporada-(\d+)")
|
||||||
@@ -418,7 +420,7 @@ def episodios(item):
|
|||||||
|
|
||||||
url = host + "/a/episodes"
|
url = host + "/a/episodes"
|
||||||
|
|
||||||
data = httptools.downloadpage(url, post=post).data
|
data = httptools.downloadpage(url, post=post, headers=A_A).data
|
||||||
|
|
||||||
episodes = jsontools.load(data)
|
episodes = jsontools.load(data)
|
||||||
|
|
||||||
@@ -480,10 +482,9 @@ def episodios(item):
|
|||||||
|
|
||||||
def novedades_episodios(item):
|
def novedades_episodios(item):
|
||||||
logger.info()
|
logger.info()
|
||||||
|
|
||||||
itemlist = []
|
itemlist = []
|
||||||
## Carga estados
|
## Carga estados
|
||||||
status = jsontools.load(httptools.downloadpage(host + '/a/status/all').data)
|
status = jsontools.load(httptools.downloadpage(host + '/a/status/all', headers=A_A).data)
|
||||||
|
|
||||||
## Episodios
|
## Episodios
|
||||||
url = item.url.split("?")[0]
|
url = item.url.split("?")[0]
|
||||||
@@ -495,7 +496,7 @@ def novedades_episodios(item):
|
|||||||
post = post.replace("start=" + old_start, "start=" + start)
|
post = post.replace("start=" + old_start, "start=" + start)
|
||||||
next_page = url + "?" + post
|
next_page = url + "?" + post
|
||||||
|
|
||||||
data = httptools.downloadpage(url, post=post).data
|
data = httptools.downloadpage(url, post=post, headers=A_A).data
|
||||||
|
|
||||||
episodes = jsontools.load(data)
|
episodes = jsontools.load(data)
|
||||||
|
|
||||||
@@ -567,7 +568,7 @@ def generos(item):
|
|||||||
|
|
||||||
itemlist = []
|
itemlist = []
|
||||||
|
|
||||||
data = agrupa_datos(httptools.downloadpage(item.url).data)
|
data = agrupa_datos(httptools.downloadpage(item.url, headers=A_A).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="http://hdfull.tv/peliculas"(.*?)</ul>')
|
||||||
|
|
||||||
patron = '<li><a href="([^"]+)">([^<]+)</a></li>'
|
patron = '<li><a href="([^"]+)">([^<]+)</a></li>'
|
||||||
@@ -586,10 +587,10 @@ def generos(item):
|
|||||||
|
|
||||||
def generos_series(item):
|
def generos_series(item):
|
||||||
logger.info()
|
logger.info()
|
||||||
|
A_F= L_A
|
||||||
itemlist = []
|
itemlist = []
|
||||||
|
|
||||||
data = agrupa_datos(httptools.downloadpage(item.url).data)
|
data = agrupa_datos(httptools.downloadpage(item.url, headers=A_A).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="http://hdfull.tv/series"(.*?)</ul>')
|
||||||
|
|
||||||
patron = '<li><a href="([^"]+)">([^<]+)</a></li>'
|
patron = '<li><a href="([^"]+)">([^<]+)</a></li>'
|
||||||
@@ -612,7 +613,7 @@ def findvideos(item):
|
|||||||
it1 = []
|
it1 = []
|
||||||
it2 = []
|
it2 = []
|
||||||
## Carga estados
|
## Carga estados
|
||||||
status = jsontools.load(httptools.downloadpage(host + '/a/status/all').data)
|
status = jsontools.load(httptools.downloadpage(host + '/a/status/all', headers=A_A).data)
|
||||||
url_targets = item.url
|
url_targets = item.url
|
||||||
|
|
||||||
## Vídeos
|
## Vídeos
|
||||||
@@ -641,10 +642,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("http://hdfull.tv/templates/hdfull/js/jquery.hdfull.view.min.js", headers=A_A).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("http://hdfull.tv/js/providers.js", headers=A_A).data
|
||||||
try:
|
try:
|
||||||
data_js = jhexdecode(data_js)
|
data_js = jhexdecode(data_js)
|
||||||
except:
|
except:
|
||||||
@@ -657,7 +658,7 @@ def findvideos(item):
|
|||||||
data_js = re.sub(r':(function.*?\})', r':"\g<1>"', decode_aa)
|
data_js = re.sub(r':(function.*?\})', r':"\g<1>"', decode_aa)
|
||||||
data_js = re.sub(r':(var[^,]+),', r':"\g<1>",', data_js)
|
data_js = re.sub(r':(var[^,]+),', r':"\g<1>",', data_js)
|
||||||
|
|
||||||
data = agrupa_datos(httptools.downloadpage(item.url).data)
|
data = agrupa_datos(httptools.downloadpage(item.url, headers=A_A).data)
|
||||||
data_obf = scrapertools.find_single_match(data, "var ad\s*=\s*'([^']+)'")
|
data_obf = scrapertools.find_single_match(data, "var ad\s*=\s*'([^']+)'")
|
||||||
data_decrypt = jsontools.load(obfs(base64.b64decode(data_obf), 126 - int(key)))
|
data_decrypt = jsontools.load(obfs(base64.b64decode(data_obf), 126 - int(key)))
|
||||||
|
|
||||||
@@ -722,7 +723,7 @@ def play(item):
|
|||||||
type = item.url.split("###")[1].split(";")[1]
|
type = item.url.split("###")[1].split(";")[1]
|
||||||
item.url = item.url.split("###")[0]
|
item.url = item.url.split("###")[0]
|
||||||
post = "target_id=%s&target_type=%s&target_status=1" % (id, type)
|
post = "target_id=%s&target_type=%s&target_status=1" % (id, type)
|
||||||
data = httptools.downloadpage(host + "/a/status", post=post).data
|
data = httptools.downloadpage(host + "/a/status", post=post, headers=A_A).data
|
||||||
|
|
||||||
devuelve = servertools.findvideosbyserver(item.url, item.server)
|
devuelve = servertools.findvideosbyserver(item.url, item.server)
|
||||||
if devuelve:
|
if devuelve:
|
||||||
@@ -785,7 +786,7 @@ def set_status(item):
|
|||||||
path = "/a/favorite"
|
path = "/a/favorite"
|
||||||
post = "like_id=" + id + "&like_type=" + type + "&like_comment=&vote=-1"
|
post = "like_id=" + id + "&like_type=" + type + "&like_comment=&vote=-1"
|
||||||
|
|
||||||
data = httptools.downloadpage(host + path, post=post).data
|
data = httptools.downloadpage(host + path, post=post, headers=A_A).data
|
||||||
|
|
||||||
title = "[COLOR green][B]OK[/B][/COLOR]"
|
title = "[COLOR green][B]OK[/B][/COLOR]"
|
||||||
|
|
||||||
|
|||||||
7
plugin.video.alfa/channels/help.json
Normal file
7
plugin.video.alfa/channels/help.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"id": "help",
|
||||||
|
"name": "Ayuda",
|
||||||
|
"active": false,
|
||||||
|
"adult": false,
|
||||||
|
"language": ["*"]
|
||||||
|
}
|
||||||
219
plugin.video.alfa/channels/help.py
Normal file
219
plugin.video.alfa/channels/help.py
Normal file
@@ -0,0 +1,219 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
import os
|
||||||
|
import xbmc
|
||||||
|
|
||||||
|
from core.item import Item
|
||||||
|
from platformcode import config, logger, platformtools
|
||||||
|
from channelselector import get_thumb
|
||||||
|
|
||||||
|
if config.is_xbmc():
|
||||||
|
|
||||||
|
import xbmcgui
|
||||||
|
|
||||||
|
class TextBox(xbmcgui.WindowXMLDialog):
|
||||||
|
""" Create a skinned textbox window """
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
self.title = kwargs.get('title')
|
||||||
|
self.text = kwargs.get('text')
|
||||||
|
self.doModal()
|
||||||
|
|
||||||
|
def onInit(self):
|
||||||
|
try:
|
||||||
|
self.getControl(5).setText(self.text)
|
||||||
|
self.getControl(1).setLabel(self.title)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
def onClick(self, control_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def onFocus(self, control_id):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def onAction(self, action):
|
||||||
|
# self.close()
|
||||||
|
if action in [xbmcgui.ACTION_PREVIOUS_MENU, xbmcgui.ACTION_NAV_BACK]:
|
||||||
|
self.close()
|
||||||
|
|
||||||
|
|
||||||
|
def mainlist(item):
|
||||||
|
logger.info()
|
||||||
|
itemlist = []
|
||||||
|
|
||||||
|
if config.is_xbmc():
|
||||||
|
itemlist.append(Item(channel=item.channel, action="", title="FAQ:",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - ¿Cómo reportar un error?",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False, extra="report_error"))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - ¿Se pueden activar/desactivar los canales?",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False, extra="onoff_canales"))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - ¿Es posible la sincronización automática con Trakt?",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False, extra="trakt_sync"))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - ¿Es posible mostrar todos los resultados juntos en el buscador global?",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False, extra="buscador_juntos"))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - Los enlaces tardan en aparecer.",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False, extra="tiempo_enlaces"))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - La búsqueda de contenido no se hace correctamente.",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False, extra="prob_busquedacont"))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - Algún canal no funciona correctamente.",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False, extra="canal_fallo"))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - Los enlaces Torrent no funcionan.",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False, extra="prob_torrent"))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - No se actualiza correctamente la videoteca.",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=True, extra="prob_bib"))
|
||||||
|
itemlist.append(Item(channel=item.channel, action="faq",
|
||||||
|
title=" - Enlaces de interés",
|
||||||
|
thumbnail=get_thumb("help.png"),
|
||||||
|
folder=False, extra=""))
|
||||||
|
|
||||||
|
return itemlist
|
||||||
|
|
||||||
|
|
||||||
|
def faq(item):
|
||||||
|
|
||||||
|
if item.extra == "onoff_canales":
|
||||||
|
respuesta = platformtools.dialog_yesno("Alfa",
|
||||||
|
"Esto se puede hacer en 'Configuración'>'Activar/Desactivar canales'. "
|
||||||
|
"Puedes activar/desactivar los canales uno por uno o todos a la vez. ",
|
||||||
|
"¿Deseas gestionar ahora los canales?")
|
||||||
|
if respuesta == 1:
|
||||||
|
from channels import setting
|
||||||
|
setting.conf_tools(Item(extra='channels_onoff'))
|
||||||
|
|
||||||
|
elif item.extra == "trakt_sync":
|
||||||
|
respuesta = platformtools.dialog_yesno("Alfa",
|
||||||
|
"Actualmente se puede activar la sincronización (silenciosa) "
|
||||||
|
"tras marcar como visto un episodio (esto se hace automáticamente). "
|
||||||
|
"Esta opción se puede activar en 'Configuración'>'Ajustes "
|
||||||
|
"de la videoteca'.",
|
||||||
|
"¿Deseas acceder a dichos ajustes?")
|
||||||
|
if respuesta == 1:
|
||||||
|
from channels import videolibrary
|
||||||
|
videolibrary.channel_config(Item(channel='videolibrary'))
|
||||||
|
|
||||||
|
elif item.extra == "tiempo_enlaces":
|
||||||
|
respuesta = platformtools.dialog_yesno("Alfa",
|
||||||
|
"Esto puede mejorarse limitando el número máximo de "
|
||||||
|
"enlaces o mostrandolos en una ventana emergente. "
|
||||||
|
"Estas opciones se encuentran en 'Configuración'>'Ajustes "
|
||||||
|
"de la videoteca'.",
|
||||||
|
"¿Deseas acceder a dichos ajustes?")
|
||||||
|
if respuesta == 1:
|
||||||
|
from channels import videolibrary
|
||||||
|
videolibrary.channel_config(Item(channel='videolibrary'))
|
||||||
|
|
||||||
|
elif item.extra == "prob_busquedacont":
|
||||||
|
title = "Alfa - FAQ - %s" % item.title[6:]
|
||||||
|
text = ("Puede que no hayas escrito la ruta de la librería correctamente en "
|
||||||
|
"'Configuración'>'Preferencias'.\n"
|
||||||
|
"La ruta específicada debe ser exactamente la misma de la 'fuente' "
|
||||||
|
"introducida en 'Archivos' de la videoteca de Kodi.\n"
|
||||||
|
"AVANZADO: Esta ruta también se encuentra en 'sources.xml'.\n"
|
||||||
|
"También puedes estar experimentando problemas por estar "
|
||||||
|
"usando algun fork de Kodi y rutas con 'special://'. "
|
||||||
|
"SPMC, por ejemplo, tiene problemas con esto, y no parece tener solución, "
|
||||||
|
"ya que es un problema ajeno a Alfa que existe desde hace mucho.\n"
|
||||||
|
"Puedes intentar subsanar estos problemas en 'Configuración'>'Ajustes de "
|
||||||
|
"la videoteca', cambiando el ajuste 'Realizar búsqueda de contenido en' "
|
||||||
|
"de 'La carpeta de cada serie' a 'Toda la videoteca'."
|
||||||
|
"También puedes acudir a 'http://alfa-addon.ga' en busca de ayuda.")
|
||||||
|
|
||||||
|
return TextBox("DialogTextViewer.xml", os.getcwd(), "Default", title=title, text=text)
|
||||||
|
|
||||||
|
elif item.extra == "canal_fallo":
|
||||||
|
title = "Alfa - FAQ - %s" % item.title[6:]
|
||||||
|
text = ("Puede ser que la página web del canal no funcione. "
|
||||||
|
"En caso de que funcione la página web puede que no seas el primero"
|
||||||
|
" en haberlo visto y que el canal este arreglado. "
|
||||||
|
"Puedes mirar en 'alfa-addon.ga' o en el "
|
||||||
|
"repositorio de GitHub (github.com/alfa-addon/addon). "
|
||||||
|
"Si no encuentras el canal arreglado puedes reportar un "
|
||||||
|
"problema en el foro.")
|
||||||
|
|
||||||
|
return TextBox("DialogTextViewer.xml", os.getcwd(), "Default", title=title, text=text)
|
||||||
|
|
||||||
|
elif item.extra == "prob_bib":
|
||||||
|
platformtools.dialog_ok("Alfa",
|
||||||
|
"Puede ser que hayas actualizado el plugin recientemente "
|
||||||
|
"y que las actualizaciones no se hayan aplicado del todo "
|
||||||
|
"bien. Puedes probar en 'Configuración'>'Otras herramientas', "
|
||||||
|
"comprobando los archivos *_data.json o "
|
||||||
|
"volviendo a añadir toda la videoteca.")
|
||||||
|
|
||||||
|
respuesta = platformtools.dialog_yesno("Alfa",
|
||||||
|
"¿Deseas acceder ahora a esa seccion?")
|
||||||
|
if respuesta == 1:
|
||||||
|
itemlist = []
|
||||||
|
from channels import setting
|
||||||
|
new_item = Item(channel="setting", action="submenu_tools", folder=True)
|
||||||
|
itemlist.extend(setting.submenu_tools(new_item))
|
||||||
|
return itemlist
|
||||||
|
|
||||||
|
elif item.extra == "prob_torrent":
|
||||||
|
title = "Alfa - FAQ - %s" % item.title[6:]
|
||||||
|
text = ("Puedes probar descargando el modulo 'libtorrent' de Kodi o "
|
||||||
|
"instalando algun addon como 'Quasar' o 'Torrenter', "
|
||||||
|
"los cuales apareceran entre las opciones de la ventana emergente "
|
||||||
|
"que aparece al pulsar sobre un enlace torrent. "
|
||||||
|
"'Torrenter' es más complejo pero también más completo "
|
||||||
|
"y siempre funciona.")
|
||||||
|
|
||||||
|
return TextBox("DialogTextViewer.xml", os.getcwd(), "Default", title=title, text=text)
|
||||||
|
|
||||||
|
elif item.extra == "buscador_juntos":
|
||||||
|
respuesta = platformtools.dialog_yesno("Alfa",
|
||||||
|
"Si. La opcion de mostrar los resultados juntos "
|
||||||
|
"o divididos por canales se encuentra en "
|
||||||
|
"'setting'>'Ajustes del buscador global'>"
|
||||||
|
"'Otros ajustes'.",
|
||||||
|
"¿Deseas acceder a ahora dichos ajustes?")
|
||||||
|
if respuesta == 1:
|
||||||
|
from channels import search
|
||||||
|
search.settings("")
|
||||||
|
|
||||||
|
elif item.extra == "report_error":
|
||||||
|
if config.get_platform(True)['num_version'] < 14:
|
||||||
|
log_name = "xbmc.log"
|
||||||
|
else:
|
||||||
|
log_name = "kodi.log"
|
||||||
|
ruta = xbmc.translatePath("special://logpath") + log_name
|
||||||
|
title = "Alfa - FAQ - %s" % item.title[6:]
|
||||||
|
text = ("Para reportar un problema en 'http://alfa-addon.ga' es necesario:\n"
|
||||||
|
" - Versión que usas de Alfa.\n"
|
||||||
|
" - Versión que usas de kodi, mediaserver, etc.\n"
|
||||||
|
" - Nombre del skin (en el caso que uses Kodi) y si se "
|
||||||
|
"te ha resuelto el problema al usar el skin por defecto.\n"
|
||||||
|
" - Descripción del problema y algún caso de prueba.\n"
|
||||||
|
" - Agregar el log en modo detallado, una vez hecho esto, "
|
||||||
|
"zipea el log y lo puedes adjuntar en un post.\n\n"
|
||||||
|
"El log se encuentra en: \n\n"
|
||||||
|
"%s" % ruta)
|
||||||
|
|
||||||
|
return TextBox("DialogTextViewer.xml", os.getcwd(), "Default", title=title, text=text)
|
||||||
|
|
||||||
|
else:
|
||||||
|
platformtools.dialog_ok("Alfa",
|
||||||
|
"Entérate de novedades, consejos u opciones que desconoces en Telegram: @alfa_addon.\n"
|
||||||
|
"Si tienes problemas o dudas, puedes acudir al Foro: http://alfa-addon.ga")
|
||||||
|
|
||||||
|
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
"id": "playmax",
|
"id": "playmax",
|
||||||
"name": "PlayMax",
|
"name": "PlayMax",
|
||||||
"language": ["cast", "lat"],
|
"language": ["cast", "lat"],
|
||||||
"active": true,
|
"active": false,
|
||||||
"adult": false,
|
"adult": false,
|
||||||
"thumbnail": "playmax.png",
|
"thumbnail": "playmax.png",
|
||||||
"banner": "playmax.png",
|
"banner": "playmax.png",
|
||||||
|
|||||||
@@ -102,11 +102,14 @@ def extract_series_from_data(item, data):
|
|||||||
else:
|
else:
|
||||||
action = "findvideos"
|
action = "findvideos"
|
||||||
|
|
||||||
context1=[filtertools.context(item, list_idiomas, CALIDADES), autoplay.context]
|
context = filtertools.context(item, list_idiomas, CALIDADES)
|
||||||
|
context2 = autoplay.context
|
||||||
|
context.extend(context2)
|
||||||
|
|
||||||
itemlist.append(item.clone(title=name, url=urlparse.urljoin(HOST, url),
|
itemlist.append(item.clone(title=name, url=urlparse.urljoin(HOST, url),
|
||||||
action=action, show=name,
|
action=action, show=name,
|
||||||
thumbnail=img,
|
thumbnail=img,
|
||||||
context=context1))
|
context=context))
|
||||||
|
|
||||||
more_pages = re.search('pagina=([0-9]+)">>>', data)
|
more_pages = re.search('pagina=([0-9]+)">>>', data)
|
||||||
if more_pages:
|
if more_pages:
|
||||||
|
|||||||
@@ -45,15 +45,15 @@ def getmainlist(view="thumb_"):
|
|||||||
context=[{"title": "Configurar Descargas", "channel": "setting", "config": "downloads",
|
context=[{"title": "Configurar Descargas", "channel": "setting", "config": "downloads",
|
||||||
"action": "channel_config"}]))
|
"action": "channel_config"}]))
|
||||||
|
|
||||||
thumb_configuracion = "setting_%s.png" % 0 # config.get_setting("plugin_updates_available")
|
thumb_setting = "setting_%s.png" % 0 # config.get_setting("plugin_updates_available")
|
||||||
|
|
||||||
itemlist.append(Item(title=config.get_localized_string(30100), channel="setting", action="mainlist",
|
itemlist.append(Item(title=config.get_localized_string(30100), channel="setting", action="mainlist",
|
||||||
thumbnail=get_thumb(thumb_configuracion, view),
|
thumbnail=get_thumb(thumb_setting, view),
|
||||||
category=config.get_localized_string(30100), viewmode="list"))
|
category=config.get_localized_string(30100), viewmode="list"))
|
||||||
# TODO REVISAR LA OPCION AYUDA
|
|
||||||
# itemlist.append(Item(title=config.get_localized_string(30104), channel="help", action="mainlist",
|
itemlist.append(Item(title=config.get_localized_string(30104), channel="help", action="mainlist",
|
||||||
# thumbnail=get_thumb("help.png", view),
|
thumbnail=get_thumb("help.png", view),
|
||||||
# category=config.get_localized_string(30104), viewmode="list"))
|
category=config.get_localized_string(30104), viewmode="list"))
|
||||||
return itemlist
|
return itemlist
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ from core import scrapertools
|
|||||||
from lib import jsunpack
|
from lib import jsunpack
|
||||||
from platformcode import logger
|
from platformcode import logger
|
||||||
|
|
||||||
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:57.0) Gecko/20100101 ' \
|
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:58.0) Gecko/20100101 ' \
|
||||||
'Firefox/57.0'}
|
'Firefox/58.0'}
|
||||||
|
|
||||||
|
|
||||||
def test_video_exists(page_url):
|
def test_video_exists(page_url):
|
||||||
|
|||||||
Reference in New Issue
Block a user