Merge pull request #290 from pipcat/master

Cambios en peliculasdk
This commit is contained in:
Alfa
2018-06-06 16:02:59 -05:00
committed by GitHub
2 changed files with 194 additions and 123 deletions
+3 -2
View File
@@ -7,8 +7,9 @@
"thumbnail": "http://s29.postimg.cc/wzw749oon/pldklog.jpg", "thumbnail": "http://s29.postimg.cc/wzw749oon/pldklog.jpg",
"banner": "peliculasdk.png", "banner": "peliculasdk.png",
"categories": [ "categories": [
"torrent", "movie",
"movie" "vos",
"adult"
], ],
"settings": [ "settings": [
{ {
+191 -121
View File
@@ -10,35 +10,76 @@ from core.scrapertools import decodeHtmlentities as dhe
from platformcode import logger from platformcode import logger
from platformcode import config from platformcode import config
from core import tmdb from core import tmdb
from channelselector import get_thumb
from channels import filtertools
from channels import autoplay
__comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'peliculasdk') __comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'peliculasdk')
__comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'peliculasdk') __comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'peliculasdk')
__adult_mode__ = config.get_setting("adult_mode")
host = "http://www.peliculasdk.com" host = "http://www.peliculasdk.com"
IDIOMAS = {'es': 'Español', 'la': 'Latino', 'su': 'Subtitulado', 'in': 'Inglés'}
list_language = IDIOMAS.values()
list_quality = ['HD-1080', 'HD-720', 'HD-320', 'BR-R', 'BR-S', 'DVD-R', 'DVD-S', 'TS-HQ', 'TS', 'CAM'] # -R:Rip, -S:Screener
list_servers = ['directo', 'streamango', 'powvideo', 'datoporn', 'gamovideo', 'streamplay', 'okru', 'rapidvideo', 'openload']
def mainlist(item): def mainlist(item):
logger.info() logger.info()
autoplay.init(item.channel, list_servers, list_quality)
itemlist = [] itemlist = []
itemlist.append(
Item(channel=item.channel, title="[COLOR orange]Estrenos[/COLOR]", action="peliculas", url= host + "/ver/estrenos", itemlist.append(Item(channel=item.channel, title='Estrenos', action='peliculas', url= host + "/ver/estrenos/",
fanart="http://s24.postimg.cc/z6ulldcph/pdkesfan.jpg", thumbnail=get_thumb('newest', auto=True), type='movies'))
thumbnail="http://s16.postimg.cc/st4x601d1/pdkesth.jpg"))
itemlist.append( itemlist.append(Item(channel=item.channel, title='Por géneros', action='section',
Item(channel=item.channel, title="[COLOR orange]PelisHd[/COLOR]", action="peliculas", url= host + "/calidad/HD-720/", thumbnail=get_thumb('genres', auto=True), type='movies'))
fanart="http://s18.postimg.cc/wzqonq3w9/pdkhdfan.jpg",
thumbnail="http://s8.postimg.cc/nn5669ln9/pdkhdthu.jpg")) itemlist.append(Item(channel=item.channel, title='Por calidades', action='section',
itemlist.append( thumbnail=get_thumb('quality', auto=True), type='movies'))
Item(channel=item.channel, title="[COLOR orange]Pelis HD-Rip[/COLOR]", action="peliculas", url= host + "/calidad/HD-320",
fanart="http://s7.postimg.cc/3pmnrnu7f/pdkripfan.jpg", itemlist.append(Item(channel=item.channel, title='Por idiomas', action='section',
thumbnail="http://s12.postimg.cc/r7re8fie5/pdkhdripthub.jpg")) thumbnail=get_thumb('language', auto=True), type='movies'))
itemlist.append(
Item(channel=item.channel, title="[COLOR orange]Pelis Audio español[/COLOR]", action="peliculas", url= host + "/idioma/Espanol/", if __adult_mode__ != 0:
fanart="http://s11.postimg.cc/65t7bxlzn/pdkespfan.jpg", itemlist.append(Item(channel=item.channel, title='Adultos +18', action='peliculas', url= host + "/genero/adultos/",
thumbnail="http://s13.postimg.cc/sh1034ign/pdkhsphtub.jpg")) thumbnail=get_thumb('adults', auto=True), type='movies'))
itemlist.append(
Item(channel=item.channel, title="[COLOR orange]Buscar...[/COLOR]", action="search", url= host + "/calidad/HD-720/", itemlist.append(Item(channel=item.channel, title='Buscar...', action='search',
fanart="http://s14.postimg.cc/ceqajaw2p/pdkbusfan.jpg", thumbnail=get_thumb('search', auto=True), type='movies'))
thumbnail="http://s13.postimg.cc/o85gsftyv/pdkbusthub.jpg"))
autoplay.show_option(item.channel, itemlist)
return itemlist
def section(item):
logger.info()
itemlist=[]
duplicados=[]
data = httptools.downloadpage(host).data
if 'Por géneros' in item.title:
patron = '<li><a href="(\/genero\/[^"]*)">([^<]*)<\/a><\/li>' #<li><a href="/genero/accion">Acción</a></li>
elif 'Por calidades' in item.title:
patron = "<li><a href='(\/calidad\/[^']*)'>([^<]*)<\/a><\/li>" #<li><a href='/calidad/HD-1080/'>HD 1080</a></li>
elif 'Por idiomas' in item.title:
patron = "<li><a href='(\/idioma\/[^']*)'>([^<]*)<\/a><\/li>" #<li><a href='/idioma/Espanol/'>Español</a></li>
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedtitle in matches:
if scrapedtitle not in duplicados:
itemlist.append(Item(channel=item.channel, url=host + scrapedurl, title=scrapedtitle, action='peliculas',
type=item.type))
duplicados.append(scrapedtitle)
return itemlist return itemlist
@@ -62,132 +103,161 @@ def search(item, texto):
def buscador(item): def buscador(item):
logger.info() logger.info()
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;", "", data) data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;|&#.*?;", "", data)
patron = '<div class="karatula".*?'
patron += 'src="([^"]+)".*?' patron = 'style="position:relative"> '
patron += '<div class="tisearch"><a href="([^"]+)">' patron += '<a href="([^"]+)">'
patron += '([^<]+)<.*?' patron += '<img src="([^"]+)" alt="([^"]+)"></a><br>'
patron += 'Audio:(.*?)</a>.*?' patron += '<div class="titulope">([^<]+)</div>.*?'
patron += 'Género:(.*?)</a>.*?' patron += 'Audio: (.+?)</div>.*?'
patron += 'Calidad:(.*?),' patron += 'Calidad: (.+?)</div>.*?'
matches = re.compile(patron, re.DOTALL).findall(data) matches = scrapertools.find_multiple_matches(data, patron)
for scrapedthumbnail, scrapedurl, scrapedtitle, scrapedlenguaje, scrapedgenero, scrapedcalidad in matches: for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedtitleorig, scrapedlenguaje, scrapedcalidad in matches:
year = scrapertools.find_single_match(scrapedtitle, '\((\d+)\)') year = scrapertools.find_single_match(scrapedtitle, '\((\d+)\)')
scrapedcalidad = re.sub(r"<a href.*?>|</a>|</span>", "", scrapedcalidad).strip() scrapedtitle = re.sub(r"\(\d+\)", "", scrapedtitle).strip()
scrapedlenguaje = re.sub(r"<a href.*?>|</a>|</span>", "", scrapedlenguaje).strip()
if not "Adultos" in scrapedgenero and not "Adultos" in scrapedlenguaje and not "Adultos" in scrapedcalidad: audios = scrapertools.find_multiple_matches(scrapedlenguaje, '<a href="[^"]*" rel="[^"]*">([^<]*)</a>')
scrapedcalidad = "[COLOR orange]" + scrapedcalidad + "[/COLOR]" calidad = scrapertools.find_single_match(scrapedcalidad, '<a href="[^"]*" rel="[^"]*">([^<]*)</a>')
scrapedlenguaje = "[COLOR orange]" + scrapedlenguaje + "[/COLOR]"
title = scrapedtitle + "-(Idioma: " + scrapedlenguaje + ")" + "-(Calidad: " + scrapedcalidad + ")" titulo = '%s [%s][%s]' % (scrapedtitle, ','.join([a[:3] for a in audios]), calidad)
title = "[COLOR white]" + title + "[/COLOR]"
scrapedtitle = scrapedtitle.split("(")[0].strip() # Parece que las pelis de adultos se mezclan en la búsqueda y lo único que las diferencia es que no tienen Calidad
itemlist.append(Item(channel=item.channel, title=title, url=scrapedurl, action="findvideos", if calidades or __adult_mode__ != 0:
thumbnail=scrapedthumbnail, contentTitle = scrapedtitle, infoLabels={'year':year}, itemlist.append(Item(channel=item.channel,
fanart="http://s18.postimg.cc/h9kb22mnt/pdkfanart.jpg", library=True, folder=True)) action="findvideos", url=scrapedurl,
tmdb.set_infoLabels(itemlist, True) title=titulo, contentTitle=scrapedtitle,
try: thumbnail=scrapedthumbnail,
next_page = scrapertools.get_match(data, language=audios,
'<span class="current">.*?<a href="(.*?)".*?>Siguiente &raquo;</a></div>') quality=calidad,
itemlist.append(Item(channel=item.channel, action="buscador", title="[COLOR red]siguiente>>[/COLOR]", url=next_page, infoLabels={'year':year}
thumbnail="http://s6.postimg.cc/uej03x4r5/bricoflecha.png", ))
fanart="http://s18.postimg.cc/h9kb22mnt/pdkfanart.jpg", folder=True))
except: tmdb.set_infoLabels(itemlist)
pass
# Paginación
url_next_page = scrapertools.find_single_match(data,'<a href="([^"]*)">Siguiente &raquo;</a>')
if url_next_page:
itemlist.append(item.clone(title="Siguiente >>", url=url_next_page))
return itemlist return itemlist
def peliculas(item): def peliculas(item):
logger.info() logger.info()
itemlist = [] itemlist = []
# Descarga la página
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;|&#.*?;", "", data) data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;|&#.*?;", "", data)
patron = 'style="position:relative;"> '
patron += '<a href="([^"]+)" ' patron = 'style="position:relative"> '
patron += 'title="([^<]+)">' patron += '<a href="([^"]+)">'
patron += '<img src="([^"]+)".*?' patron += '<img src="([^"]+)" alt="([^"]+)"></a><br>'
patron += 'Audio:(.*?)</br>.*?' patron += '<div class="titulope">([^<]+)</div>.*?'
patron += 'Calidad:(.*?)</br>.*?' patron += 'Audio: (.+?)</div>.*?'
patron += 'Género:.*?tag">(.*?)</a>' patron += 'Calidad: (.+?)</div>.*?'
patron += 'Género: (.+?)</div>'
matches = scrapertools.find_multiple_matches(data, patron) matches = scrapertools.find_multiple_matches(data, patron)
for scrapedurl, scrapedtitle, scrapedthumbnail, scrapedlenguaje, scrapedcalidad, scrapedgenero in matches: for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedtitleorig, scrapedlenguaje, scrapedcalidad, scrapedgenero in matches:
year = scrapertools.find_single_match(scrapedtitle, '\((\d+)\)') year = scrapertools.find_single_match(scrapedtitle, '\((\d+)\)')
scrapedtitle = re.sub(r"\(\d+\)", "", scrapedtitle).strip() scrapedtitle = re.sub(r"\(\d+\)", "", scrapedtitle).strip()
scrapedcalidad = re.sub(r"<a href.*?>|</a>", "", scrapedcalidad).strip()
scrapedlenguaje = re.sub(r"<a href.*?>|</a>", "", scrapedlenguaje).strip() audios = scrapertools.find_multiple_matches(scrapedlenguaje, '<a href="[^"]*" rel="[^"]*">([^<]*)</a>')
scrapedlenguaje = scrapedlenguaje.split(',') calidad = scrapertools.find_single_match(scrapedcalidad, '<a href="[^"]*" rel="[^"]*">([^<]*)</a>')
if not "Adultos" in scrapedgenero and not "Adultos" in scrapedlenguaje and not "Adultos" in scrapedcalidad: generos = scrapertools.find_multiple_matches(scrapedgenero, '<a href="[^"]*" rel="[^"]*">([^<]*)</a>')
scrapedtitle = scrapedtitle
titulo = '%s [%s][%s]' % (scrapedtitle, ','.join([a[:3] for a in audios]), calidad)
if 'Adultos' not in generos or __adult_mode__ != 0:
itemlist.append(Item(channel=item.channel, itemlist.append(Item(channel=item.channel,
title=scrapedtitle, action="findvideos", url=scrapedurl,
url=scrapedurl, title=titulo, contentTitle=scrapedtitle,
action="findvideos",
thumbnail=scrapedthumbnail, thumbnail=scrapedthumbnail,
fanart="http://s18.postimg.cc/h9kb22mnt/pdkfanart.jpg", library=True, folder=True, language=audios,
language=scrapedlenguaje, quality=calidad,
quality=scrapedcalidad,
contentTitle = scrapedtitle,
infoLabels={'year':year} infoLabels={'year':year}
)) ))
tmdb.set_infoLabels(itemlist) tmdb.set_infoLabels(itemlist)
## Paginación
next_page = scrapertools.get_match(data, '<span class="current">.*?<a href="(.*?)".*?>Siguiente &raquo;</a></div>') # Paginación
itemlist.append(Item(channel=item.channel, action="peliculas", title="[COLOR red]siguiente>>[/COLOR]", url=next_page, url_next_page = scrapertools.find_single_match(data,'<a href="([^"]*)">Siguiente &raquo;</a>')
thumbnail="http://s6.postimg.cc/uej03x4r5/bricoflecha.png", if url_next_page:
fanart="http://s18.postimg.cc/h9kb22mnt/pdkfanart.jpg", folder=True)) itemlist.append(item.clone(title="Siguiente >>", url=url_next_page))
return itemlist return itemlist
def findvideos(item): def findvideos(item):
logger.info() logger.info()
itemlist = [] itemlist = []
data = httptools.downloadpage(item.url).data data = httptools.downloadpage(item.url).data
data = re.sub(r"<!--.*?-->", "", data)
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;", "", data) patron = '<li><a href="#(tab\d+)"><span class="re">\d<\/span><span class="([^"]+)"><\/span><span class=.*?>([^<]+)<\/span>'
bloque_tab = scrapertools.find_single_match(data, '<div id="verpelicula">(.*?)<div class="tab_container">') check = re.compile(patron, re.DOTALL).findall(data)
patron = '<li><a href="#([^<]+)"><span class="re">\d<\/span><span class="([^<]+)"><\/span><span class=.*?>([^<]+)<\/span>' if not check:
check = re.compile(patron, re.DOTALL).findall(bloque_tab) patron = '<li><a href="#(tab\d+)">'
servers_data_list = [] check = re.compile(patron, re.DOTALL).findall(data)
patron = '<div id="(tab\d+)" class="tab_content"><script type="text/rocketscript">(\w+)\("([^"]+)"\)</script></div>' for i, valor in enumerate(check):
check[i] = [valor, '', '']
patron = '<div id="(tab\d+)" class="tab_content">(.*?)</div>'
matches = re.compile(patron, re.DOTALL).findall(data) matches = re.compile(patron, re.DOTALL).findall(data)
if len(matches) == 0:
patron = '<div id="(tab\d+)" class="tab_content"><script>(\w+)\("([^"]+)"\)</script></div>' servers_data_list = []
matches = re.compile(patron, re.DOTALL).findall(data) for i, match in enumerate(matches):
for check_tab, server, id in matches: if match[0] == check[i][0]:
if check_tab in str(check): if '<iframe' in match[1]:
idioma, calidad = scrapertools.find_single_match(str(check), "" + check_tab + "', '(.*?)', '(.*?)'") src = scrapertools.find_single_match(match[1], ' src="([^"]*)"')
servers_data_list.append([server, id, idioma, calidad]) servers_data_list.append([check[i][1], check[i][2], 'iframe', src]) # idioma, calidad, 'iframe', src
url = host + "/Js/videod.js"
data = httptools.downloadpage(url).data elif '<script' in match[1]:
data = re.sub(r"\n|\r|\t|\s{2}|&nbsp;", "", data) src = scrapertools.find_single_match(match[1], '<script>(.*?)<\/script>')
data = data.replace('<iframe width="100%" height="400" scrolling="no" frameborder="0"', '') if src:
patron = 'function (\w+)\(id\).*?' func, parm = scrapertools.find_single_match(src, '(.*?)\("([^"]*)"\)')
patron += 'data-src="([^"]+)"' servers_data_list.append([check[i][1], check[i][2], func, parm ]) # idioma, calidad, func, parm
matches = scrapertools.find_multiple_matches(data, patron)
for server, url in matches: data = httptools.downloadpage(host + '/Js/videod.js').data
for enlace, id, idioma, calidad in servers_data_list: patron = 'function (\w+)\(id\){(.*?)}'
if server == enlace: matches = re.compile(patron, re.DOTALL).findall(data)
video_url = re.sub(r"embed\-|\-.*?x.*?\.html|u\'|\'\(", "", str(url))
video_url = re.sub(r"'\+codigo\+'", "", video_url) for idioma, calidad, func, parm in servers_data_list:
video_url = video_url.replace('embed//', 'embed/') if func == 'iframe':
video_url = video_url + id title = "Ver en: %s [" + idioma + "][" + calidad + "]"
if "goo.gl" in video_url: itemlist.append(
try: item.clone(title=title, url=parm, action="play",
from unshortenit import unshorten thumbnail=item.category,
url = unshorten(video_url) language=idioma, quality=calidad))
video_url = scrapertools.get_match(str(url), "u'([^']+)'")
except: else:
continue for funcion, contenido in matches:
title = "Ver en: %s [" + idioma + "][" + calidad + "]" if funcion == func:
itemlist.append( if '<script' in contenido: continue
item.clone(title=title, url=video_url, action="play", if '<iframe' in contenido:
thumbnail=item.category, src = scrapertools.find_single_match(contenido, 'src="([^"]*)"')
language=idioma, quality=calidad)) else:
src = scrapertools.find_single_match(contenido, 'href="([^"]*)"')
if "'+codigo+'" not in src: continue
src = src.replace("'+codigo+'", parm)
title = "Ver en: %s [" + idioma + "][" + calidad + "]"
itemlist.append(
item.clone(title=title, url=src, action="play",
thumbnail=item.category,
language=idioma, quality=calidad))
break
tmdb.set_infoLabels(itemlist) tmdb.set_infoLabels(itemlist)
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
if __comprueba_enlaces__: if __comprueba_enlaces__:
itemlist = servertools.check_list_links(itemlist, __comprueba_enlaces_num__) itemlist = servertools.check_list_links(itemlist, __comprueba_enlaces_num__)
if item.library and config.get_videolibrary_support() and len(itemlist) > 0: if item.library and config.get_videolibrary_support() and len(itemlist) > 0:
infoLabels = {'tmdb_id': item.infoLabels['tmdb_id'], infoLabels = {'tmdb_id': item.infoLabels['tmdb_id'],
'title': item.fulltitle} 'title': item.fulltitle}
@@ -195,14 +265,14 @@ def findvideos(item):
action="add_pelicula_to_library", url=item.url, infoLabels=infoLabels, action="add_pelicula_to_library", url=item.url, infoLabels=infoLabels,
text_color="0xFFff6666", text_color="0xFFff6666",
thumbnail='http://imgur.com/0gyYvuC.png')) thumbnail='http://imgur.com/0gyYvuC.png'))
itemlist = filtertools.get_links(itemlist, item, list_language)
autoplay.start(itemlist, item)
return itemlist return itemlist
def play(item):
item.thumbnail = item.contentThumbnail
return [item]
def newest(categoria): def newest(categoria):
logger.info() logger.info()
itemlist = [] itemlist = []