Merge pull request #1 from alfa-addon/master

v2.7.28
This commit is contained in:
Intel1
2019-02-21 10:49:37 -05:00
committed by GitHub
10 changed files with 53 additions and 55 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.7.27" provider-name="Alfa Addon">
<addon id="plugin.video.alfa" name="Alfa" version="2.7.28" provider-name="Alfa Addon">
<requires>
<import addon="xbmc.python" version="2.1.0"/>
<import addon="script.module.libtorrent" optional="true"/>
@@ -19,15 +19,9 @@
</assets>
<news>[B]Estos son los cambios para esta versión:[/B]
[COLOR green][B]Arreglos[/B][/COLOR]
¤ danimados ¤ animeshd ¤ pelisplus
¤ NewPct1 ¤ DivxTotal ¤ Todopeliculas
¤ pelismundo ¤ repelis ¤ DoomTv
¤ FanPelis ¤ Goovie ¤ InkaPelis
¤ PeliculonHD ¤ PelisFox ¤ PelisGratis
¤ RetroseriesTV ¤ Inkaseries ¤ Maxipelis24
¤ gmobi ¤ chzechvideos
[COLOR green][B]Novedades[/B][/COLOR]
¤ Legalmente Gratis
¤ maxipelis24 ¤ thevid ¤ gamovideo
¤ pack +18
Agradecimientos a @chivmalev por colaborar en ésta versión
</news>

View File

@@ -28,11 +28,11 @@ def mainlist(item):
itemlist.append(Item(channel=item.channel, title="Peliculas",
action="movies", url=host, page=0, thumbnail=get_thumb('movies', auto=True)))
itemlist.append(Item(channel=item.channel, action="category", title="Año de Estreno",
url=host, cat='year', page=0, thumbnail=get_thumb('year', auto=True)))
url=host, cat='year', thumbnail=get_thumb('year', auto=True)))
itemlist.append(Item(channel=item.channel, action="category", title="Géneros",
url=host, cat='genre', page=0, thumbnail=get_thumb('genres', auto=True)))
url=host, cat='genre', thumbnail=get_thumb('genres', auto=True)))
itemlist.append(Item(channel=item.channel, action="category", title="Calidad",
url=host, cat='quality', page=0, thumbnail=get_thumb("quality", auto=True)))
url=host, cat='quality', thumbnail=get_thumb("quality", auto=True)))
itemlist.append(Item(channel=item.channel, title="Buscar", action="search",
url=host + "?s=", page=0, thumbnail=get_thumb("search", auto=True)))
@@ -53,17 +53,18 @@ def category(item):
itemlist = []
data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;", "", data)
if item.cat == 'genre':
data = scrapertools.find_single_match(
data, '<h3>Géneros <span class="icon-sort">.*?</ul>')
patron = '<li class="cat-item cat-item.*?<a href="([^"]+)" >([^<]+)<'
patron = '<li class="cat-item cat-item.*?<a href="([^"]+)".*?>([^<]+)<'
elif item.cat == 'year':
data = scrapertools.find_single_match(
data, '<h3>Año de estreno.*?</div>')
patron = 'li><a href="([^"]+)">([^<]+).*?<'
patron = 'li><a href="([^"]+)".*?>([^<]+).*?<'
elif item.cat == 'quality':
data = scrapertools.find_single_match(data, '<h3>Calidad.*?</div>')
patron = 'li><a href="([^"]+)">([^<]+)<'
patron = 'li><a href="([^"]+)".*?>([^<]+)<'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle in matches:
itemlist.append(Item(channel=item.channel, action='movies',
@@ -81,7 +82,7 @@ def movies(item):
patron += '<span class="ttx">([^<]+).*?'
patron += 'class="year">([^<]+).+?class="calidad2">([^<]+)<'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, img, scrapedtitle, resto, year, quality in matches[item.page:item.page + 30]:
for scrapedurl, img, scrapedtitle, resto, year, quality in matches[item.page:item.page + 20]:
scrapedtitle = re.sub(r' \((\d+)\)', '', scrapedtitle)
plot = scrapertools.htmlclean(resto).strip()
title = ' %s [COLOR red][%s][/COLOR]' % (scrapedtitle, quality)
@@ -97,14 +98,15 @@ def movies(item):
infoLabels={'year': year}))
tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True)
# Paginacion
if item.page + 30 < len(matches):
itemlist.append(item.clone(page=item.page + 30, title=">> Siguiente"))
if item.page + 20 < len(matches):
itemlist.append(item.clone(page=item.page + 20, title=">> Siguiente"))
else:
next_page = scrapertools.find_single_match(
data, 'class="respo_pag"><div class="pag.*?<a href="([^"]+)" >Siguiente</a><')
data, '<link rel="next" href="([^"]+)" />')
if next_page:
itemlist.append(item.clone(
url=next_page, page=0, title=">> Siguiente"))
itemlist.append(item.clone(url=next_page, page=0,
title=" Siguiente »"))
return itemlist
@@ -113,7 +115,8 @@ def findvideos(item):
itemlist = []
data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;", "", data)
data1= scrapertools.find_single_match(data,'<ul class="idTabs">.*?</ul></div>')
data1 = scrapertools.find_single_match(
data, '<ul class="idTabs">.*?</ul></div>')
patron = "li>.*?href=.*?>([^\s]+)"
matches1 = re.compile(patron, re.DOTALL).findall(data1)
for lang in matches1:
@@ -136,7 +139,6 @@ def findvideos(item):
url = video_data.headers['location']
title = '%s'
else:
patron = '<div id="div.*?<div class="movieplay".*?(?:iframe.*?src|IFRAME SRC)="([^"]+)"'
matches = re.compile(patron, re.DOTALL).findall(data)
@@ -144,9 +146,10 @@ def findvideos(item):
url = link
title = '%s'
new_item = Item(channel=item.channel, title=title, url=url,
action='play', language= IDIOMAS[idioma], infoLabels=item.infoLabels)
action='play', language=IDIOMAS[idioma], infoLabels=item.infoLabels)
itemlist.append(new_item)
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % '%s [%s]'%(i.server.capitalize(),i.language))
itemlist = servertools.get_servers_itemlist(
itemlist, lambda i: i.title % '%s [%s]' % (i.server.capitalize(), i.language))
#itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
if itemlist:
if config.get_videolibrary_support():

View File

@@ -14,9 +14,9 @@ host= 'https://pandamovies.pw'
def mainlist(item):
logger.info()
itemlist = []
itemlist.append( Item(channel=item.channel, title="Peliculas" , action="lista", url=host + "/list-movies"))
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/list-movies"))
itemlist.append( Item(channel=item.channel, title="Canal" , action="categorias", url=host + "/list-movies"))
itemlist.append( Item(channel=item.channel, title="Peliculas" , action="lista", url=host + "/movies"))
itemlist.append( Item(channel=item.channel, title="Categorias" , action="categorias", url=host + "/movies"))
itemlist.append( Item(channel=item.channel, title="Canal" , action="categorias", url=host + "/movies"))
itemlist.append( Item(channel=item.channel, title="Buscar", action="search"))
return itemlist
@@ -42,7 +42,7 @@ def categorias(item):
else:
data = scrapertools.get_match(data,'<a href="#">Studios</a>(.*?)</ul>')
data = re.sub(r"\n|\r|\t|&nbsp;|<br>", "", data)
patron = '<li><a title=".*?" href="([^"]+)">([^<]+)</a>'
patron = '<a href="([^"]+)">([^<]+)</a>'
matches = re.compile(patron,re.DOTALL).findall(data)
for scrapedurl,scrapedtitle in matches:
scrapedplot = ""
@@ -58,17 +58,19 @@ def lista(item):
logger.info()
itemlist = []
data = scrapertools.cachePage(item.url)
patron = '<a class="clip-link" title="([^"]+)" href="([^"]+)".*?'
patron += 'src="([^"]+)"'
patron = '<div data-movie-id="\d+".*?'
patron += '<a href="([^"]+)".*?oldtitle="([^"]+)".*?'
patron += '<img src="([^"]+)".*?'
matches = re.compile(patron,re.DOTALL).findall(data)
for scrapedtitle,scrapedurl,scrapedthumbnail in matches:
for scrapedurl,scrapedtitle,scrapedthumbnail in matches:
url = urlparse.urljoin(item.url,scrapedurl)
title = scrapedtitle
thumbnail = scrapedthumbnail
plot = ""
itemlist.append( Item(channel=item.channel, action="findvideos" , title=title , url=url, thumbnail=thumbnail,
plot=plot, contentTitle = title))
next_page = scrapertools.find_single_match(data,'<a class="nextpostslink" rel="next" href="([^"]+)">')
# <li class='active'><a class=''>1</a></li><li><a rel='nofollow' class='page larger' href='https://pandamovies.pw/movies/page/2'>
next_page = scrapertools.find_single_match(data,'<li class=\'active\'>.*?href=\'([^\']+)\'>')
if next_page =="":
next_page = scrapertools.find_single_match(data,'<a.*?href="([^"]+)" >Next &raquo;</a>')
if next_page!="":

View File

@@ -19,7 +19,7 @@ def mainlist(item):
itemlist.append( Item(channel=item.channel, title=" categorias" , action="categorias", url=host + "/category/movies/"))
itemlist.append( Item(channel=item.channel, title="Videos" , action="lista", url=host + "/category/clips/"))
itemlist.append( Item(channel=item.channel, title=" categorias" , action="lista", url=host + "/category/clips/"))
itemlist.append( Item(channel=item.channel, title=" categorias" , action="categorias", url=host + "/category/clips/"))
return itemlist
@@ -41,11 +41,11 @@ def categorias(item):
itemlist = []
data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|&nbsp;|<br>", "", data)
if item.url == host + "/category/movies/":
if "/category/movies/" in item.url:
data = scrapertools.get_match(data,'>Movies</a>(.*?)</ul>')
else:
data = scrapertools.get_match(data,'>Clips</a>(.*?)</ul>')
patron = '<a href="([^"]+)">([^"]+)</a>'
patron = '<a href=([^"]+)>([^"]+)</a>'
matches = re.compile(patron,re.DOTALL).findall(data)
scrapertools.printMatches(matches)
for scrapedurl,scrapedtitle in matches:
@@ -60,20 +60,21 @@ def lista(item):
logger.info()
itemlist = []
data = scrapertools.cachePage(item.url)
patron = '<article id="post-\d+".*?'
patron += '<img class="center cover" src="([^"]+)" alt="([^"]+)".*?'
patron += '<blockquote>.*?<a href=\'([^\']+)\''
patron = '<article id=post-\d+.*?'
patron += '<img class="center cover" src=([^"]+) alt="([^"]+)".*?'
patron += '<blockquote>.*?<a href=(.*?) target=_blank>'
matches = re.compile(patron,re.DOTALL).findall(data)
scrapertools.printMatches(matches)
for scrapedthumbnail,scrapedtitle,scrapedurl in matches:
scrapedplot = ""
itemlist.append( Item(channel=item.channel, action="play", title=scrapedtitle, url=scrapedurl,
thumbnail=scrapedthumbnail, fanart=scrapedthumbnail, plot=scrapedplot) )
next_page = scrapertools.find_single_match(data,'<a class="nextpostslink" rel="next" href="([^"]+)">')
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="Página Siguiente >>", text_color="blue", url=next_page) )
itemlist.append(item.clone(action="lista", title="Página Siguiente >>", text_color="blue", url=next_page) )
return itemlist
def play(item):
logger.info()
itemlist = servertools.find_video_items(data=item.url)

View File

@@ -81,6 +81,7 @@ def lista(item):
if not scrapedthumbnail.startswith("https"):
scrapedthumbnail = "https:%s" % scrapedthumbnail
scrapedtitle = "%s - [COLOR red]%s[/COLOR] %s" % (duration, quality, scrapedtitle)
scrapedthumbnail += "|Referer=https://www.porntrex.com/"
itemlist.append(item.clone(action=action, title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail,
contentThumbnail=scrapedthumbnail, fanart=scrapedthumbnail))
# Extrae la marca de siguiente página
@@ -256,6 +257,7 @@ def menu_info(item):
if i == 0:
continue
img = urlparse.urljoin(host, img)
img += "|Referer=https://www.porntrex.com/"
title = "Imagen %s" % (str(i))
itemlist.append(item.clone(action="", title=title, thumbnail=img, fanart=img))

View File

@@ -533,7 +533,7 @@ def play(item): #Permite preparar la descarga de
from core import ziptools
#buscamos la url del .torrent
patron = '<tr><td align="(?:[^"]+)?"\s*class="(?:[^"]+)?"\s*width="(?:[^"]+)?">\s*Torrent:<\/td><td class="(?:[^"]+)?">\s*<img src="(?:[^"]+)?"\s*alt="(?:[^"]+)?"\s*border="(?:[^"]+)?"\s*\/>\s*<a onmouseover="(?:[^"]+)?"\s*onmouseout="(?:[^"]+)?" href="([^"]+)">.*?<\/a>'
patron = '<tr><td align="(?:[^"]+)?"\s*class="(?:[^"]+)?"\s*width="(?:[^"]+)?">\s*Torrent:<\/td><td class="(?:[^"]+)?">\s*<img src="(?:[^"]+)?"\s*alt="(?:[^"]+)?"\s*border="(?:[^"]+)?"\s*\/>\s*<a onmouseover="(?:[^"]+)?"\s*onmouseout="(?:[^"]+)?" href="([^"]+)".*?<\/a>'
try:
data = re.sub(r"\n|\r|\t|\s{2}|(<!--.*?-->)", "", httptools.downloadpage(item.url, timeout=timeout).data)
data = unicode(data, "utf-8", errors="replace").encode("utf-8")
@@ -543,6 +543,7 @@ def play(item): #Permite preparar la descarga de
if status:
return itemlist #IP bloqueada
if not scrapertools.find_single_match(data, patron):
logger.error('ERROR 02: PLAY: No hay enlaces o ha cambiado la estructura de la Web. Verificar en la Web esto último y reportar el error con el log: PATRON: ' + patron + ' / DATA: ' + data)
itemlist.append(item.clone(action='', title=item.channel.capitalize() + ': ERROR 02: PLAY: No hay enlaces o ha cambiado la estructura de la Web. Verificar en la Web esto último y reportar el error con el log'))
return itemlist
item.url = urlparse.urljoin(host, scrapertools.find_single_match(data, patron))

View File

@@ -38,10 +38,10 @@ def lista(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
patron = '<article id="post-\d+".*?<a href="([^"]+)" title="([^"]+)">.*?data-src="([^"]+)"'
patron = '<article id="post-\d+".*?<a href="([^"]+)".*?data-src="([^"]+)".*?alt="([^"]+)"'
matches = re.compile(patron,re.DOTALL).findall(data)
scrapertools.printMatches(matches)
for scrapedurl,scrapedtitle,scrapedthumbnail in matches:
for scrapedurl,scrapedthumbnail,scrapedtitle in matches:
scrapedplot = ""
scrapedtitle = scrapedtitle.replace("Permalink to Watch ", "").replace("Porn Online", "").replace("Permalink to ", "")
itemlist.append( Item(channel=item.channel, action="play", title=scrapedtitle, url=scrapedurl,

View File

@@ -12,7 +12,7 @@ from platformcode import config, logger
__channel__ = "xms"
host = 'https://xxxmoviestream.com/'
host = 'https://xtheatre.org'
host1 = 'https://www.cam4.com/'
try:
__modo_grafico__ = config.get_setting('modo_grafico', __channel__)
@@ -90,8 +90,6 @@ def peliculas(item):
data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|&nbsp;|<br>|#038;", "", data)
patron_todos = '<div id="content">(.*?)<div id="footer"'
data = scrapertools.find_single_match(data, patron_todos)
patron = 'src="([^"]+)" class="attachment-thumb_site.*?' # img
patron += '<a href="([^"]+)" title="([^"]+)".*?' # url, title
patron += '<div class="right"><p>([^<]+)</p>' # plot
@@ -119,20 +117,19 @@ def peliculas(item):
def webcam(item):
logger.info()
itemlist = []
data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|&nbsp;|<br>|#038;", "", data)
patron = '<div class="profileBox">.*?<a href="/([^"]+)".*?' # url
patron += 'data-hls-preview-url="([^"]+)">.*?' # video_url
patron += 'data-username="([^"]+)".*?' # username
patron += 'title="([^"]+)".*?' # title
patron += 'data-profile="([^"]+)" />' # img
patron += 'data-profile="([^"]+)"' # img
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, video_url, username, scrapedtitle, scrapedthumbnail in matches:
scrapedtitle = scrapedtitle.replace(' Chat gratis con webcam.', '')
itemlist.append(item.clone(channel=__channel__, action="play", title=scrapedtitle,
itemlist.append(item.clone(channel=__channel__, action="play", title=username,
url=video_url, thumbnail=scrapedthumbnail, fanart=scrapedthumbnail,
viewmode="movie_with_plot", folder=True, contentTitle=scrapedtitle))
# Extrae el paginador

View File

@@ -441,7 +441,7 @@ def save_episodes(path, episodelist, serie, silent=False, overwrite=True):
if e.emergency_urls: #Si ya tenemos urls...
emergency_urls_succ = True #... es un éxito y vamos a marcar el .nfo
if not e.infoLabels: #en series multicanal, prevalece el infolabels...
if not e.infoLabels["tmdb_id"] or (serie.infoLabels["tmdb_id"] and e.infoLabels["tmdb_id"] != serie.infoLabels["tmdb_id"]): #en series multicanal, prevalece el infolabels...
e.infoLabels = serie.infoLabels #... del canal actual y no el del original
e.contentSeason, e.contentEpisodeNumber = season_episode.split("x")
new_episodelist.append(e)
@@ -516,7 +516,7 @@ def save_episodes(path, episodelist, serie, silent=False, overwrite=True):
if not item_nfo:
head_nfo, item_nfo = read_nfo(nfo_path)
if not e.infoLabels: #en series multicanal, prevalece el infolabels...
if not e.infoLabels["tmdb_id"] or (item_nfo.infoLabels["tmdb_id"] and e.infoLabels["tmdb_id"] != item_nfo.infoLabels["tmdb_id"]): #en series multicanal, prevalece el infolabels...
e.infoLabels = item_nfo.infoLabels #... del canal actual y no el del original
if filetools.write(json_path, e.tojson()):

View File

@@ -17,7 +17,6 @@ import xbmc
import xbmcgui
import xbmcplugin
from channelselector import get_thumb
from lib import alfaresolver
from platformcode import unify
from core import channeltools
from core import trakt_tools
@@ -697,7 +696,6 @@ def play_video(item, strm=False, force_direct=False, autoplay=False):
return
# se obtiene la información del video.
mediaurl = alfaresolver.av(mediaurl)
if not item.contentThumbnail:
thumb = item.thumbnail
else: