diff --git a/plugin.video.alfa/channels/kbagi.py b/plugin.video.alfa/channels/kbagi.py
index d3fedc41..a43fb282 100644
--- a/plugin.video.alfa/channels/kbagi.py
+++ b/plugin.video.alfa/channels/kbagi.py
@@ -2,12 +2,17 @@
import re
import threading
+import urllib
+import xbmc
+from core import downloadtools
from core import filetools
from core import httptools
+from core import jsontools
from core import scrapertools
from core.item import Item
from platformcode import config, logger
+from platformcode import platformtools
__perfil__ = config.get_setting('perfil', "kbagi")
@@ -26,23 +31,15 @@ adult_content = config.get_setting("adult_content", "kbagi")
def login(pagina):
logger.info()
-
try:
- user = config.get_setting("%suser" % pagina.split(".")[0], "kbagi")
- password = config.get_setting("%spassword" % pagina.split(".")[0], "kbagi")
- if pagina == "kbagi.com":
- if user == "" and password == "":
- return False, "Para ver los enlaces de kbagi es necesario registrarse en kbagi.com"
- elif user == "" or password == "":
- return False, "kbagi: Usuario o contraseña en blanco. Revisa tus credenciales"
- else:
- if user == "" or password == "":
- return False, "DiskoKosmiko: Usuario o contraseña en blanco. Revisa tus credenciales"
-
+ dom = pagina.split(".")[0]
+ user = config.get_setting("%suser" %dom, "kbagi")
+ password = config.get_setting("%spassword" %dom, "kbagi")
+ if not user:
+ return False, "Para ver los enlaces de %s es necesario registrarse en %s" %(dom, pagina)
data = httptools.downloadpage("http://%s" % pagina).data
if re.search(r'(?i)%s' % user, data):
return True, ""
-
token = scrapertools.find_single_match(data, 'name="__RequestVerificationToken".*?value="([^"]+)"')
post = "__RequestVerificationToken=%s&UserName=%s&Password=%s" % (token, user, password)
headers = {'X-Requested-With': 'XMLHttpRequest'}
@@ -64,9 +61,7 @@ def mainlist(item):
logger.info()
itemlist = []
item.text_color = color1
-
logueado, error_message = login("kbagi.com")
-
if not logueado:
itemlist.append(item.clone(title=error_message, action="configuracion", folder=False))
else:
@@ -79,24 +74,25 @@ def mainlist(item):
itemlist.append(item.clone(title=" Búsqueda personalizada", action="filtro",
url="http://kbagi.com/action/SearchFiles"))
itemlist.append(item.clone(title=" Mi cuenta", action="cuenta"))
-
- item.extra = "http://diskokosmiko.mx/"
- itemlist.append(item.clone(title="DiskoKosmiko", action="", text_color=color2))
- itemlist.append(item.clone(title=" Búsqueda", action="search", url="http://diskokosmiko.mx/action/SearchFiles"))
- itemlist.append(item.clone(title=" Colecciones", action="colecciones",
- url="http://diskokosmiko.mx/action/home/MoreNewestCollections?pageNumber=1"))
- itemlist.append(item.clone(title=" Búsqueda personalizada", action="filtro",
- url="http://diskokosmiko.mx/action/SearchFiles"))
- itemlist.append(item.clone(title=" Mi cuenta", action="cuenta"))
- itemlist.append(item.clone(action="", title=""))
-
+ logueado, error_message = login("diskokosmiko.mx")
+ if not logueado:
+ itemlist.append(item.clone(title=error_message, action="configuracion", folder=False))
+ else:
+ item.extra = "http://diskokosmiko.mx/"
+ itemlist.append(item.clone(title="DiskoKosmiko", action="", text_color=color2))
+ itemlist.append(item.clone(title=" Búsqueda", action="search", url="http://diskokosmiko.mx/action/SearchFiles"))
+ itemlist.append(item.clone(title=" Colecciones", action="colecciones",
+ url="http://diskokosmiko.mx/action/home/MoreNewestCollections?pageNumber=1"))
+ itemlist.append(item.clone(title=" Búsqueda personalizada", action="filtro",
+ url="http://diskokosmiko.mx/action/SearchFiles"))
+ itemlist.append(item.clone(title=" Mi cuenta", action="cuenta"))
+ itemlist.append(item.clone(action="", title=""))
folder_thumb = filetools.join(config.get_data_path(), 'thumbs_kbagi')
files = filetools.listdir(folder_thumb)
if files:
itemlist.append(
item.clone(title="Eliminar caché de imágenes (%s)" % len(files), action="delete_cache", text_color="red"))
itemlist.append(item.clone(title="Configuración del canal", action="configuracion", text_color="gold"))
-
return itemlist
@@ -115,7 +111,6 @@ def search(item, texto):
def configuracion(item):
- from platformcode import platformtools
ret = platformtools.show_channel_settings()
platformtools.itemlist_refresh()
return ret
@@ -124,12 +119,10 @@ def configuracion(item):
def listado(item):
logger.info()
itemlist = []
-
data_thumb = httptools.downloadpage(item.url, item.post.replace("Mode=List", "Mode=Gallery")).data
if not item.post:
data_thumb = ""
item.url = item.url.replace("/gallery,", "/list,")
-
data = httptools.downloadpage(item.url, item.post).data
data = re.sub(r"\n|\r|\t|\s{2}| |
", "", data)
@@ -153,12 +146,10 @@ def listado(item):
scrapedthumbnail = filetools.join(folder, "%s.jpg" % url_thumb.split("e=", 1)[1][-20:])
except:
scrapedthumbnail = ""
-
if scrapedthumbnail:
t = threading.Thread(target=download_thumb, args=[scrapedthumbnail, url_thumb])
t.setDaemon(True)
t.start()
-
else:
scrapedthumbnail = item.extra + "/img/file_types/gallery/movie.png"
scrapedurl = item.extra + scrapedurl
@@ -168,7 +159,6 @@ def listado(item):
plot = scrapertools.find_single_match(block, '
(.*?)
' matches = scrapertools.find_multiple_matches(content, patron) - index = "" if item.index and item.index != "0": matches = matches[item.index:item.index + 20] @@ -262,7 +241,6 @@ def colecciones(item): elif len(matches) > 20: matches = matches[:20] index = 20 - folder = filetools.join(config.get_data_path(), 'thumbs_kbagi') for url, scrapedtitle, thumb, info in matches: url = item.extra + url + "/gallery,1,1?ref=pager" @@ -285,13 +263,11 @@ def colecciones(item): itemlist.append(Item(channel=item.channel, action="listado", title=title, url=url, thumbnail=scrapedthumbnail, text_color=color2, extra=item.extra, foldername=scrapedtitle)) - if not usuario and data.get("NextPageUrl"): url = item.extra + data["NextPageUrl"] itemlist.append(item.clone(title=">> Página Siguiente", url=url, text_color="")) elif index: itemlist.append(item.clone(title=">> Página Siguiente", url=item.url, index=index, text_color="")) - return itemlist @@ -302,15 +278,12 @@ def seguir(item): if "Dejar" in item.title: message = "La colección ya no se sigue" if data.sucess and config.get_platform() != "plex": - from platformcode import platformtools platformtools.dialog_notification("Acción correcta", message) def cuenta(item): logger.info() - import urllib itemlist = [] - web = "kbagi" if "diskokosmiko" in item.extra: web = "diskokosmiko" @@ -318,7 +291,6 @@ def cuenta(item): if not logueado: itemlist.append(item.clone(title=error_message, action="configuracion", folder=False)) return itemlist - user = config.get_setting("%suser" % web, "kbagi") user = unicode(user, "utf8").lower().encode("utf8") url = item.extra + "/" + urllib.quote(user) @@ -336,16 +308,13 @@ def cuenta(item): text_color=color5, follow=True)) else: itemlist.append(item.clone(action="", title="No sigues ninguna colección", text_color=color4)) - return itemlist def filtro(item): logger.info() - list_controls = [] valores = {} - dict_values = None list_controls.append({'id': 'search', 'label': 'Texto a buscar', 'enabled': True, 'color': '0xFFC52020', 'type': 'text', 'default': '', 'visible': True}) @@ -353,14 +322,12 @@ def filtro(item): 'type': 'list', 'default': -1, 'visible': True}) list_controls[1]['lvalues'] = ['Aplicación', 'Archivo', 'Documento', 'Imagen', 'Música', 'Vídeo', 'Todos'] valores['tipo'] = ['Application', 'Archive', 'Document', 'Image', 'Music', 'Video', ''] - list_controls.append({'id': 'ext', 'label': 'Extensión', 'enabled': True, 'color': '0xFFF4FA58', 'type': 'text', 'default': '', 'visible': True}) list_controls.append({'id': 'tmin', 'label': 'Tamaño mínimo (MB)', 'enabled': True, 'color': '0xFFCC2EFA', 'type': 'text', 'default': '0', 'visible': True}) list_controls.append({'id': 'tmax', 'label': 'Tamaño máximo (MB)', 'enabled': True, 'color': '0xFF2ECCFA', 'type': 'text', 'default': '0', 'visible': True}) - # Se utilizan los valores por defecto/guardados web = "kbagi" if "diskokosmiko" in item.extra: @@ -369,7 +336,6 @@ def filtro(item): if valores_guardados: dict_values = valores_guardados item.valores = valores - from platformcode import platformtools return platformtools.show_channel_settings(list_controls=list_controls, dict_values=dict_values, caption="Filtra la búsqueda", item=item, callback='filtrado') @@ -381,18 +347,15 @@ def filtrado(item, values): web = "diskokosmiko" # Guarda el filtro para que sea el que se cargue por defecto config.set_setting("filtro_defecto_" + web, values_copy, item.channel) - tipo = item.valores["tipo"][values["tipo"]] search = values["search"] ext = values["ext"] tmin = values["tmin"] tmax = values["tmax"] - if not tmin.isdigit(): tmin = "0" if not tmax.isdigit(): tmax = "0" - item.valores = "" item.post = "Mode=List&Type=%s&Phrase=%s&SizeFrom=%s&SizeTo=%s&Extension=%s&ref=pager&pageNumber=1" \ % (tipo, search, tmin, tmax, ext) @@ -401,18 +364,14 @@ def filtrado(item, values): def download_thumb(filename, url): - from core import downloadtools - lock = threading.Lock() lock.acquire() folder = filetools.join(config.get_data_path(), 'thumbs_kbagi') if not filetools.exists(folder): filetools.mkdir(folder) lock.release() - if not filetools.exists(filename): downloadtools.downloadfile(url, filename, silent=True) - return filename @@ -420,5 +379,4 @@ def delete_cache(url): folder = filetools.join(config.get_data_path(), 'thumbs_kbagi') filetools.rmdirtree(folder) if config.is_xbmc(): - import xbmc xbmc.executebuiltin("Container.Refresh") diff --git a/plugin.video.alfa/channels/mejortorrent.json b/plugin.video.alfa/channels/mejortorrent.json index a64f06e1..49621d31 100755 --- a/plugin.video.alfa/channels/mejortorrent.json +++ b/plugin.video.alfa/channels/mejortorrent.json @@ -28,6 +28,14 @@ "default": true, "enabled": true, "visible": true + }, + { + "id": "include_in_newest_documentales", + "type": "bool", + "label": "Incluir en Novedades - Documentales", + "default": true, + "enabled": true, + "visible": true } ] } \ No newline at end of file diff --git a/plugin.video.alfa/channels/mejortorrent.py b/plugin.video.alfa/channels/mejortorrent.py index c31662f6..424c122c 100755 --- a/plugin.video.alfa/channels/mejortorrent.py +++ b/plugin.video.alfa/channels/mejortorrent.py @@ -8,13 +8,13 @@ import urlparse from channelselector import get_thumb from core import httptools from core import scrapertools +from core import servertools from core.item import Item -from core.tmdb import Tmdb -from platformcode import logger +from platformcode import config, logger +from core import tmdb host = "http://www.mejortorrent.com" - def mainlist(item): logger.info() @@ -28,48 +28,889 @@ def mainlist(item): thumb_docus = get_thumb("channels_documentary.png") thumb_buscar = get_thumb("search.png") - itemlist.append(Item(channel=item.channel, title="Peliculas", action="getlist", + itemlist.append(Item(channel=item.channel, title="Novedades", action="listado_busqueda", extra="novedades", tipo=False, + url= host + "/secciones.php?sec=ultimos_torrents", thumbnail=thumb_buscar)) + itemlist.append(Item(channel=item.channel, title="Peliculas", action="listado", extra="peliculas", tipo=False, url= host + "/torrents-de-peliculas.html", thumbnail=thumb_pelis)) - itemlist.append(Item(channel=item.channel, title="Peliculas HD", action="getlist", + itemlist.append(Item(channel=item.channel, title="Peliculas HD", action="listado", extra="peliculas", tipo=False, url= host + "/torrents-de-peliculas-hd-alta-definicion.html", thumbnail=thumb_pelis_hd)) - itemlist.append(Item(channel=item.channel, title="Series", action="getlist", + itemlist.append(Item(channel=item.channel, title="Películas Listado Alfabetico", action="alfabeto", + url= host + "/peliculas-buscador.html" + + "?campo=letra&valor&valor2=Acci%%F3n&valor3=%s&valor4=3&submit=Buscar", extra="peliculas", + thumbnail=thumb_pelis)) + itemlist.append(Item(channel=item.channel, title="Series", action="listado", extra="series", tipo=False, url= host + "/torrents-de-series.html", thumbnail=thumb_series)) - itemlist.append(Item(channel=item.channel, title="Series HD", action="getlist", + itemlist.append(Item(channel=item.channel, title="Series Listado Alfabetico", action="alfabeto", extra="series", + url= host + "/torrents-de-series.html", thumbnail=thumb_series_az)) + itemlist.append(Item(channel=item.channel, title="Series HD", action="listado", extra="series", tipo=False, url= host + "/torrents-de-series-hd-alta-definicion.html", thumbnail=thumb_series_hd)) - itemlist.append(Item(channel=item.channel, title="Series Listado Alfabetico", action="listalfabetico", - url= host + "/torrents-de-series.html", thumbnail=thumb_series_az)) - #itemlist.append(Item(channel=item.channel, title="Documentales", action="getlist", - # url= host + "/torrents-de-documentales.html", thumbnail=thumb_docus)) - itemlist.append(Item(channel=item.channel, title="Buscar...", action="search", thumbnail=thumb_buscar)) + itemlist.append(Item(channel=item.channel, title="Series HD Listado Alfabetico", action="alfabeto", extra="series-hd", + url= host + "/torrents-de-series-hd-alta-definicion.html", thumbnail=thumb_series_az)) + itemlist.append(Item(channel=item.channel, title="Documentales", action="listado", extra="documentales", tipo=False, + url= host + "/torrents-de-documentales.html", thumbnail=thumb_docus)) + itemlist.append(Item(channel=item.channel, title="Documentales Listado Alfabetico", action="alfabeto", extra="documentales", url= host + "/torrents-de-documentales.html", thumbnail=thumb_docus)) + itemlist.append(Item(channel=item.channel, title="Buscar...", action="search", thumbnail=thumb_buscar, tipo=False)) return itemlist -def listalfabetico(item): +def alfabeto(item): logger.info() - itemlist = [] - for letra in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', - 'U', 'V', 'W', 'X', 'Y', 'Z']: - itemlist.append(Item(channel=item.channel, action="getlist", title=letra, - url= host + "/series-letra-" + letra.lower() + ".html")) + if item.extra == "series-hd": + itemlist.append(Item(channel=item.channel, action="listado", title="Todas", extra="series", tipo=True, + url= host + "/secciones.php?sec=descargas&ap=series_hd&func=mostrar&letra=.")) + for letra in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']: + itemlist.append(Item(channel=item.channel, action="listado", title=letra, extra="series", tipo=True, + url= host + "/secciones.php?sec=descargas&ap=series_hd&func=mostrar&letra=" + letra.lower())) - itemlist.append(Item(channel=item.channel, action="getlist", title="Todas", - url= host + "/series-letra..html")) + elif item.extra == "series" or item.extra == "documentales": + itemlist.append(Item(channel=item.channel, action="listado", title="Todas", extra=item.extra, tipo=True, url= host + "/" + item.extra + "-letra-..html")) + for letra in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']: + itemlist.append(Item(channel=item.channel, action="listado", title=letra, extra=item.extra, tipo=True, url= host + "/" + item.extra + "-letra-" + letra.lower() + ".html")) + + elif item.extra == "peliculas": + itemlist.append(Item(channel=item.channel, action="listado", title="Todas", extra=item.extra, tipo=True, url=item.url % ".")) + for letra in ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']: + itemlist.append(Item(channel=item.channel, action="listado", title=letra, extra=item.extra, tipo=True, url=item.url % letra.lower())) return itemlist +def listado(item): + logger.info() + itemlist = [] + url_next_page ='' # Controlde paginación + cnt_tot = 30 # Poner el num. máximo de items por página + + if item.category: + del item.category + if item.totalItems: + del item.totalItems + + # La url de Películas por orden Alfabético tiene un formato distinto + if item.extra == "peliculas" and item.tipo: + url = item.url.split("?") + data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(url[0], post=url[1]).data) + else: + data = re.sub(r"\n|\r|\t|\s{2}|()", "", httptools.downloadpage(item.url).data) + + # En este canal las url's y los títulos tienen diferente formato dependiendo del contenido + if item.extra == "peliculas" and item.tipo: #Desde Lista Alfabética + patron = "' + patron_enlace = "/peli-descargar-torrent-\d+-(.*?)\.html" + patron_title = '([^<]+)(\s*([^>]+))?' + item.action = "findvideos" + item.contentType = "movie" + pag = True #Sí hay paginación + elif item.extra == "series" and item.tipo: + patron = "()" + patron_enlace = "\/serie-descargar-torrent*.-\d+-?\d+-(.*?)\.html" + patron_title = "([^<]+)<\/a>(\s*([^>]+)<\/b>)?" + patron_title_ep = "\/serie-descargar-torrent*.-\d+-?\d+-(.*?)-\d+x\d+.*?\.html" + patron_title_se = "\/serie-descargar-torrent*.-\d+-?\d+-(.*?)-\d+-Temp.*?\.html" + item.action = "episodios" + item.contentType = "season" + pag = False + elif item.extra == "series" and not item.tipo: + patron = '?' + patron += '