47 Commits

Author SHA1 Message Date
alfa-addon
23ac80fbd6 v2.3.5 2017-11-08 21:38:26 -05:00
alfa-addon
9a5ddfbccb fixed 2017-11-08 21:38:12 -05:00
alfa-addon
50bbf7d9aa good bye playmax 2017-11-08 21:37:57 -05:00
Alfa
2aab5ae0ff Merge pull request #161 from Intel11/patch-1
Actualizado
2017-11-09 02:36:18 +01:00
Intel1
1bbc51a885 gamovideo: fix 2017-11-08 09:02:49 -05:00
Intel1
f95c3621d4 Ayuda: actualizado 2017-11-08 08:30:30 -05:00
Intel1
f05cbba109 Update channelselector.py 2017-11-08 08:29:26 -05:00
Intel1
16968f9204 seriesblanco: actualizado 2017-11-08 08:22:17 -05:00
alfa-addon
8985f3ebdd v2.3.4 2017-11-06 19:04:42 -05:00
Alfa
d60c246bbb Merge pull request #155 from Intel11/patch-3
Actualizados
2017-11-07 00:09:00 +01:00
Alfa
3b29fe47bb Merge pull request #156 from danielr460/master
Arreglos menores
2017-11-07 00:08:47 +01:00
Alfa
3093f72ce5 Merge pull request #159 from Alfa-beto/Fixes
Corregido error con extras
2017-11-07 00:08:33 +01:00
Unknown
55dcf3f091 Corregido error con extras 2017-11-05 18:21:26 -03:00
Intel1
2924b6958d Update allpeliculas.py 2017-11-04 15:01:27 -05:00
Intel1
927310c7c6 flashx: actualizado 2017-11-04 14:58:29 -05:00
danielr460
0c25891790 fix servers 2017-11-04 00:06:45 -05:00
danielr460
212c06057f Arreglos menores 2017-11-03 22:04:28 -05:00
Intel1
9c3b3e9256 allpeliculas: paginador para colecciones 2017-11-03 17:54:51 -05:00
Intel1
6dc853b41e repelis: fix categoria 2017-11-03 15:49:52 -05:00
Intel1
7afd09dfa9 streamixcloud: fix 2017-11-03 11:08:16 -05:00
Intel1
6855508eaa Update ultrapeliculashd.py 2017-11-03 10:21:18 -05:00
Intel1
2925c29671 Update ultrapeliculashd.json 2017-11-03 10:20:47 -05:00
Intel1
506e68e8a3 vshare: cambiado el orden de resoluciones 2017-11-03 10:17:12 -05:00
Intel1
9cc30152f8 vshare: actualizado patron 2017-11-03 10:15:27 -05:00
Intel1
267c9d8031 gvideo: fix 2017-11-03 10:07:46 -05:00
Intel1
bd68b83b6c flashx: fix 2017-11-01 06:47:51 -05:00
Unknown
c1f8039672 Merge remote-tracking branch 'alfa-addon/master' into Fixes 2017-11-01 08:37:33 -03:00
alfa-addon
99dfa2be58 v2.3.3 2017-10-31 21:09:17 -04:00
Alfa
39e711b3cb Merge pull request #150 from danielr460/master
Arreglos en canales
2017-11-01 01:40:53 +01:00
Alfa
2d8d2b3baf Merge pull request #151 from Intel11/patch-2
Actualizados
2017-11-01 01:40:36 +01:00
Alfa
82d126c3e1 Merge pull request #152 from Alfa-beto/Fixes
Correcciones
2017-11-01 01:40:20 +01:00
Alfa
8d41fd1c64 Merge pull request #153 from danielr460/patch-1
Otros arreglos
2017-11-01 01:40:05 +01:00
Unknown
a8c2f409eb Correcciones a canales 2017-10-31 14:57:55 -03:00
Daniel Rincón Rodríguez
7b2a3c2181 Update mundiseries.json 2017-10-31 07:19:55 -05:00
Daniel Rincón Rodríguez
9e6729f0be Update danimados.json 2017-10-31 07:17:04 -05:00
Unknown
241e644dcf Correcciones 2017-10-30 15:02:57 -03:00
Intel1
ae318721ab Add files via upload 2017-10-30 10:34:08 -05:00
Intel1
8328610ffa Delete bajui2.json 2017-10-30 10:32:41 -05:00
Intel1
19101b5310 Delete bajui2.py 2017-10-30 10:32:27 -05:00
Intel1
22827e0f7e Update animemovil.json 2017-10-30 10:28:29 -05:00
Unknown
1747c9795d Merge remote-tracking branch 'alfa-addon/master' into Fixes 2017-10-30 10:14:07 -03:00
Unknown
f3effe9a7f Corregidas series en pelisplus 2017-10-30 10:13:40 -03:00
Intel1
0621b1fa91 gamovideo: fix 2017-10-30 04:16:22 -05:00
Intel1
16473764c9 flashx: fix 2017-10-30 04:15:00 -05:00
danielr460
6b1727a0b8 Arreglado serieslan 2017-10-29 19:50:42 -05:00
Intel1
11fceffd14 bajui2: fix 2017-10-29 10:00:39 -05:00
danielr460
3a49b8a442 Función Play eliminaba info de la serie. Corregido 2017-10-29 08:54:27 -05:00
33 changed files with 466 additions and 491 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<addon id="plugin.video.alfa" name="Alfa" version="2.3.2" provider-name="Alfa Addon">
<addon id="plugin.video.alfa" name="Alfa" version="2.3.5" provider-name="Alfa Addon">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.libtorrent" optional="true"/>
@@ -19,16 +19,9 @@
</assets>
<news>[B]Estos son los cambios para esta versión:[/B]
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
» cinetux » animemovil
» anitoonstv » cartoonlatino
» seriesblanco » damimados
» mundiseries » serieslan
» cinetux » animemovil
» plusdede » pelisplus
» rapidvideo » flashx
¤ arreglos internos
[COLOR green]Gracias a [COLOR yellow]Danielr460[/COLOR] por su colaboración en esta versión[/COLOR]
</news>
» seriesblanco » hdfull
» gamovideo ¤ arreglos internos
</news>
<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>
<description lang="en">Browse web pages using Kodi, you can easily watch their video content.</description>

View File

@@ -1,7 +1,5 @@
# -*- coding: utf-8 -*-
import urlparse
from core import httptools
from core import jsontools
from core import scrapertools
@@ -59,6 +57,7 @@ def colecciones(item):
title = scrapedtitle.capitalize() + " (" + scrapedcantidad + ")"
itemlist.append(Item(channel = item.channel,
action = "listado_colecciones",
page = 1,
thumbnail = host + scrapedthumbnail,
title = title,
url = host + scrapedurl
@@ -71,7 +70,7 @@ def listado_colecciones(item):
itemlist = []
data = httptools.downloadpage(item.url).data
data_url = scrapertools.find_single_match(data, "data_url: '([^']+)")
post = "page=1"
post = "page=%s" %item.page
data = httptools.downloadpage(host + data_url, post=post).data
patron = 'a href="(/peli[^"]+).*?'
patron += 'src="([^"]+).*?'
@@ -88,6 +87,16 @@ def listado_colecciones(item):
url = host + scrapedurl
))
tmdb.set_infoLabels(itemlist)
item.page += 1
post = "page=%s" %item.page
data = httptools.downloadpage(host + data_url, post=post).data
if len(data) > 50:
itemlist.append(Item(channel = item.channel,
action = "listado_colecciones",
title = "Pagina siguiente>>",
page = item.page,
url = item.url
))
return itemlist
@@ -159,6 +168,7 @@ def lista(item):
params = jsontools.dump(dict_param)
data = httptools.downloadpage(item.url, post=params).data
data = data.replace("<mark>","").replace("<\/mark>","")
dict_data = jsontools.load(data)
for it in dict_data["items"]:
@@ -167,7 +177,7 @@ def lista(item):
rating = it["imdb"]
year = it["year"]
url = host + "pelicula/" + it["slug"]
thumb = urlparse.urljoin(host, it["image"])
thumb = host + it["image"]
item.infoLabels['year'] = year
itemlist.append(item.clone(action="findvideos", title=title, fulltitle=title, url=url, thumbnail=thumb,
plot=plot, context=["buscar_trailer"], contentTitle=title, contentType="movie"))

View File

@@ -3,7 +3,7 @@
"name": "Animemovil",
"active": true,
"adult": false,
"language": ["cat", "lat"],
"language": ["cast", "lat"],
"thumbnail": "https://s1.postimg.org/92ji7stii7/animemovil1.png",
"banner": "",
"categories": [

View File

@@ -148,15 +148,21 @@ def findvideos(item):
itemla = scrapertools.find_multiple_matches(data_vid, '<div class="serv">.+?-(.+?)-(.+?)<\/div><.+? src="(.+?)"')
for server, quality, url in itemla:
if "Calidad Alta" in quality:
quality = quality.replace("Calidad Alta", "HQ")
quality = "HQ"
if "HQ" in quality:
quality = "HD"
if " Calidad media - Carga mas rapido" in quality:
quality = quality.replace(" Calidad media - Carga mas rapido", "360p")
quality = "360p"
server = server.lower().strip()
if "ok" == server:
if "ok" in server:
server = 'okru'
if "rapid" in server:
server = 'rapidvideo'
if "netu" in server:
server = 'netutv'
itemlist.append(item.clone(url=url, action="play", server=server, contentQuality=quality,
thumbnail=scrapedthumbnail, plot=scrapedplot,
title="Enlace encontrado en %s: [%s]" % (server.capitalize(), quality)))
title="Enlace encontrado en: %s [%s]" % (server.capitalize(), quality)))
autoplay.start(itemlist, item)
return itemlist

View File

@@ -1,6 +1,6 @@
{
"id": "bajui2",
"name": "Bajui2",
"id": "bajui",
"name": "Bajui",
"active": true,
"adult": false,
"language": ["cast"],

View File

@@ -13,7 +13,7 @@ def mainlist(item):
logger.info()
itemlist = []
itemlist.append(Item(channel=item.channel, title="Películas", action="menupeliculas",
url="http://www.bajui2.com/descargas/categoria/2/peliculas",
url="http://www.bajui.org/descargas/categoria/2/peliculas",
fanart=item.fanart))
itemlist.append(Item(channel=item.channel, title="Series", action="menuseries",
fanart=item.fanart))
@@ -51,13 +51,13 @@ def menuseries(item):
logger.info()
itemlist = []
itemlist.append(Item(channel=item.channel, title="Series - Novedades", action="peliculas",
url="http://www.bajui2.com/descargas/categoria/3/series",
url="http://www.bajui.org/descargas/categoria/3/series",
fanart=item.fanart, viewmode="movie_with_plot"))
itemlist.append(Item(channel=item.channel, title="Series - A-Z", action="peliculas",
url="http://www.bajui2.com/descargas/categoria/3/series/orden:nombre",
url="http://www.bajui.org/descargas/categoria/3/series/orden:nombre",
fanart=item.fanart, viewmode="movie_with_plot"))
itemlist.append(Item(channel=item.channel, title="Series - HD", action="peliculas",
url="http://www.bajui2.com/descargas/subcategoria/11/hd/orden:nombre",
url="http://www.bajui.org/descargas/subcategoria/11/hd/orden:nombre",
fanart=item.fanart, viewmode="movie_with_plot"))
itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url="",
fanart=item.fanart))
@@ -68,10 +68,10 @@ def menudocumentales(item):
logger.info()
itemlist = []
itemlist.append(Item(channel=item.channel, title="Documentales - Novedades", action="peliculas",
url="http://www.bajui2.com/descargas/categoria/7/docus-y-tv",
url="http://www.bajui.org/descargas/categoria/7/docus-y-tv",
fanart=item.fanart, viewmode="movie_with_plot"))
itemlist.append(Item(channel=item.channel, title="Documentales - A-Z", action="peliculas",
url="http://www.bajui2.com/descargas/categoria/7/docus-y-tv/orden:nombre",
url="http://www.bajui.org/descargas/categoria/7/docus-y-tv/orden:nombre",
fanart=item.fanart, viewmode="movie_with_plot"))
itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url="",
fanart=item.fanart))
@@ -86,7 +86,7 @@ def search(item, texto, categoria=""):
texto = texto.replace(" ", "+")
logger.info("categoria: " + categoria + " url: " + url)
try:
item.url = "http://www.bajui2.com/descargas/busqueda/%s"
item.url = "http://www.bajui.org/descargas/busqueda/%s"
item.url = item.url % texto
itemlist.extend(peliculas(item))
return itemlist
@@ -118,7 +118,7 @@ def peliculas(item, paginacion=True):
scrapedtitle = title
scrapedplot = clean_plot(plot)
scrapedurl = urlparse.urljoin(item.url, url)
scrapedthumbnail = urlparse.urljoin("http://www.bajui2.com/", thumbnail.replace("_m.jpg", "_g.jpg"))
scrapedthumbnail = urlparse.urljoin("http://www.bajui.org/", thumbnail.replace("_m.jpg", "_g.jpg"))
logger.debug("title=[" + scrapedtitle + "], url=[" + scrapedurl + "], thumbnail=[" + scrapedthumbnail + "]")
# Añade al listado de XBMC
@@ -133,7 +133,7 @@ def peliculas(item, paginacion=True):
scrapertools.printMatches(matches)
if len(matches) > 0:
scrapedurl = urlparse.urljoin("http://www.bajui2.com/", matches[0])
scrapedurl = urlparse.urljoin("http://www.bajui.org/", matches[0])
pagitem = Item(channel=item.channel, action="peliculas", title=">> Página siguiente", url=scrapedurl,
fanart=item.fanart, viewmode="movie_with_plot")
if not paginacion:
@@ -197,7 +197,7 @@ def enlaces(item):
try:
item.thumbnail = scrapertools.get_match(data, '<div class="ficha-imagen"[^<]+<img src="([^"]+)"')
item.thumbnail = urlparse.urljoin("http://www.bajui2.com/", item.thumbnail)
item.thumbnail = urlparse.urljoin("http://www.bajui.org/", item.thumbnail)
except:
pass
@@ -234,8 +234,8 @@ def enlaces(item):
lista_servidores = lista_servidores[:-2]
scrapedthumbnail = item.thumbnail
# http://www.bajui2.com/ajax/mostrar-enlaces.php?id=330582&code=124767d31bfbf14c3861
scrapedurl = "http://www.bajui2.com/ajax/mostrar-enlaces.php?id=" + id + "&code=" + id2
# http://www.bajui.org/ajax/mostrar-enlaces.php?id=330582&code=124767d31bfbf14c3861
scrapedurl = "http://www.bajui.org/ajax/mostrar-enlaces.php?id=" + id + "&code=" + id2
scrapedplot = item.plot
scrapedtitle = "Enlaces de " + usuario + " (" + fecha + ") (" + lista_servidores + ")"

View File

@@ -6,13 +6,6 @@
"language": ["lat"],
"thumbnail": "https://imgur.com/kU5Lx1S.png",
"banner": "https://imgur.com/xG5xqBq.png",
"version": 1,
"changes": [
{
"date": "24/10/2017",
"description": "Primera version del canal"
}
],
"categories": [
"tvshow"
]

View File

@@ -302,7 +302,7 @@ def epienlaces(item):
def findvideos(item):
logger.info()
if (item.extra and item.extra != "findvideos") or item.path:
if item.contentSeason!='':
return epienlaces(item)
itemlist = []

View File

@@ -15,6 +15,7 @@ from platformcode import platformtools
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'):
account = True
else:
@@ -28,7 +29,7 @@ def settingCanal(item):
def login():
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=\"([^\"]+)\" />"
sid = scrapertools.find_single_match(data, patron)
@@ -37,7 +38,7 @@ def login():
'hdfull') + "&password=" + config.get_setting(
'hdfullpassword', 'hdfull') + "&action=login"
httptools.downloadpage(host, post=post)
httptools.downloadpage(host, post=post, headers=A_A)
def mainlist(item):
@@ -137,7 +138,7 @@ def menuseries(item):
def search(item, texto):
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:[^"]+)"')
item.extra = urllib.urlencode({'__csrf_magic': sid}) + '&menu=search&query=' + texto
@@ -173,7 +174,7 @@ def items_usuario(item):
itemlist = []
## 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
url = item.url.split("?")[0]
@@ -187,7 +188,7 @@ def items_usuario(item):
next_page = url + "?" + post
## 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)
for ficha in fichas_usuario:
@@ -255,7 +256,7 @@ def listado_series(item):
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>'
matches = re.compile(patron, re.DOTALL).findall(data)
@@ -275,10 +276,10 @@ def fichas(item):
textoidiomas=''
infoLabels=dict()
## 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...":
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(
'<h3 class="section-title">')
@@ -290,7 +291,7 @@ def fichas(item):
else:
data = s_p[0] + s_p[1]
else:
data = agrupa_datos(httptools.downloadpage(item.url).data)
data = agrupa_datos(httptools.downloadpage(item.url, headers=A_A).data)
data = re.sub(
r'<div class="span-6[^<]+<div class="item"[^<]+' + \
@@ -362,11 +363,12 @@ def fichas(item):
def episodios(item):
logger.info()
A_F = L_A
id = "0"
itemlist = []
## 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
@@ -376,7 +378,7 @@ def episodios(item):
item.url = item.url.split("###")[0]
## Temporadas
data = agrupa_datos(httptools.downloadpage(item.url).data)
data = agrupa_datos(httptools.downloadpage(item.url, headers=A_A).data)
if id == "0":
## 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:
## 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+)'")
ssid = scrapertools.get_match(scrapedurl, "temporada-(\d+)")
@@ -418,7 +420,7 @@ def episodios(item):
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)
@@ -480,10 +482,9 @@ def episodios(item):
def novedades_episodios(item):
logger.info()
itemlist = []
## 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
url = item.url.split("?")[0]
@@ -495,7 +496,7 @@ def novedades_episodios(item):
post = post.replace("start=" + old_start, "start=" + start)
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)
@@ -567,7 +568,7 @@ def generos(item):
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>')
patron = '<li><a href="([^"]+)">([^<]+)</a></li>'
@@ -586,10 +587,10 @@ def generos(item):
def generos_series(item):
logger.info()
A_F= L_A
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>')
patron = '<li><a href="([^"]+)">([^<]+)</a></li>'
@@ -612,7 +613,7 @@ def findvideos(item):
it1 = []
it2 = []
## 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
## 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,
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\((.*?)\)')
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:
data_js = jhexdecode(data_js)
except:
@@ -657,7 +658,7 @@ def findvideos(item):
data_js = re.sub(r':(function.*?\})', r':"\g<1>"', decode_aa)
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_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]
item.url = item.url.split("###")[0]
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)
if devuelve:
@@ -785,7 +786,7 @@ def set_status(item):
path = "/a/favorite"
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]"

View File

@@ -0,0 +1,7 @@
{
"id": "help",
"name": "Ayuda",
"active": false,
"adult": false,
"language": ["*"]
}

View 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")

View File

@@ -319,61 +319,34 @@ def findvideos(item):
duplicados = []
data = get_source(item.url)
src = data
patron = 'id=(?:div|player)(\d+)>.*?<iframe src=.*? data-lazy-src=(.*?) marginheight'
patron = 'id=(?:div|player)(\d+)>.*?data-lazy-src=(.*?) scrolling'
matches = re.compile(patron, re.DOTALL).findall(data)
for option, videoitem in matches:
lang = scrapertools.find_single_match(src,
'<a href=#(?:div|player)%s.*?>.*?(Doblado|Subtitulado)<\/a>' % option)
'<a href=#(?:div|player)%s.*?>.*?(.*?)<\/a>' % option)
if 'audio ' in lang.lower():
lang=lang.lower().replace('audio ','')
lang=lang.capitalize()
data = get_source(videoitem)
if 'play' in videoitem:
url = scrapertools.find_single_match(data, '<span>Ver Online<.*?<li><a href=(.*?)><span class=icon>')
else:
url = scrapertools.find_single_match(data, '<iframe src=(.*?) scrolling=')
video_urls = scrapertools.find_multiple_matches(data, '<li><a href=(.*?)><span')
for video in video_urls:
video_data = get_source(video)
if not 'fastplay' in video:
new_url= scrapertools.find_single_match(video_data,'<li><a href=(.*?srt)><span')
data_final = get_source(new_url)
else:
data_final=video_data
url = scrapertools.find_single_match(data_final,'iframe src=(.*?) scrolling')
quality = item.quality
server = servertools.get_server_from_url(url)
title = item.contentTitle + ' [%s] [%s]' % (server, lang)
if item.quality != '':
title = item.contentTitle + ' [%s] [%s] [%s]' % (server, quality, lang)
url_list.append([url, lang])
for video_url in url_list:
language = video_url[1]
if 'jw.miradetodo' in video_url[0]:
data = get_source('http:' + video_url[0])
patron = 'label:.*?(.*?),.*?file:.*?(.*?)&app.*?\}'
matches = re.compile(patron, re.DOTALL).findall(data)
for quality, scrapedurl in matches:
quality = quality
title = item.contentTitle + ' (%s) %s' % (quality, language)
server = 'directo'
url = scrapedurl
url = url.replace('\/', '/')
subtitle = scrapertools.find_single_match(data, "tracks: \[\{file: '.*?linksub=(.*?)',label")
if url not in duplicados:
itemlist.append(item.clone(title=title,
action='play',
url=url,
quality=quality,
server=server,
subtitle=subtitle,
language=language
))
duplicados.append(url)
elif video_url != '':
itemlist.extend(servertools.find_video_items(data=video_url[0]))
import os
for videoitem in itemlist:
if videoitem.server != 'directo':
quality = item.quality
title = item.contentTitle + ' (%s) %s' % (videoitem.server, language)
if item.quality != '':
title = item.contentTitle + ' (%s) %s' % (quality, language)
videoitem.title = title
videoitem.channel = item.channel
videoitem.thumbnail = os.path.join(config.get_runtime_path(), "resources", "media", "servers",
"server_%s.png" % videoitem.server)
videoitem.quality = item.quality
if url!='':
itemlist.append(item.clone(title=title, url=url, action='play', server=server, language=lang))
if item.infoLabels['mediatype'] == 'movie':
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos':

View File

@@ -6,13 +6,6 @@
"language": ["cast", "lat"],
"thumbnail": "https://imgur.com/GdGMFi1.png",
"banner": "https://imgur.com/1bDbYY1.png",
"version": 1,
"changes": [
{
"date": "23/10/2017",
"description": "Primera versión del canal"
}
],
"categories": [
"tvshow"
]

View File

@@ -1,30 +0,0 @@
{
"id": "pelisencasa",
"name": "PelisEnCasa",
"active": true,
"adult": false,
"language": ["lat"],
"thumbnail": "https://s14.postimg.org/iqiq0bxn5/pelisencasa.png",
"banner": "https://s18.postimg.org/j775ehbg9/pelisencasa_banner.png",
"categories": [
"movie"
],
"settings": [
{
"id": "include_in_newest_peliculas",
"type": "bool",
"label": "Incluir en Novedades - Peliculas",
"default": true,
"enabled": true,
"visible": true
},
{
"id": "include_in_newest_infantiles",
"type": "bool",
"label": "Incluir en Novedades - Infantiles",
"default": true,
"enabled": true,
"visible": true
}
]
}

View File

@@ -1,217 +0,0 @@
# -*- coding: utf-8 -*-
import re
from core import httptools
from core import scrapertools
from core import tmdb
from core.item import Item
from lib import jsunpack
from platformcode import config, logger
host = 'http://pelisencasa.net'
tgenero = {"Comedia": "https://s7.postimg.org/ne9g9zgwb/comedia.png",
"Suspense": "https://s13.postimg.org/wmw6vl1cn/suspenso.png",
"Drama": "https://s16.postimg.org/94sia332d/drama.png",
"Acción": "https://s3.postimg.org/y6o9puflv/accion.png",
"Aventura": "https://s10.postimg.org/6su40czih/aventura.png",
"Romance": "https://s15.postimg.org/fb5j8cl63/romance.png",
"Animación": "https://s13.postimg.org/5on877l87/animacion.png",
"Ciencia ficción": "https://s9.postimg.org/diu70s7j3/cienciaficcion.png",
"Terror": "https://s7.postimg.org/yi0gij3gb/terror.png",
"Documental": "https://s16.postimg.org/7xjj4bmol/documental.png",
"Música": "https://s29.postimg.org/bbxmdh9c7/musical.png",
"Western": "https://s23.postimg.org/lzyfbjzhn/western.png",
"Fantasía": "https://s13.postimg.org/65ylohgvb/fantasia.png",
"Guerra": "https://s23.postimg.org/71itp9hcr/belica.png",
"Misterio": "https://s1.postimg.org/w7fdgf2vj/misterio.png",
"Crimen": "https://s4.postimg.org/6z27zhirx/crimen.png",
"Historia": "https://s15.postimg.org/fmc050h1n/historia.png",
"Familia": "https://s7.postimg.org/6s7vdhqrf/familiar.png"}
tletras = {'#': 'https://s32.postimg.org/drojt686d/image.png',
'a': 'https://s32.postimg.org/llp5ekfz9/image.png',
'b': 'https://s32.postimg.org/y1qgm1yp1/image.png',
'c': 'https://s32.postimg.org/vlon87gmd/image.png',
'd': 'https://s32.postimg.org/3zlvnix9h/image.png',
'e': 'https://s32.postimg.org/bgv32qmsl/image.png',
'f': 'https://s32.postimg.org/y6u7vq605/image.png',
'g': 'https://s32.postimg.org/9237ib6jp/image.png',
'h': 'https://s32.postimg.org/812yt6pk5/image.png',
'i': 'https://s32.postimg.org/6nbbxvqat/image.png',
'j': 'https://s32.postimg.org/axpztgvdx/image.png',
'k': 'https://s32.postimg.org/976yrzdut/image.png',
'l': 'https://s32.postimg.org/fmal2e9yd/image.png',
'm': 'https://s32.postimg.org/m19lz2go5/image.png',
'n': 'https://s32.postimg.org/b2ycgvs2t/image.png',
'o': 'https://s32.postimg.org/c6igsucpx/image.png',
'p': 'https://s32.postimg.org/jnro82291/image.png',
'q': 'https://s32.postimg.org/ve5lpfv1h/image.png',
'r': 'https://s32.postimg.org/nmovqvqw5/image.png',
's': 'https://s32.postimg.org/zd2t89jol/image.png',
't': 'https://s32.postimg.org/wk9lo8jc5/image.png',
'u': 'https://s32.postimg.org/w8s5bh2w5/image.png',
'v': 'https://s32.postimg.org/e7dlrey91/image.png',
'w': 'https://s32.postimg.org/fnp49k15x/image.png',
'x': 'https://s32.postimg.org/dkep1w1d1/image.png',
'y': 'https://s32.postimg.org/um7j3zg85/image.png',
'z': 'https://s32.postimg.org/jb4vfm9d1/image.png'}
def mainlist(item):
logger.info()
itemlist = []
itemlist.append(item.clone(title="Todas", action="lista", thumbnail='https://s18.postimg.org/fwvaeo6qh/todas.png',
fanart='https://s18.postimg.org/fwvaeo6qh/todas.png', url=host))
itemlist.append(
item.clone(title="Generos", action="seccion", thumbnail='https://s3.postimg.org/5s9jg2wtf/generos.png',
fanart='https://s3.postimg.org/5s9jg2wtf/generos.png', url=host, extra='generos'))
itemlist.append(
item.clone(title="Alfabetico", action="seccion", thumbnail='https://s17.postimg.org/fwi1y99en/a-z.png',
fanart='https://s17.postimg.org/fwi1y99en/a-z.png', url=host, extra='letras'))
itemlist.append(item.clone(title="Buscar", action="search", url=host + '/?s=',
thumbnail='https://s30.postimg.org/pei7txpa9/buscar.png',
fanart='https://s30.postimg.org/pei7txpa9/buscar.png'))
return itemlist
def lista(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
if item.extra != 'letras':
patron = '<li class="TPostMv">.*?<a href="(.*?)"><div class="Image">.*?src="(.*?)\?resize=.*?".*?class="Title">(.*?)<\/h2>.*?'
patron += '<span class="Year">(.*?)<\/span>.*?<span class="Qlty">(.*?)<\/span><\/p><div class="Description"><p>(.*?)<\/p>'
else:
patron = '<td class="MvTbImg"> <a href="(.*?)".*?src="(.*?)\?resize=.*?".*?<strong>(.*?)<\/strong> <\/a><\/td><td>(.*?)<\/td><td>.*?'
patron += 'class="Qlty">(.*?)<\/span><\/p><\/td><td>(.*?)<\/td><td>'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear, calidad, scrapedplot in matches:
url = scrapedurl
thumbnail = scrapedthumbnail
plot = scrapedplot
contentTitle = scrapedtitle
title = contentTitle + ' (' + calidad + ')'
year = scrapedyear
fanart = ''
itemlist.append(
Item(channel=item.channel, action='findvideos', title=title, url=url, thumbnail=thumbnail, plot=plot,
fanart=fanart, contentTitle=contentTitle, infoLabels={'year': year}))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
# Paginacion
if itemlist != []:
actual_page_url = item.url
next_page = scrapertools.find_single_match(data, '<a class="nextpostslink" rel="next" href="(.*?)">')
if next_page != '':
itemlist.append(Item(channel=item.channel, action="lista", title='Siguiente >>>', url=next_page,
thumbnail='https://s16.postimg.org/9okdu7hhx/siguiente.png'))
return itemlist
def seccion(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
if item.extra == 'generos':
patron = 'menu-item-object-category menu-item-.*?"><a href="(.*?)">(.*?)<\/a><\/li>'
else:
patron = '<li><a href="(.*?\/letter\/.*?)">(.*?)<\/a><\/li>'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle in matches:
thumbnail = ''
if item.extra == 'generos' and scrapedtitle in tgenero:
thumbnail = tgenero[scrapedtitle]
elif scrapedtitle.lower() in tletras:
thumbnail = tletras[scrapedtitle.lower()]
fanart = ''
title = scrapedtitle
url = scrapedurl
itemlist.append(
Item(channel=item.channel, action="lista", title=title, fulltitle=item.title, url=url, thumbnail=thumbnail,
fanart=fanart, extra=item.extra))
return itemlist
def findvideos(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
patron = 'class="Num">.*?<\/span>.*?href="(.*?)" class="Button STPb">.*?<\/a>.*?<span>(.*?)<\/span><\/td><td><span>(.*?)<\/span><\/td><td><span>.*?<\/span>'
matches = re.compile(patron, re.DOTALL).findall(data)
infoLabels = item.infoLabels
for scrapedurl, servidor, idioma in matches:
new_item = (item.clone(url=scrapedurl, servidor=servidor, idioma=idioma, infoLabels=infoLabels))
itemlist += get_video_urls(new_item)
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos':
itemlist.append(
Item(channel=item.channel, title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', url=item.url,
action="add_pelicula_to_library", extra="findvideos", contentTitle=item.contentTitle))
itemlist.insert(len(itemlist) - 1, item.clone(channel='trailertools', action='buscartrailer',
title='[COLOR orange]Trailer en Youtube[/COLOR]'))
return itemlist
def get_video_urls(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
data = scrapertools.find_single_match(data, '<script type="text\/javascript">(.*?)<\/script>')
data = jsunpack.unpack(data)
patron = '"file":"(.*?)","label":"(.*?)","type":"video.*?"}'
subtitle = scrapertools.find_single_match(data, 'tracks:\[{"file":"(.*?)","label":".*?","kind":"captions"}')
matches = re.compile(patron, re.DOTALL).findall(data)
for url, calidad in matches:
if item.servidor == 'PELISENCASA':
item.servidor = 'Directo'
title = item.contentTitle + ' (' + item.idioma + ')' + ' (' + calidad + ')' + ' (' + item.servidor + ')'
itemlist.append(item.clone(title=title, url=url, calidad=calidad, action='play', subtitle=subtitle))
return itemlist
def search(item, texto):
logger.info()
texto = texto.replace(" ", "+")
item.url = item.url + texto
if texto != '':
return lista(item)
else:
return []
def newest(categoria):
logger.info()
itemlist = []
item = Item()
try:
if categoria == 'peliculas':
item.url = host
elif categoria == 'infantiles':
item.url = host + '/category/animacion/'
itemlist = lista(item)
if itemlist[-1].title == 'Siguiente >>>':
itemlist.pop()
except:
import sys
for line in sys.exc_info():
logger.error("{0}".format(line))
return []
return itemlist

View File

@@ -215,18 +215,20 @@ def search(item, texto):
def findvideos(item):
logger.info()
itemlist = []
duplicados = []
data = get_source(item.url)
patron = '<div class=TPlayerTbCurrent id=(.*?)><iframe.*?src=(.*?) frameborder'
patron = '<div class=TPlayer.*?\s+id=(.*?)><iframe width=560 height=315 src=(.*?) frameborder=0'
matches = re.compile(patron, re.DOTALL).findall(data)
for opt, urls_page in matches:
language = scrapertools.find_single_match (data,'data-TPlayerNv=%s><span>Opción <strong>.*?'
logger.debug ('option: %s' % opt)
language = scrapertools.find_single_match (data,'data-TPlayerNv=%s><span>Opción <strong>.'
'<\/strong><\/span>.*?<span>(.*?)<\/span'%opt)
data = httptools.downloadpage(urls_page).data
servers = scrapertools.find_multiple_matches(data,'<button id="(.*?)"')
video_data = httptools.downloadpage(urls_page).data
servers = scrapertools.find_multiple_matches(video_data,'<button id="(.*?)"')
for server in servers:
quality = item.quality
info_urls = urls_page.replace('embed','get')
video_info=httptools.downloadpage(info_urls+'/'+server).data
video_info = jsontools.load(video_info)
@@ -238,8 +240,13 @@ def findvideos(item):
url = 'https://'+video_server+'/embed/'+video_id
else:
url = 'https://'+video_server+'/e/'+video_id
title = item.title
itemlist.append(item.clone(title=title, url=url, action='play', language=language))
title = item.contentTitle + ' [%s] [%s]'%(quality, language)
itemlist.append(item.clone(title=title,
url=url,
action='play',
language=language,
quality=quality
))
itemlist = servertools.get_servers_itemlist(itemlist)
return itemlist

View File

@@ -428,13 +428,17 @@ def get_vip(url):
itemlist =[]
url= url.replace('reproductor','vip')
data = httptools.downloadpage(url).data
patron = '<a href="(.*?)"> '
video_urls = scrapertools.find_multiple_matches(data,'<a href="(.*?)">')
video_urls = scrapertools.find_multiple_matches(data,'<a href="(.*?)".*?>')
for item in video_urls:
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)
data=httptools.downloadpage(new_url, follow_redirects=False).headers
itemlist.extend(servertools.find_video_items(data=str(data)))
if 'elreyxhd' in item:
if 'plus'in item:
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)
else:
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=httptools.downloadpage(new_url, follow_redirects=False).headers
itemlist.extend(servertools.find_video_items(data=str(data)))
return itemlist

View File

@@ -2,7 +2,7 @@
"id": "playmax",
"name": "PlayMax",
"language": ["cast", "lat"],
"active": true,
"active": false,
"adult": false,
"thumbnail": "playmax.png",
"banner": "playmax.png",

View File

@@ -30,11 +30,6 @@ def mainlist(item):
itemlist.append(
Item(channel=item.channel, action="menudesta", title="Destacadas", url= host + "/pag/1",
thumbnail="http://img.irtve.es/v/1074982/", fanart=mifan))
itemlist.append(Item(channel=item.channel, action="menupelis", title="Proximos estrenos",
url= host + "/archivos/proximos-estrenos/pag/1",
thumbnail="https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcTpsRC"
"-GTYzCqhor2gIDfAB61XeymwgXWSVBHoRAKs2c5HAn29f&reload=on",
fanart=mifan))
itemlist.append(Item(channel=item.channel, action="menupelis", title="Todas las Peliculas",
url= host + "/pag/1",
thumbnail="https://freaksociety.files.wordpress.com/2012/02/logos-cine.jpg", fanart=mifan))
@@ -70,7 +65,8 @@ def menupelis(item):
logger.info(item.url)
itemlist = []
data = httptools.downloadpage(item.url).data.decode('iso-8859-1').encode('utf-8')
if item.genre:
item.extra = item.genre
if item.extra == '':
section = 'Recién Agregadas'
elif item.extra == 'year':
@@ -79,17 +75,13 @@ def menupelis(item):
section = 'de Eróticas \+18'
else:
section = 'de %s'%item.extra
patronenlaces = '<h.>Películas %s<\/h.>.*?>(.*?)<\/section>'%section
matchesenlaces = re.compile(patronenlaces, re.DOTALL).findall(data)
patronenlaces = '<h.>Películas %s</h.>.*?>(.*?)</section>'%section
matchesenlaces = scrapertools.find_multiple_matches(data, patronenlaces)
for bloque_enlaces in matchesenlaces:
patron = '<div class="poster-media-card">.*?'
patron += '<a href="(.*?)".*?title="(.*?)"(.*?)'
patron += '<img src="(.*?)"'
matches = re.compile(patron, re.DOTALL).findall(bloque_enlaces)
for scrapedurl, scrapedtitle, extra_info, scrapedthumbnail in matches:
title = scrapertools.remove_show_from_title(scrapedtitle, "Ver Película")
title = title.replace("Online", "");
@@ -144,21 +136,14 @@ def menudesta(item):
# Peliculas de Estreno
def menuestre(item):
logger.info(item.url)
itemlist = []
data = httptools.downloadpage(item.url).data.decode('iso-8859-1').encode('utf-8')
patronenlaces = '<h1>Estrenos</h1>(.*?)</section>'
matchesenlaces = re.compile(patronenlaces, re.DOTALL).findall(data)
matchesenlaces = scrapertools.find_multiple_matches(data, patronenlaces)
for bloque_enlaces in matchesenlaces:
# patron = '<a href="([^"]+)" title="([^"]+)"> <div class="poster".*?<img src="([^"]+)"'
patron = '<div class="poster-media-card">.*?'
patron += '<a href="(.*?)".*?title="(.*?)"(.*?)'
patron += '<img src="(.*?)"'
matches = re.compile(patron, re.DOTALL).findall(bloque_enlaces)
for scrapedurl, scrapedtitle, extra_info, scrapedthumbnail in matches:
title = scrapertools.remove_show_from_title(scrapedtitle, "Ver Película")
@@ -255,32 +240,22 @@ def search(item, texto):
patron += '<div class="row">.*?'
patron += '<a href="(.*?)" title="(.*?)">.*?'
patron += '<img src="(.*?)"'
logger.info(patron)
matches = re.compile(patron, re.DOTALL).findall(data)
itemlist = []
for scrapedurl, scrapedtitle, scrapedthumbnail in matches:
title = scrapertools.remove_show_from_title(scrapedtitle, "Ver Película")
title = title.replace("Online", "")
url = item.url + scrapedurl
thumbnail = item.url + scrapedthumbnail
logger.info(url)
url = scrapedurl
thumbnail = scrapedthumbnail
itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=title, url=url,
thumbnail=thumbnail, fanart=thumbnail))
return itemlist
def poranyo(item):
logger.info(item.url)
itemlist = []
data = httptools.downloadpage(item.url).data.decode('iso-8859-1').encode('utf-8')
patron = '<option value="([^"]+)">(.*?)</option>'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle in matches:
@@ -289,7 +264,6 @@ def poranyo(item):
url = item.url + scrapedurl
itemlist.append(Item(channel=item.channel, action="menupelis", title=title, fulltitle=title, url=url,
fanart=item.fanart, extra='year'))
return itemlist
@@ -300,24 +274,25 @@ def porcateg(item):
data = httptools.downloadpage(item.url).data.decode('iso-8859-1').encode('utf-8')
patron = '<li class="cat-item cat-item-3">.*?<a href="([^"]+)" title="([^"]+)">'
matches = scrapertools.find_multiple_matches(data, patron)
adult_mode = config.get_setting("adult_mode")
for scrapedurl, scrapedtitle in matches:
if "18" in scrapedtitle and adult_mode == 0:
continue
title = scrapertools.remove_show_from_title(scrapedtitle, "Ver Película")
title = title.replace("Online", "")
url = scrapedurl
logger.info(url)
# si no esta permitidas categoria adultos, la filtramos
extra = title
adult_mode = config.get_setting("adult_mode")
extra1 = title
if adult_mode != 0:
if 'erotic' in scrapedurl:
extra = 'adult'
extra1 = 'adult'
else:
extra=title
extra1=title
if (extra=='adult' and adult_mode != 0) or extra != 'adult':
if (extra1=='adult' and adult_mode != 0) or extra1 != 'adult':
itemlist.append(Item(channel=item.channel, action="menupelis", title=title, fulltitle=title, url=url,
fanart=item.fanart, extra = extra))
fanart=item.fanart, genre = extra1))
return itemlist
@@ -338,7 +313,6 @@ def decode(string):
i += 1
enc4 = keyStr.index(input[i])
i += 1
chr1 = (enc1 << 2) | (enc2 >> 4)
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2)
chr3 = ((enc3 & 3) << 6) | enc4
@@ -352,4 +326,4 @@ def decode(string):
output = output.decode('utf8')
return output
return output

View File

@@ -290,7 +290,10 @@ def do_search(item, categories=None):
multithread = config.get_setting("multithread", "search")
result_mode = config.get_setting("result_mode", "search")
tecleado = item.extra
if item.wanted!='':
tecleado=item.wanted
else:
tecleado = item.extra
itemlist = []

View File

@@ -21,8 +21,7 @@ list_language = ['default']
CALIDADES = ['SD', 'HDiTunes', 'Micro-HD-720p', 'Micro-HD-1080p', '1080p', '720p']
list_quality = CALIDADES
list_servers = ['streamix',
'powvideo',
list_servers = ['powvideo',
'streamcloud',
'openload',
'flashx',
@@ -103,11 +102,14 @@ def extract_series_from_data(item, data):
else:
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),
action=action, show=name,
thumbnail=img,
context=context1))
context=context))
more_pages = re.search('pagina=([0-9]+)">>>', data)
if more_pages:
@@ -311,6 +313,8 @@ def findvideos(item):
d=c[0].rstrip( )
d=d.lstrip( )
list_links[i].server=d
list_links = servertools.get_servers_itemlist(list_links)
autoplay.start(list_links, item)
return list_links
@@ -338,7 +342,7 @@ def play(item):
else:
url = item.url
itemlist = servertools.find_video_items(data=url)
itemlist = servertools.find_video_items(item=item,data=url)
titulo = scrapertoolsV2.find_single_match(item.fulltitle, "^(.*?)\s\[.+?$")
if titulo:

View File

@@ -14,10 +14,7 @@ from channels import autoplay
IDIOMAS = {'latino': 'Latino'}
list_language = IDIOMAS.values()
list_servers = ['openload',
'okru',
'netutv',
'rapidvideo'
list_servers = ['openload'
]
list_quality = ['default']
@@ -49,7 +46,11 @@ def lista(item):
patron = '<a href="([^"]+)" '
patron += 'class="link">.+?<img src="([^"]+)".*?'
patron += 'title="([^"]+)">'
if item.url==host:
a=1
else:
num=(item.url).split('-')
a=int(num[1])
matches = scrapertools.find_multiple_matches(data, patron)
# Paginacion
@@ -57,17 +58,28 @@ def lista(item):
min = item.page * num_items_x_pagina
min=min-item.page
max = min + num_items_x_pagina - 1
b=0
for link, img, name in matches[min:max]:
title = name
b=b+1
if " y " in name:
title=name.replace(" y "," & ")
else:
title = name
url = host + link
scrapedthumbnail = host + img
context1=[renumbertools.context(item), autoplay.context]
itemlist.append(item.clone(title=title, url=url, action="episodios", thumbnail=scrapedthumbnail, show=title,
context=context1))
itemlist.append(
Item(channel=item.channel, title="Página Siguiente >>", url=item.url, action="lista", page=item.page + 1))
logger.info("gasdfsa "+str(b))
if b<29:
a=a+1
url="https://serieslan.com/pag-"+str(a)
if b>10:
itemlist.append(
Item(channel=item.channel, title="Página Siguiente >>", url=url, action="lista", page=0))
else:
itemlist.append(
Item(channel=item.channel, title="Página Siguiente >>", url=item.url, action="lista", page=item.page + 1))
tmdb.set_infoLabels(itemlist)
return itemlist
@@ -93,6 +105,10 @@ def episodios(item):
title = ""
pat = "/"
if "Mike, Lu & Og"==item.title:
pat="&/"
if "KND" in item.title:
pat="-"
# varios episodios en un enlace
if len(name.split(pat)) > 1:
i = 0
@@ -134,7 +150,7 @@ def findvideos(item):
itemlist = []
url_server = "https://openload.co/embed/%s/"
url_api_get_key = "https://serieslan.com/ide.php?i=%s&k=%s"
url_api_get_key = "https://serieslan.com/idx.php?i=%s&k=%s"
def txc(key, _str):
s = range(256)
@@ -157,7 +173,7 @@ def findvideos(item):
return res
data = httptools.downloadpage(item.url).data
pattern = '<div id="video" idv="([^"]*)" ide="([^"]*)" ids="[^"]*" class="video">'
pattern = "<script type=.+?>.+?\['(.+?)','(.+?)','.+?'\]"
idv, ide = scrapertools.find_single_match(data, pattern)
thumbnail = scrapertools.find_single_match(data,
'<div id="tab-1" class="tab-content current">.+?<img src="([^"]*)">')

View File

@@ -160,7 +160,9 @@ def findvideos(item):
'gamo': 'http://gamovideo.com/embed-',
'powvideo': 'http://powvideo.net/embed-',
'play': 'http://streamplay.to/embed-',
'vido': 'http://vidoza.net/embed-'}
'vido': 'http://vidoza.net/embed-',
'net': 'http://hqq.tv/player/embed_player.php?vid='
}
data = get_source(item.url)
noemitido = scrapertools.find_single_match(data, '<p><img src=(http://darkiller.com/images/subiendo.png) border=0\/><\/p>')
patron = 'id=tab\d+.*?class=tab_content><script>(.*?)\((.*?)\)<\/script>'

View File

@@ -7,7 +7,8 @@
"banner": "https://s9.postimg.org/5yxsq205r/ultrapeliculashd_banner.png",
"thumbnail": "https://s13.postimg.org/d042quw9j/ultrapeliculashd.png",
"categories": [
"movie"
"movie",
"direct"
],
"settings": [
{
@@ -33,6 +34,14 @@
"default": true,
"enabled": true,
"visible": true
},
{
"id": "include_in_newest_terror",
"type": "bool",
"label": "Incluir en Novedades -Terror",
"default": true,
"enabled": true,
"visible": true
}
]
}
}

View File

@@ -192,27 +192,24 @@ def findvideos(item):
data = httptools.downloadpage(item.url).data
data = re.sub(r'"|\n|\r|\t|&nbsp;|<br>|\s{2,}', "", data)
patron = '<iframe class=metaframe rptss src=(.*?) frameborder=0 allowfullscreen><\/iframe>'
matches = matches = re.compile(patron, re.DOTALL).findall(data)
patron = '<iframe class=metaframe rptss src=(.*?) (?:width=.*?|frameborder=0) allowfullscreen><\/iframe>'
matches = re.compile(patron, re.DOTALL).findall(data)
for video_url in matches:
if 'stream' in video_url:
data = httptools.downloadpage('https:'+video_url).data
new_url=scrapertools.find_single_match(data, 'iframe src="(.*?)"')
new_data = httptools.downloadpage(new_url).data
# TODO Reparar directos
# if 'stream' in video_url:
# data = httptools.downloadpage('https:'+video_url).data
# new_url=scrapertools.find_single_match(data, 'iframe src="(.*?)"')
# new_data = httptools.downloadpage(new_url).data
# logger.debug(new_data)
#
# url, quality = scrapertools.find_single_match(new_data, "file:'(.*?)',label:'(.*?)'")
# headers_string = '|Referer=%s' % url
# url = url.replace('download', 'preview')+headers_string
# 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:
itemlist.extend(servertools.find_video_items(data=video_url))
url, quality = scrapertools.find_single_match(new_data, 'file:.*?"(.*?)",label:.*?"(.*?)"')
headers_string = '|Referer=%s' % url
url = url.replace('download', 'preview')+headers_string
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:
itemlist.extend(servertools.find_video_items(data=video_url))
for videoitem in itemlist:
videoitem.channel = item.channel
@@ -255,10 +252,13 @@ def newest(categoria):
item.extra = 'estrenos/'
try:
if categoria == 'peliculas':
item.url = host + '/category/estrenos/'
item.url = host + '/genre/estrenos/'
elif categoria == 'infantiles':
item.url = host + '/category/infantil/'
item.url = host + '/genre/animacion/'
elif categoria == 'terror':
item.url = host + '/genre/terror/'
itemlist = lista(item)
if itemlist[-1].title == 'Siguiente >>>':

View File

@@ -45,15 +45,15 @@ def getmainlist(view="thumb_"):
context=[{"title": "Configurar Descargas", "channel": "setting", "config": "downloads",
"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",
thumbnail=get_thumb(thumb_configuracion, view),
thumbnail=get_thumb(thumb_setting, view),
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",
# thumbnail=get_thumb("help.png", view),
# category=config.get_localized_string(30104), viewmode="list"))
itemlist.append(Item(title=config.get_localized_string(30104), channel="help", action="mainlist",
thumbnail=get_thumb("help.png", view),
category=config.get_localized_string(30104), viewmode="list"))
return itemlist

View File

@@ -398,9 +398,9 @@ def set_context_commands(item, parent_item):
if item.contentType in ['movie','tvshow']and item.channel != 'search':
# Buscar en otros canales
if item.contentSerieName!='':
item.extra=item.contentSerieName
item.wanted=item.contentSerieName
else:
item.extra = item.contentTitle
item.wanted = item.contentTitle
context_commands.append(("[COLOR yellow]Buscar en otros canales[/COLOR]",
"XBMC.Container.Update (%s?%s)" % (sys.argv[0],
item.clone(channel='search',

View File

@@ -37,12 +37,16 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
cgi_counter = cgi_counter.replace("%0A","").replace("%22","")
playnow = scrapertools.find_single_match(data, 'https://www.flashx.tv/dl[^"]+')
# Para obtener el f y el fxfx
js_fxfx = scrapertools.find_single_match(data, """(?is)src=.(https://www.flashx.tv/js/code.js.*?[^(?:'|")]+)""")
js_fxfx = "https://www." + scrapertools.find_single_match(data.replace("//","/"), """(?is)(flashx.tv/js/code.js.*?[^(?:'|")]+)""")
data_fxfx = httptools.downloadpage(js_fxfx).data
mfxfx = scrapertools.find_single_match(data_fxfx, 'get.*?({.*?})').replace("'","").replace(" ","")
matches = scrapertools.find_multiple_matches(mfxfx, '(\w+):(\w+)')
for f, v in matches:
pfxfx += f + "=" + v + "&"
logger.info("mfxfxfx1= %s" %js_fxfx)
logger.info("mfxfxfx2= %s" %pfxfx)
if pfxfx == "":
pfxfx = "ss=yes&f=fail&fxfx=6"
coding_url = 'https://www.flashx.tv/flashx.php?%s' %pfxfx
# {f: 'y', fxfx: '6'}
flashx_id = scrapertools.find_single_match(data, 'name="id" value="([^"]+)"')

View File

@@ -7,13 +7,13 @@ from core import scrapertools
from lib import jsunpack
from platformcode import logger
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:40.0) Gecko/20100101 ' \
'Firefox/40.0'}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:58.0) Gecko/20100101 ' \
'Firefox/58.0'}
def test_video_exists(page_url):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url, add_referer = True).data
data = httptools.downloadpage(page_url, headers=headers).data
if "File was deleted" in data or "Not Found" in data or "File was locked by administrator" in data:
return False, "[Gamovideo] El archivo no existe o ha sido borrado"
@@ -26,7 +26,6 @@ def test_video_exists(page_url):
def get_video_url(page_url, premium=False, user="", password="", video_password=""):
logger.info("(page_url='%s')" % page_url)
data = httptools.downloadpage(page_url, headers=headers).data
logger.debug(data)
packer = scrapertools.find_single_match(data,
"<script type='text/javascript'>(eval.function.p,a,c,k,e,d..*?)</script>")
if packer != "":

View File

@@ -30,12 +30,20 @@ def get_video_url(page_url, user="", password="", video_password=""):
streams =[]
logger.debug('page_url: %s'%page_url)
if 'googleusercontent' in page_url:
data = httptools.downloadpage(page_url, follow_redirects = False, headers={"Referer": page_url})
url=data.headers['location']
response = httptools.downloadpage(page_url, follow_redirects = False, cookies=False, headers={"Referer": page_url})
url=response.headers['location']
cookies = ""
cookie = response.headers["set-cookie"].split("HttpOnly, ")
for c in cookie:
cookies += c.split(";", 1)[0] + "; "
data = response.data.decode('unicode-escape')
data = urllib.unquote_plus(urllib.unquote_plus(data))
headers_string = "|Cookie=" + cookies
quality = scrapertools.find_single_match (url, '.itag=(\d+).')
streams.append((quality, url))
headers_string=""
else:
response = httptools.downloadpage(page_url, cookies=False, headers={"Referer": page_url})

View File

@@ -8,7 +8,6 @@ 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:
return False, "[streamixcloud] El archivo no existe o ha sido borrado"
@@ -21,7 +20,8 @@ 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 = []
packed = scrapertools.find_single_match(data,
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:]

View File

@@ -3,8 +3,8 @@
"find_videos": {
"patterns": [
{
"pattern": "(http://vshare.io/v/[\\w]+[^\"']*)[\"']",
"url": "\\1"
"pattern": "(vshare.io/v/[a-zA-Z0-9/-]+)",
"url": "http://\\1"
}
]
},

View File

@@ -40,11 +40,8 @@ def get_video_url(page_url, premium=False, user="", password="", video_password=
arrayResult = [chr(int(value) - substract) for value in fields.group(1).split(",")]
strResult = "".join(arrayResult)
logger.debug(strResult)
videoSources = re.findall("<source[\s]+src=[\"'](?P<url>[^\"']+)[^>]+label=[\"'](?P<label>[^\"']+)", strResult)
for url, label in videoSources:
logger.debug("[" + label + "] " + url)
video_urls.append([label, url])
video_urls.sort(key=lambda i: int(i[0].replace("p","")))
return video_urls