Compare commits
124 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99dfa2be58 | ||
|
|
39e711b3cb | ||
|
|
2d8d2b3baf | ||
|
|
82d126c3e1 | ||
|
|
8d41fd1c64 | ||
|
|
a8c2f409eb | ||
|
|
7b2a3c2181 | ||
|
|
9e6729f0be | ||
|
|
241e644dcf | ||
|
|
ae318721ab | ||
|
|
8328610ffa | ||
|
|
19101b5310 | ||
|
|
22827e0f7e | ||
|
|
1747c9795d | ||
|
|
f3effe9a7f | ||
|
|
0621b1fa91 | ||
|
|
16473764c9 | ||
|
|
6b1727a0b8 | ||
|
|
11fceffd14 | ||
|
|
3a49b8a442 | ||
|
|
162772e9dc | ||
|
|
60d61f861b | ||
|
|
cd1c7b692a | ||
|
|
10abe4a6d4 | ||
|
|
b0fa5e8a75 | ||
|
|
54d6a943f5 | ||
|
|
44df5b6036 | ||
|
|
ae67d9b5ee | ||
|
|
895d14760d | ||
|
|
b0b4b218f0 | ||
|
|
348787ae97 | ||
|
|
0f7c11efad | ||
|
|
ae7a4a8d83 | ||
|
|
fc58c717eb | ||
|
|
b3a19f3d20 | ||
|
|
0cac09eef5 | ||
|
|
9a1effbe25 | ||
|
|
44145660d0 | ||
|
|
aec2674316 | ||
|
|
09de611aae | ||
|
|
74598154c2 | ||
|
|
7ab9c8bb29 | ||
|
|
14178974a0 | ||
|
|
c43162cbc2 | ||
|
|
aa76986a51 | ||
|
|
357be3f648 | ||
|
|
609f3f6ebc | ||
|
|
e0ce83f2f1 | ||
|
|
a7d3294ba3 | ||
|
|
338409ca3b | ||
|
|
dfea08ffee | ||
|
|
c32dfcc476 | ||
|
|
f3e818dd29 | ||
|
|
4dfcdb11d3 | ||
|
|
863b9a5c3e | ||
|
|
26c2b26034 | ||
|
|
a56513b5df | ||
|
|
f5a7f6383c | ||
|
|
df62398c64 | ||
|
|
9aae0e7a1b | ||
|
|
e1fe886602 | ||
|
|
19812c83a9 | ||
|
|
cabc2458e3 | ||
|
|
336376ecef | ||
|
|
195e393e31 | ||
|
|
af06269e39 | ||
|
|
f37d18ee0a | ||
|
|
6fefc3b048 | ||
|
|
d1630a3c3d | ||
|
|
ab5fe41403 | ||
|
|
15463ea0f8 | ||
|
|
e348c26d9e | ||
|
|
badf40573c | ||
|
|
c80793e3e0 | ||
|
|
cbc0ff0bd0 | ||
|
|
d8889b1592 | ||
|
|
410d947e4b | ||
|
|
a1339a5545 | ||
|
|
a7e18ef813 | ||
|
|
15e06d4386 | ||
|
|
574279c2da | ||
|
|
2a1c1fb081 | ||
|
|
df1fbe3b47 | ||
|
|
52344e42cc | ||
|
|
d725443479 | ||
|
|
c70f107ff1 | ||
|
|
f29911cd52 | ||
|
|
90c335df63 | ||
|
|
cfc8b41a5a | ||
|
|
5a332243e0 | ||
|
|
9fc9bc1fd5 | ||
|
|
c91ae53fba | ||
|
|
5f5888a539 | ||
|
|
597fa9a7e0 | ||
|
|
6f0680219f | ||
|
|
b863f0ea20 | ||
|
|
4dcc6395be | ||
|
|
107262cef3 | ||
|
|
b9b1cc6945 | ||
|
|
5fa341950c | ||
|
|
54c818984a | ||
|
|
98b9c73046 | ||
|
|
295af0e9e8 | ||
|
|
d07ae8e62b | ||
|
|
1f2cadb689 | ||
|
|
5ed94e84fc | ||
|
|
5afb770271 | ||
|
|
4aa7ff5bc7 | ||
|
|
6bf0100f41 | ||
|
|
ea8acc1ea1 | ||
|
|
d70b8d95f9 | ||
|
|
915952c85d | ||
|
|
4c7a349db2 | ||
|
|
88d26523cd | ||
|
|
cc4fc8cbde | ||
|
|
5cb64e4b41 | ||
|
|
efa960bcb7 | ||
|
|
f01da0ddcb | ||
|
|
cad7e96441 | ||
|
|
341953539e | ||
|
|
0e7c8d22ef | ||
|
|
e20b32b7e9 | ||
|
|
1cbca62d82 | ||
|
|
5002bf0ca0 |
@@ -1,2 +1,2 @@
|
||||
Debe ejecutar primero el archivo "script.py".
|
||||
Debe ejecutar primero el archivo "script.py", si no lo hizo antes.
|
||||
Una vez realizado el proceso podrá ejecutar como siempre "alfa.py" para iniciar el addon.
|
||||
@@ -12,11 +12,17 @@ import channelselector
|
||||
from controller import Controller
|
||||
from controller import Platformtools
|
||||
from platformcode import config
|
||||
from core import versiontools
|
||||
from core.item import Item
|
||||
from core.tmdb import Tmdb
|
||||
from platformcode import launcher, logger
|
||||
from core import filetools
|
||||
|
||||
# <addon id="plugin.video.alfa" name="Alfa" version="2.3.0" provider-name="Alfa Addon">
|
||||
data = filetools.read(filetools.join(config.get_runtime_path(), "addon.xml"))
|
||||
aux = re.findall('<addon id="plugin.video.alfa" name="Alfa" version="([^"]+)"', data, re.MULTILINE | re.DOTALL)
|
||||
version = "???"
|
||||
if len(aux) > 0:
|
||||
version = aux[0]
|
||||
|
||||
class html(Controller):
|
||||
pattern = re.compile("##")
|
||||
@@ -29,8 +35,8 @@ class html(Controller):
|
||||
if self.handler:
|
||||
self.client_ip = handler.client.getpeername()[0]
|
||||
self.send_message({"action": "connect",
|
||||
"data": {"version": "Alfa %s" % versiontools.get_current_plugin_version_tag(),
|
||||
"date": versiontools.get_current_plugin_date()}})
|
||||
"data": {"version": "Alfa %s" % version,
|
||||
"date": "--/--/----"}})
|
||||
t = threading.Thread(target=launcher.start, name=ID)
|
||||
t.setDaemon(True)
|
||||
t.start()
|
||||
|
||||
@@ -87,33 +87,16 @@ def run(item):
|
||||
if item.action == "mainlist":
|
||||
itemlist = channelselector.getmainlist("banner_")
|
||||
|
||||
# if config.get_setting("check_for_plugin_updates"):
|
||||
# logger.info("channelselector.mainlist Verificar actualizaciones activado")
|
||||
#
|
||||
# from core import updater
|
||||
# try:
|
||||
# version = updater.checkforupdates()
|
||||
#
|
||||
# if version:
|
||||
# platformtools.dialog_ok("Versión " + version + " disponible",
|
||||
# "Ya puedes descargar la nueva versión del plugin\ndesde el listado principal")
|
||||
# itemlist.insert(0, Item(title="Actualizar Alfa a la versión " + version, version=version,
|
||||
# channel="updater", action="update",
|
||||
# thumbnail=os.path.join(config.get_runtime_path(), "resources", "images",
|
||||
# "banner", "thumb_update.png")))
|
||||
# except:
|
||||
# platformtools.dialog_ok("No se puede conectar", "No ha sido posible comprobar",
|
||||
# "si hay actualizaciones")
|
||||
# logger.info("Fallo al verificar la actualización")
|
||||
#
|
||||
# else:
|
||||
# logger.info("Verificar actualizaciones desactivado")
|
||||
|
||||
if item.action == "getchanneltypes":
|
||||
itemlist = channelselector.getchanneltypes("banner_")
|
||||
if item.action == "filterchannels":
|
||||
itemlist = channelselector.filterchannels(item.channel_type, "banner_")
|
||||
|
||||
elif item.action == "script":
|
||||
from core import tmdb
|
||||
if tmdb.drop_bd():
|
||||
platformtools.dialog_notification("Alfa", "caché eliminada", time=2000, sound=False)
|
||||
|
||||
# Todas las demas las intenta ejecturaren el siguiente orden:
|
||||
# 1. En el canal
|
||||
# 2. En el launcher
|
||||
|
||||
@@ -22,14 +22,9 @@
|
||||
<setting id="adult_aux_new_password1" type="text" label="Nueva contraseña:" option="hidden" enable="!eq(-3,)" default=""/>
|
||||
<setting id="adult_aux_new_password2" type="text" label="Confirmar nueva contraseña:" option="hidden" enable="!eq(-1,)" default=""/>
|
||||
|
||||
<!--<setting type="sep"/>-->
|
||||
<!--<setting label="Actualizaciones" type="lsep"/>-->
|
||||
<!--<setting id="plugin_updates_available" type="number" label="Number of updates available" default="0" visible="false"/>-->
|
||||
<!--<setting id="check_for_plugin_updates" type="bool" label="30001" default="true"/>-->
|
||||
<!--<setting id="check_for_channel_updates" type="bool" label="30004" default="true"/>-->
|
||||
</category>
|
||||
|
||||
<!-- Path downloads and subtitles -->
|
||||
<!-- Path downloads -->
|
||||
<category label="30501">
|
||||
<setting type="sep"/>
|
||||
<setting id="downloadpath" type="text" label="30017" default=""/>
|
||||
@@ -41,4 +36,19 @@
|
||||
<setting id="folder_tvshows" type="text" label="Nombre de carpeta para 'Series'" default="SERIES"/>
|
||||
<setting id="folder_movies" type="text" label="Nombre de carpeta para 'Peliculas'" default="CINE"/>
|
||||
</category>
|
||||
|
||||
|
||||
<category label="Otros">
|
||||
<setting label="Info de películas/series en menú contextual" type="lsep"/>
|
||||
<setting id="infoplus" type="bool" label="Mostrar opción Infoplus:" default="true"/>
|
||||
|
||||
<setting type="sep"/>
|
||||
<setting label="TheMovieDB (obtiene datos de las películas o series)" type="lsep"/>
|
||||
<setting id="tmdb_threads" type="labelenum" values="5|10|15|20|25|30" label="Búsquedas simultáneas (puede causar inestabilidad)" default="20"/>
|
||||
<setting id="tmdb_plus_info" type="bool" label="Buscar información extendida (datos de actores) Aumenta el tiempo de búsqueda" default="false"/>
|
||||
<setting id="tmdb_cache" type="bool" label="Usar caché (mejora las búsquedas recurrentes)" default="true"/>
|
||||
<setting id="tmdb_cache_expire" type="enum" lvalues="cada 1 día|cada 7 días|cada 15 días|cada 30 días|No" label="¿Renovar caché?" enable="eq(-1,true)" default="4"/>
|
||||
<!--<setting id="tmdb_clean_db_cache" type="action" label="Pulse para 'Borrar caché' guardada" action="RunPlugin(plugin://plugin.video.alfa/?ew0KICAgICJhY3Rpb24iOiAic2NyaXB0Ig0KfQ==)" />-->
|
||||
</category>
|
||||
|
||||
</settings>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<addon id="plugin.video.alfa" name="Alfa" version="2.2.3" provider-name="Alfa Addon">
|
||||
<addon id="plugin.video.alfa" name="Alfa" version="2.3.3" provider-name="Alfa Addon">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
<import addon="script.module.libtorrent" optional="true"/>
|
||||
@@ -19,13 +19,15 @@
|
||||
</assets>
|
||||
<news>[B]Estos son los cambios para esta versión:[/B]
|
||||
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
|
||||
» animeyt » pelismundo
|
||||
» asialiveaction » animeflv_me
|
||||
» newpct1 » wopelis
|
||||
» gvideo » powvideo
|
||||
¤ arreglos internos
|
||||
[COLOR green]Gracias a [COLOR yellow]Danielr460[/COLOR] y [COLOR yellow]robalo[/COLOR] por su colaboración en esta versión[/COLOR]
|
||||
</news>
|
||||
» serieslan » animemovil
|
||||
» mundiseries » bajui
|
||||
» seriesblanco » descargamix
|
||||
» miradetodo » pelisgratis
|
||||
» tvseriesdk » ultrapeliculashd
|
||||
» gamovideo » flashx
|
||||
» danimados ¤ arreglos internos
|
||||
[COLOR green]Gracias a [COLOR yellow]Danielr460[/COLOR] por su colaboración en esta versión[/COLOR]
|
||||
</news>
|
||||
<description lang="es">Navega con Kodi por páginas web para ver sus videos de manera fácil.</description>
|
||||
<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>
|
||||
|
||||
@@ -6,13 +6,6 @@
|
||||
"language": ["lat"],
|
||||
"thumbnail": "https://s22.postimg.org/irnlwuizh/allcalidad1.png",
|
||||
"banner": "https://s22.postimg.org/9y1athlep/allcalidad2.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "14/07/2017",
|
||||
"description": "Primera version"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"direct"
|
||||
|
||||
@@ -4,29 +4,6 @@
|
||||
"language": ["lat"],
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "24/06/2017",
|
||||
"description": "Url mal escritas"
|
||||
},
|
||||
{
|
||||
"date": "10/06/2017",
|
||||
"description": "Reparado búsqueda de videos"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "16/02/2017",
|
||||
"description": "Añadidas nuevas opciones y servidores"
|
||||
},
|
||||
{
|
||||
"date": "19/03/2016",
|
||||
"description": "Añadido soporte para la videoteca y reparada busqueda global."
|
||||
}
|
||||
],
|
||||
"thumbnail": "http://i.imgur.com/aWCDWtn.png",
|
||||
"banner": "allpeliculas.png",
|
||||
"categories": [
|
||||
|
||||
@@ -35,12 +35,62 @@ def mainlist(item):
|
||||
url= host + "movies/newmovies?page=1", extra1 = 0))
|
||||
itemlist.append(item.clone(title="Por genero", action="generos", fanart="http://i.imgur.com/c3HS8kj.png",
|
||||
url= host + "movies/getGanres"))
|
||||
itemlist.append(item.clone(title="Colecciones", action="colecciones", fanart="http://i.imgur.com/c3HS8kj.png",
|
||||
url= host))
|
||||
itemlist.append(item.clone(title="", action=""))
|
||||
itemlist.append(item.clone(title="Buscar...", action="search"))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def colecciones(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = 'href="(/peliculas[^"]+).*?'
|
||||
patron += 'title_geo"><span>([^<]+).*?'
|
||||
patron += 'title_eng"><span>([^<]+).*?'
|
||||
patron += 'src="([^"]+)'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle, scrapedcantidad, scrapedthumbnail in matches:
|
||||
if scrapedtitle == "LGTB" and config.get_setting("adult_mode") == 0:
|
||||
continue
|
||||
title = scrapedtitle.capitalize() + " (" + scrapedcantidad + ")"
|
||||
itemlist.append(Item(channel = item.channel,
|
||||
action = "listado_colecciones",
|
||||
thumbnail = host + scrapedthumbnail,
|
||||
title = title,
|
||||
url = host + scrapedurl
|
||||
))
|
||||
return itemlist
|
||||
|
||||
|
||||
def listado_colecciones(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data_url = scrapertools.find_single_match(data, "data_url: '([^']+)")
|
||||
post = "page=1"
|
||||
data = httptools.downloadpage(host + data_url, post=post).data
|
||||
patron = 'a href="(/peli[^"]+).*?'
|
||||
patron += 'src="([^"]+).*?'
|
||||
patron += 'class="c_fichas_title">([^<]+).*?'
|
||||
patron += 'Año:.*?href="">([^<]+)'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear in matches:
|
||||
item.infoLabels['year'] = scrapedyear
|
||||
itemlist.append(item.clone(channel = item.channel,
|
||||
action = "findvideos",
|
||||
contentTitle = scrapedtitle,
|
||||
thumbnail = scrapedthumbnail,
|
||||
title = scrapedtitle,
|
||||
url = host + scrapedurl
|
||||
))
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
return itemlist
|
||||
|
||||
|
||||
def generos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
@@ -61,6 +111,9 @@ def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
if "Próximamente" in data:
|
||||
itemlist.append(Item(channel = item.channel, title = "Próximamente"))
|
||||
return itemlist
|
||||
patron = 'data-link="([^"]+).*?'
|
||||
patron += '>([^<]+)'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
@@ -137,7 +190,7 @@ def lista(item):
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
if texto != "":
|
||||
texto = texto.replace(" ", "+")
|
||||
texto = texto.replace(" ", "%20")
|
||||
item.url = host + "/movies/search/" + texto
|
||||
item.extra = "busqueda"
|
||||
try:
|
||||
|
||||
@@ -5,13 +5,6 @@
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"thumbnail": "http://imgur.com/sLaXHvp.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "26/04/2017",
|
||||
"description": "Release"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie"
|
||||
|
||||
@@ -6,25 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "animeflv.png",
|
||||
"banner": "animeflv.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "18/05/2017",
|
||||
"description": "fix ultimos animes, episodios"
|
||||
},
|
||||
{
|
||||
"date": "06/04/2017",
|
||||
"description": "fix ultimos episodios"
|
||||
},
|
||||
{
|
||||
"date": "01/03/2017",
|
||||
"description": "fix nueva web"
|
||||
},
|
||||
{
|
||||
"date": "09/07/2016",
|
||||
"description": "Arreglo viewmode"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"anime"
|
||||
],
|
||||
|
||||
@@ -6,21 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "http://i.imgur.com/x9AdvBx.png",
|
||||
"banner": "http://i.imgur.com/dTZwCPq.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "05/01/2017",
|
||||
"description": "Actualizada url de la opción Novedades. Arreglado un error que impedia que se mostrara un solo resultado al realizar busquedas. Limpieza de código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "nuevo canal"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"anime"
|
||||
],
|
||||
|
||||
@@ -12,14 +12,14 @@ from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
|
||||
CHANNEL_HOST = "http://animeflv.me/"
|
||||
CHANNEL_HOST = "http://animeflv.co"
|
||||
CHANNEL_DEFAULT_HEADERS = [
|
||||
["User-Agent", "Mozilla/5.0"],
|
||||
["Accept-Encoding", "gzip, deflate"],
|
||||
["Referer", CHANNEL_HOST]
|
||||
]
|
||||
|
||||
REGEX_NEXT_PAGE = r"class='current'>\d+?</li><li><a href=\"([^']+?)\""
|
||||
REGEX_NEXT_PAGE = "class='current'>\d+?</li><li><a href='([^']+?)'"
|
||||
REGEX_TITLE = r'(?:bigChar_a" href=.+?>)(.+?)(?:</a>)'
|
||||
REGEX_THUMB = r'src="(http://media.animeflv\.co/uploads/thumbs/[^"]+?)"'
|
||||
REGEX_PLOT = r'<span class="info">Línea de historia:</span><p><span>(.*?)</span>'
|
||||
@@ -61,14 +61,6 @@ def get_cookie_value():
|
||||
header_string = "|User-Agent=Mozilla/5.0&Referer=http://animeflv.co&Cookie=" + \
|
||||
get_cookie_value()
|
||||
|
||||
def __find_next_page(html):
|
||||
"""
|
||||
Busca el enlace a la pagina siguiente
|
||||
"""
|
||||
|
||||
return scrapertools.find_single_match(html, REGEX_NEXT_PAGE)
|
||||
|
||||
|
||||
def __extract_info_from_serie(html):
|
||||
title = scrapertools.find_single_match(html, REGEX_TITLE)
|
||||
title = clean_title(title)
|
||||
@@ -131,15 +123,15 @@ def mainlist(item):
|
||||
itemlist.append(Item(channel=item.channel, action="letras",
|
||||
title="Por orden alfabético"))
|
||||
itemlist.append(Item(channel=item.channel, action="generos", title="Por géneros",
|
||||
url=urlparse.urljoin(CHANNEL_HOST, "ListadeAnime")))
|
||||
url= CHANNEL_HOST + "/ListadeAnime"))
|
||||
itemlist.append(Item(channel=item.channel, action="series", title="Por popularidad",
|
||||
url=urlparse.urljoin(CHANNEL_HOST, "/ListadeAnime/MasVisto")))
|
||||
url=CHANNEL_HOST + "/ListadeAnime/MasVisto"))
|
||||
itemlist.append(Item(channel=item.channel, action="series", title="Novedades",
|
||||
url=urlparse.urljoin(CHANNEL_HOST, "ListadeAnime/Nuevo")))
|
||||
url=CHANNEL_HOST + "/ListadeAnime/Nuevo"))
|
||||
itemlist.append(Item(channel=item.channel, action="series", title="Últimos",
|
||||
url=urlparse.urljoin(CHANNEL_HOST, "ListadeAnime/LatestUpdate")))
|
||||
url=CHANNEL_HOST + "/ListadeAnime/LatestUpdate"))
|
||||
itemlist.append(Item(channel=item.channel, action="search", title="Buscar...",
|
||||
url=urlparse.urljoin(CHANNEL_HOST, "Buscar?s=")))
|
||||
url=CHANNEL_HOST + "/Buscar?s="))
|
||||
|
||||
itemlist = renumbertools.show_option(item.channel, itemlist)
|
||||
|
||||
@@ -148,15 +140,11 @@ def mainlist(item):
|
||||
|
||||
def letras(item):
|
||||
logger.info()
|
||||
|
||||
base_url = 'http://animeflv.co/ListadeAnime?c='
|
||||
|
||||
itemlist = list()
|
||||
itemlist.append(Item(channel=item.channel, action="series", title="#", url=base_url + "#"))
|
||||
|
||||
for letter in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
|
||||
logger.debug("title=[%s], url=[%s], thumbnail=[]" % (letter, base_url + letter))
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="series", title=letter, url=base_url + letter))
|
||||
|
||||
return itemlist
|
||||
@@ -172,8 +160,6 @@ def generos(item):
|
||||
list_genre = re.findall(REGEX_GENERO, html)
|
||||
|
||||
for url, genero in list_genre:
|
||||
logger.debug("title=[%s], url=[%s], thumbnail=[]" % (genero, url))
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="series", title=genero, url=url))
|
||||
|
||||
return itemlist
|
||||
@@ -181,12 +167,9 @@ def generos(item):
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
|
||||
texto = texto.replace(" ", "%20")
|
||||
item.url = "%s%s" % (item.url, texto)
|
||||
|
||||
html = get_url_contents(item.url)
|
||||
|
||||
try:
|
||||
# Se encontro un solo resultado y se redicciono a la página de la serie
|
||||
if html.find('<title>Ver') >= 0:
|
||||
@@ -198,9 +181,6 @@ def search(item, texto):
|
||||
items = []
|
||||
for show in show_list:
|
||||
title, url, thumbnail, plot = show
|
||||
|
||||
logger.debug("title=[%s], url=[%s], thumbnail=[%s]" % (title, url, thumbnail))
|
||||
|
||||
items.append(Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail,
|
||||
plot=plot, show=title, viewmode="movies_with_plot", context=renumbertools.context(item)))
|
||||
except:
|
||||
@@ -214,35 +194,25 @@ def search(item, texto):
|
||||
|
||||
def series(item):
|
||||
logger.info()
|
||||
|
||||
page_html = get_url_contents(item.url)
|
||||
|
||||
show_list = __find_series(page_html)
|
||||
|
||||
items = []
|
||||
for show in show_list:
|
||||
title, url, thumbnail, plot = show
|
||||
|
||||
logger.debug("title=[%s], url=[%s], thumbnail=[%s]" % (title, url, thumbnail))
|
||||
|
||||
items.append(Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail,
|
||||
plot=plot, show=title, viewmode="movies_with_plot", context=renumbertools.context(item)))
|
||||
|
||||
url_next_page = __find_next_page(page_html)
|
||||
|
||||
url_next_page = scrapertools.find_single_match(page_html, REGEX_NEXT_PAGE)
|
||||
if url_next_page:
|
||||
items.append(Item(channel=item.channel, action="series", title=">> Página Siguiente", url=url_next_page))
|
||||
items.append(Item(channel=item.channel, action="series", title=">> Página Siguiente", url= CHANNEL_HOST + url_next_page))
|
||||
|
||||
return items
|
||||
|
||||
|
||||
def episodios(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
html_serie = get_url_contents(item.url)
|
||||
|
||||
info_serie = __extract_info_from_serie(html_serie)
|
||||
if info_serie[3]:
|
||||
plot = info_serie[3]
|
||||
@@ -250,11 +220,9 @@ def episodios(item):
|
||||
plot = ''
|
||||
|
||||
episodes = re.findall(REGEX_EPISODE, html_serie, re.DOTALL)
|
||||
|
||||
es_pelicula = False
|
||||
for url, title, date in episodes:
|
||||
episode = scrapertools.find_single_match(title, r'Episodio (\d+)')
|
||||
|
||||
# El enlace pertenece a un episodio
|
||||
if episode:
|
||||
season = 1
|
||||
@@ -268,9 +236,6 @@ def episodios(item):
|
||||
title = "%s (%s)" % (title, date)
|
||||
item.url = url
|
||||
es_pelicula = True
|
||||
|
||||
logger.debug("title=[%s], url=[%s], thumbnail=[%s]" % (title, url, item.thumbnail))
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=url, thumbnail=item.thumbnail,
|
||||
plot=plot, show=item.show, fulltitle="%s %s" % (item.show, title)))
|
||||
|
||||
@@ -318,7 +283,6 @@ def findvideos(item):
|
||||
videoitem.thumbnail = item.thumbnail
|
||||
|
||||
regex_video_list = r'var part = \[([^\]]+)'
|
||||
|
||||
videos_html = scrapertools.find_single_match(iframe_html, regex_video_list)
|
||||
videos = re.findall('"([^"]+)"', videos_html, re.DOTALL)
|
||||
for quality_id, video_url in enumerate(videos):
|
||||
|
||||
@@ -6,22 +6,9 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "http://i.imgur.com/5nRR9qq.png",
|
||||
"banner": "animeflv_ru.png",
|
||||
"version": 1,
|
||||
"compatible": {
|
||||
"python": "2.7.9"
|
||||
},
|
||||
"changes": {
|
||||
"change": [
|
||||
{
|
||||
"date": "06/04/2017",
|
||||
"description": "fix"
|
||||
},
|
||||
{
|
||||
"date": "01/03/2017",
|
||||
"description": "fix nueva web"
|
||||
}
|
||||
]
|
||||
},
|
||||
"categories": [
|
||||
"anime"
|
||||
],
|
||||
|
||||
@@ -162,27 +162,20 @@ def novedades_anime(item):
|
||||
|
||||
def listado(item):
|
||||
logger.info()
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}|-\s", "", data)
|
||||
# logger.debug("datito %s" % data)
|
||||
|
||||
url_pagination = scrapertools.find_single_match(data, '<li class="current">.*?</li>[\s]<li><a href="([^"]+)">')
|
||||
|
||||
data = scrapertools.find_single_match(data, '</div><div class="full">(.*?)<div class="pagination')
|
||||
|
||||
matches = re.compile('<img.+?src="([^"]+)".+?<a href="([^"]+)">(.*?)</a>.+?'
|
||||
'<div class="full item_info genres_info">(.*?)</div>.+?class="full">(.*?)</p>',
|
||||
re.DOTALL).findall(data)
|
||||
|
||||
itemlist = []
|
||||
|
||||
for thumbnail, url, title, genres, plot in matches:
|
||||
|
||||
title = clean_title(title)
|
||||
url = urlparse.urljoin(HOST, url)
|
||||
thumbnail = urlparse.urljoin(HOST, thumbnail)
|
||||
|
||||
new_item = Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail,
|
||||
fulltitle=title, plot=plot)
|
||||
|
||||
@@ -192,28 +185,22 @@ def listado(item):
|
||||
else:
|
||||
new_item.show = title
|
||||
new_item.context = renumbertools.context(item)
|
||||
|
||||
itemlist.append(new_item)
|
||||
|
||||
if url_pagination:
|
||||
url = urlparse.urljoin(HOST, url_pagination)
|
||||
title = ">> Pagina Siguiente"
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="listado", title=title, url=url))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def episodios(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}|-\s", "", data)
|
||||
|
||||
if item.plot == "":
|
||||
item.plot = scrapertools.find_single_match(data, 'Description[^>]+><p>(.*?)</p>')
|
||||
|
||||
data = scrapertools.find_single_match(data, '<div class="Sect Episodes full">(.*?)</div>')
|
||||
matches = re.compile('<a href="([^"]+)"[^>]+>(.+?)</a', re.DOTALL).findall(data)
|
||||
|
||||
@@ -221,7 +208,6 @@ def episodios(item):
|
||||
title = title.strip()
|
||||
url = urlparse.urljoin(item.url, url)
|
||||
thumbnail = item.thumbnail
|
||||
|
||||
try:
|
||||
episode = int(scrapertools.find_single_match(title, "Episodio (\d+)"))
|
||||
except ValueError:
|
||||
@@ -229,42 +215,36 @@ def episodios(item):
|
||||
episode = 1
|
||||
else:
|
||||
season, episode = renumbertools.numbered_for_tratk(item.channel, item.show, 1, episode)
|
||||
|
||||
title = "%s: %sx%s" % (item.title, season, str(episode).zfill(2))
|
||||
|
||||
itemlist.append(item.clone(action="findvideos", title=title, url=url, thumbnail=thumbnail, fulltitle=title,
|
||||
fanart=thumbnail, contentType="episode"))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
_id = scrapertools.find_single_match(item.url, 'https://animeflv.ru/ver/([^/]+)/')
|
||||
post = "embed_id=%s" % _id
|
||||
data = httptools.downloadpage("https://animeflv.ru/get_video_info", post=post).data
|
||||
dict_data = jsontools.load(data)
|
||||
|
||||
headers = dict()
|
||||
headers["Referer"] = item.url
|
||||
data = httptools.downloadpage("https:" + dict_data["value"], headers=headers).data
|
||||
dict_data = jsontools.load(data)
|
||||
|
||||
list_videos = dict_data["playlist"][0]["sources"]
|
||||
|
||||
if not dict_data:
|
||||
return itemlist
|
||||
list_videos = dict_data["playlist"][0]
|
||||
if isinstance(list_videos, list):
|
||||
for video in list_videos:
|
||||
itemlist.append(Item(channel=item.channel, action="play", url=video["file"], show=re.escape(item.show),
|
||||
title="Ver en calidad [%s]" % video["label"], plot=item.plot, fulltitle=item.title,
|
||||
itemlist.append(Item(channel=item.channel, action="play", url=video["file"],
|
||||
show=re.escape(item.show),
|
||||
title=item.title, plot=item.plot, fulltitle=item.title,
|
||||
thumbnail=item.thumbnail))
|
||||
|
||||
else:
|
||||
for video in list_videos.values():
|
||||
itemlist.append(Item(channel=item.channel, action="play", url=video["file"], show=re.escape(item.show),
|
||||
title="Ver en calidad [%s]" % video["label"], plot=item.plot, fulltitle=item.title,
|
||||
video += "|User-Agent=Mozilla/5.0"
|
||||
itemlist.append(Item(channel=item.channel, action="play", url=video, show=re.escape(item.show),
|
||||
title=item.title, plot=item.plot, fulltitle=item.title,
|
||||
thumbnail=item.thumbnail))
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -6,21 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "animeid.png",
|
||||
"banner": "animeid.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "17/05/2017",
|
||||
"description": "Fix novedades y replace en findvideos"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "04/01/16",
|
||||
"description": "Arreglado problema en findvideos"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"anime"
|
||||
],
|
||||
|
||||
43
plugin.video.alfa/channels/animemovil.json
Normal file
43
plugin.video.alfa/channels/animemovil.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"id": "animemovil",
|
||||
"name": "Animemovil",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "https://s1.postimg.org/92ji7stii7/animemovil1.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"anime"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "modo_grafico",
|
||||
"type": "bool",
|
||||
"label": "Buscar información extra",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "perfil",
|
||||
"type": "list",
|
||||
"label": "Perfil de color",
|
||||
"default": 0,
|
||||
"enabled": true,
|
||||
"visible": true,
|
||||
"lvalues": [
|
||||
"Perfil 3",
|
||||
"Perfil 2",
|
||||
"Perfil 1"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
406
plugin.video.alfa/channels/animemovil.py
Normal file
406
plugin.video.alfa/channels/animemovil.py
Normal file
@@ -0,0 +1,406 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
from channels import renumbertools
|
||||
from core import httptools
|
||||
from core import jsontools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import platformtools, config, logger
|
||||
|
||||
|
||||
__modo_grafico__ = config.get_setting('modo_grafico', 'animemovil')
|
||||
__perfil__ = int(config.get_setting('perfil', "animemovil"))
|
||||
|
||||
# Fijar perfil de color
|
||||
perfil = [['0xFFFFE6CC', '0xFFFFCE9C', '0xFF994D00', '0xFFFE2E2E', '0xFFFFD700'],
|
||||
['0xFFA5F6AF', '0xFF5FDA6D', '0xFF11811E', '0xFFFE2E2E', '0xFFFFD700'],
|
||||
['0xFF58D3F7', '0xFF2E9AFE', '0xFF2E64FE', '0xFFFE2E2E', '0xFFFFD700']]
|
||||
if __perfil__ < 3:
|
||||
color1, color2, color3, color4, color5 = perfil[__perfil__]
|
||||
else:
|
||||
color1 = color2 = color3 = color4 = color5 = ""
|
||||
|
||||
host = "http://animemovil.com"
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="recientes", title="Episodios Recientes", thumbnail=item.thumbnail,
|
||||
url=host, text_color=color1, contentType="tvshow", extra="recientes"))
|
||||
itemlist.append(Item(channel=item.channel, action="listado", title="Animes", thumbnail=item.thumbnail,
|
||||
url="%s/_API/?src=animesRecientes&offset=0" % host, text_color=color1))
|
||||
itemlist.append(Item(channel=item.channel, action="emision", title="En emisión", thumbnail=item.thumbnail,
|
||||
url="%s/anime/emision" % host, text_color=color2, contentType="tvshow"))
|
||||
itemlist.append(Item(channel=item.channel, action="indices", title="Índices", thumbnail=item.thumbnail,
|
||||
text_color=color2))
|
||||
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="search", title="Buscar...",
|
||||
thumbnail=item.thumbnail, text_color=color3))
|
||||
|
||||
itemlist.append(item.clone(title="Configurar canal", action="openconfig", text_color=color5, folder=False))
|
||||
if renumbertools.context:
|
||||
itemlist = renumbertools.show_option(item.channel, itemlist)
|
||||
return itemlist
|
||||
|
||||
|
||||
def openconfig(item):
|
||||
ret = platformtools.show_channel_settings()
|
||||
platformtools.itemlist_refresh()
|
||||
return ret
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
item.url = "%s/?s=%s" % (host, texto.replace(" ", "+"))
|
||||
try:
|
||||
return recientes(item)
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def recientes(item):
|
||||
logger.info()
|
||||
item.contentType = "tvshow"
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
bloque = scrapertools.find_single_match(data, '<ul class="emision"(.*?)</ul>')
|
||||
patron = '<li><a href="([^"]+)" title="([^"]+)".*?src="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(bloque, patron)
|
||||
for url, title, thumb in matches:
|
||||
url = host + url
|
||||
|
||||
try:
|
||||
contentTitle = re.split(r"(?i) \d+ (?:Sub Español|Audio Español|Español Latino)", title)[0]
|
||||
except:
|
||||
contentTitle = ""
|
||||
contentTitle = re.sub(r"(?i) Ova| Especiales| \(Pelicula[s]*\)| \(Película[s]*\)| Sub| Español| Peliculas| Audio| Latino", "", contentTitle)
|
||||
|
||||
tipo = "tvshow"
|
||||
show = contentTitle
|
||||
action = "episodios"
|
||||
context = renumbertools.context(item)
|
||||
if item.extra == "recientes":
|
||||
action = "findvideos"
|
||||
context = ""
|
||||
if not item.extra and (url.endswith("-pelicula/") or url.endswith("-pelicula")):
|
||||
tipo = "movie"
|
||||
show = ""
|
||||
action = "peliculas"
|
||||
if not thumb.startswith("http"):
|
||||
thumb = "http:%s" % thumb
|
||||
action ="findvideos"
|
||||
infoLabels = {'filtro': {"original_language": "ja"}.items()}
|
||||
itemlist.append(item.clone(action=action, title=title, url=url, thumbnail=thumb, text_color=color3,
|
||||
contentTitle=contentTitle, contentSerieName=show, infoLabels=infoLabels,
|
||||
thumb_=thumb, contentType=tipo, context=context))
|
||||
|
||||
try:
|
||||
from core import tmdb
|
||||
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
|
||||
if item.extra and itemlist:
|
||||
for it in itemlist:
|
||||
it.thumbnail = it.thumb_
|
||||
except:
|
||||
pass
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def listado(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = jsontools.load(httptools.downloadpage(item.url).data)
|
||||
|
||||
for it in data.get("items", []):
|
||||
scrapedtitle = it["title"]
|
||||
url = "%s/%s" % (host, it["url"])
|
||||
thumb = "http://img.animemovil.com/w440-h250-c/%s" % it["img"]
|
||||
title = re.sub(r"(?i) Ova| Especiales| \(Pelicula[s]*\)| \(Película[s]*\)| Sub| Español| Peliculas| Audio| Latino", "", scrapedtitle)
|
||||
|
||||
tipo = "tvshow"
|
||||
show = title
|
||||
action = "episodios"
|
||||
if url.endswith("-pelicula/") or url.endswith("-pelicula"):
|
||||
tipo = "movie"
|
||||
show = ""
|
||||
action = "peliculas"
|
||||
|
||||
infoLabels = {'filtro': {"original_language": "ja"}.items()}
|
||||
|
||||
itemlist.append(item.clone(action=action, title=scrapedtitle, url=url, thumbnail=thumb, text_color=color3,
|
||||
contentTitle=title, contentSerieName=show, infoLabels=infoLabels,
|
||||
context=renumbertools.context(item), contentType=tipo))
|
||||
|
||||
|
||||
try:
|
||||
from core import tmdb
|
||||
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
|
||||
if data["buttom"] and itemlist:
|
||||
offset = int(scrapertools.find_single_match(item.url, 'offset=(\d+)')) + 1
|
||||
url = re.sub(r'offset=\d+', 'offset=%s' % offset, item.url)
|
||||
itemlist.append(Item(channel=item.channel, action="listado", url=url, title=">> Página Siguiente",
|
||||
thumbnail=item.thumbnail, text_color=color2))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def indices(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
if "Índices" in item.title:
|
||||
itemlist.append(item.clone(title="Por Género", url="%s/anime/generos/" % host))
|
||||
itemlist.append(item.clone(title="Por Letra", url="%s/anime/" % host))
|
||||
itemlist.append(item.clone(action="completo", title="Lista completa de Animes",
|
||||
url="%s/anime/lista/" % host))
|
||||
else:
|
||||
data = httptools.downloadpage(item.url).data
|
||||
bloque = scrapertools.find_single_match(data, '<div class="letras">(.*?)</div>')
|
||||
|
||||
patron = '<a title="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(bloque, patron)
|
||||
for title in matches:
|
||||
if "Letra" in item.title:
|
||||
url = "%s/_API/?src=animesLetra&offset=0&letra=%s" % (host, title)
|
||||
else:
|
||||
url = "%s/_API/?src=animesGenero&offset=0&genero=%s" % (host, title)
|
||||
itemlist.append(item.clone(action="listado", url=url, title=title))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def completo(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
bloque = scrapertools.find_single_match(data, '<ul class="listadoAnime">(.*?)</ul>')
|
||||
patron = '<li><a href="([^"]+)" title="([^"]+)".*?src="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(bloque, patron)
|
||||
for url, title, thumb in matches:
|
||||
url = host + url
|
||||
scrapedtitle = title
|
||||
thumb = thumb.replace("s90-c", "w440-h250-c")
|
||||
title = re.sub(r"(?i) Ova| Especiales| \(Pelicula[s]*\)| \(Película[s]*\)| Sub Español| Peliculas", "", scrapedtitle)
|
||||
|
||||
tipo = "tvshow"
|
||||
show = title
|
||||
action = "episodios"
|
||||
if url.endswith("-pelicula/") or url.endswith("-pelicula"):
|
||||
tipo = "movie"
|
||||
show = ""
|
||||
action = "peliculas"
|
||||
infoLabels = {'filtro': {"original_language": "ja"}.items()}
|
||||
itemlist.append(Item(channel=item.channel, action=action, title=scrapedtitle, url=url, thumbnail=thumb,
|
||||
text_color=color3, contentTitle=title, contentSerieName=show, extra="completo",
|
||||
context=renumbertools.context(item), contentType=tipo, infoLabels=infoLabels))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def episodios(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
show = scrapertools.find_single_match(data, '<title>\s*([^<]+)\s*</title>')
|
||||
show = re.sub(r"(?i) Ova| Especiales| \(Pelicula[s]*\)| \(Película[s]*\)| Sub| Español| Peliculas| Audio| Latino", "", show)
|
||||
|
||||
if not item.infoLabels["plot"]:
|
||||
item.infoLabels["plot"] = scrapertools.find_single_match(data, '<div class="InfoSipnosis">.*?<p>(.*?)</p>')
|
||||
|
||||
bloque = scrapertools.find_single_match(data, 'ul class="lista"(.*?)</ul>')
|
||||
matches = scrapertools.find_multiple_matches(bloque, '<li><a href="([^"]+)" title="([^"]+)"')
|
||||
for url, title in matches:
|
||||
url = host + url
|
||||
epi = scrapertools.find_single_match(title, '(?i)%s.*? (\d+) (?:Sub|Audio|Español)' % item.contentSerieName)
|
||||
new_item = item.clone(action="findvideos", url=url, title=title, extra="")
|
||||
if epi:
|
||||
season, episode = renumbertools.numbered_for_tratk(
|
||||
item.channel, show, 1, int(epi))
|
||||
new_item.infoLabels["episode"] = episode
|
||||
new_item.infoLabels["season"] = season
|
||||
|
||||
new_item.title = "%sx%s %s" % (season, episode, title)
|
||||
itemlist.append(new_item)
|
||||
|
||||
if item.infoLabels.get("tmdb_id") or item.extra == "recientes" or item.extra == "completo":
|
||||
try:
|
||||
from core import tmdb
|
||||
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
|
||||
if config.get_videolibrary_support() and itemlist:
|
||||
itemlist.append(Item(channel=item.channel, title="Añadir serie a la videoteca", url=item.url,
|
||||
action="add_serie_to_library", extra="episodios", contentTitle=item.contentTitle,
|
||||
contentSerieName=item.contentSerieName, text_color=color4, fanart=item.fanart,
|
||||
thumbnail=item.thumbnail))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def peliculas(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
if item.extra == "completo":
|
||||
try:
|
||||
from core import tmdb
|
||||
tmdb.set_infoLabels_item(item, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
if not item.infoLabels["plot"]:
|
||||
item.infoLabels["plot"] = scrapertools.find_single_match(data, '<div class="InfoSipnosis">.*?<p>(.*?)</p>')
|
||||
|
||||
bloque = scrapertools.find_single_match(data, 'ul class="lista"(.*?)</ul>')
|
||||
matches = scrapertools.find_multiple_matches(bloque, '<li><a href="([^"]+)" title="([^"]+)"')
|
||||
if len(matches) == 1:
|
||||
item.url = host + matches[0][0]
|
||||
itemlist = findvideos(item)
|
||||
else:
|
||||
for url, title in matches:
|
||||
itemlist.append(item.clone(action="findvideos", title=title, url=url, extra=""))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def emision(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
bloques = scrapertools.find_multiple_matches(data, '<div class="horario">.*?</i>\s*(.*?)</span>(.*?)</ul>')
|
||||
patron = '<li><a href="([^"]+)" title="([^"]+)".*?src="([^"]+)"'
|
||||
for dia, b in bloques:
|
||||
matches = scrapertools.find_multiple_matches(b, patron)
|
||||
if matches:
|
||||
itemlist.append(item.clone(action="", title=dia, text_color=color1))
|
||||
for url, title, thumb in matches:
|
||||
url = host + url
|
||||
scrapedtitle = " %s" % title
|
||||
title = re.sub(r"(?i) Ova| Especiales| \(Pelicula[s]*\)| \(Película[s]*\)| Sub Español| Peliculas", "", title)
|
||||
if not thumb.startswith("http"):
|
||||
thumb = "http:%s" % thumb
|
||||
|
||||
infoLabels = {'filtro': {"original_language": "ja"}.items()}
|
||||
itemlist.append(item.clone(action="episodios", title=scrapedtitle, url=url, thumbnail=thumb, text_color=color3,
|
||||
contentTitle=title, contentSerieName=title, extra="recientes",
|
||||
context=renumbertools.context(item), infoLabels=infoLabels))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
id = scrapertools.find_single_match(data, '"id":"([^"]+)"')
|
||||
bloque = scrapertools.find_single_match(data, 'ul class="controles">(.*?)</ul>')
|
||||
patron = '<li title="([^"]+)" id="[^"]*" host="([^"]+)">'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for title, server in matches:
|
||||
if title == "Vizard":
|
||||
continue
|
||||
title = "%s - %s" % (title, item.title)
|
||||
post = "host=%s&id=%s" % (server, id)
|
||||
itemlist.append(item.clone(action="play", url="http://server-2-stream.animemovil.com/V2/", title=title,
|
||||
post=post))
|
||||
|
||||
downl = scrapertools.find_single_match(data, '<div class="descargarCap">.*?<a href="([^"]+)"')
|
||||
if downl:
|
||||
downl = downl.replace("&", "&")
|
||||
itemlist.append(item.clone(action="play", title="Descarga - %s" % item.title, url=downl, server="directo"))
|
||||
|
||||
if not itemlist:
|
||||
itemlist.append(Item(channel=item.channel, title="No hay vídeos disponibles", action=""))
|
||||
if item.extra == "recientes":
|
||||
url = scrapertools.find_single_match(data, '<a class="CapList".*?href="([^"]+)"')
|
||||
if url:
|
||||
url = host + url
|
||||
itemlist.append(item.clone(action="episodios", title="Ir a lista de capítulos", url=url, text_color=color1))
|
||||
elif item.contentType == "movie" and config.get_library_support():
|
||||
if "No hay vídeos disponibles" not in itemlist[0].title:
|
||||
itemlist.append(Item(channel=item.channel, title="Añadir película a la biblioteca", url=item.url,
|
||||
action="add_pelicula_to_library", contentTitle=item.contentTitle, text_color=color4,
|
||||
thumbnail=item.thumbnail, fanart=item.fanart))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
|
||||
if item.server:
|
||||
return [item]
|
||||
|
||||
itemlist = []
|
||||
|
||||
data = jsontools.load(httptools.downloadpage(item.url, item.post).data)
|
||||
if data["jwplayer"] == False:
|
||||
content = data["eval"]["contenido"]
|
||||
urls = scrapertools.find_multiple_matches(content, 'file\s*:\s*"([^"]+)"')
|
||||
if not urls:
|
||||
urls = scrapertools.find_multiple_matches(content, '"GET","([^"]+)"')
|
||||
for url in urls:
|
||||
if "mediafire" in url:
|
||||
data_mf = httptools.downloadpage(url).data
|
||||
url = scrapertools.find_single_match(data_mf, 'kNO\s*=\s*"([^"]+)"')
|
||||
ext = url[-4:]
|
||||
itemlist.insert(0, ["%s [directo]" % ext, url])
|
||||
else:
|
||||
if data["jwplayer"].get("sources"):
|
||||
for source in data["jwplayer"]["sources"]:
|
||||
label = source.get("label", "")
|
||||
ext = source.get("type", "")
|
||||
if ext and "/" in ext:
|
||||
ext = ".%s " % ext.rsplit("/", 1)[1]
|
||||
url = source.get("file")
|
||||
if "server-3-stream" in url:
|
||||
url = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers.get("location")
|
||||
itemlist.insert(0, ["%s%s [directo]" % (ext, label), url])
|
||||
elif data["jwplayer"].get("file"):
|
||||
label = data["jwplayer"].get("label", "")
|
||||
url = data["jwplayer"]["file"]
|
||||
ext = data["jwplayer"].get("type", "")
|
||||
if ext and "/" in ext:
|
||||
ext = "%s " % ext.rsplit("/", 1)[1]
|
||||
if "server-3-stream" in url:
|
||||
url = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers.get("location")
|
||||
itemlist.insert(0, [".%s%s [directo]" % (ext, label), url])
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def newest(categoria):
|
||||
logger.info()
|
||||
item = Item()
|
||||
try:
|
||||
item.url = "http://skanime.net/"
|
||||
item.extra = "novedades"
|
||||
itemlist = recientes(item)
|
||||
# Se captura la excepción, para no interrumpir al canal novedades si un canal falla
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
return itemlist
|
||||
@@ -6,21 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "https://s21.postimg.org/b43i3ljav/animeshd.png",
|
||||
"banner": "https://s4.postimg.org/lulxulmql/animeshd-banner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "03/06/2017",
|
||||
"description": "limpieza de codigo"
|
||||
},
|
||||
{
|
||||
"date": "25/05/2017",
|
||||
"description": "cambios esteticos"
|
||||
},
|
||||
{
|
||||
"date": "19/05/2017",
|
||||
"description": "First release"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"anime"
|
||||
]
|
||||
|
||||
@@ -5,13 +5,6 @@
|
||||
"adult": false,
|
||||
"language": "es",
|
||||
"thumbnail": "http://i.imgur.com/dHpupFk.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "17/05/2017",
|
||||
"description": "Fix novedades y replace en findvideos"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"anime"
|
||||
],
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "http://i.imgur.com/9Zu5NBc.png",
|
||||
"banner": "http://i.imgur.com/JQSXCaB.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "13/06/2017",
|
||||
"description": "Arreglado problema en nombre de servidores"
|
||||
},
|
||||
{
|
||||
"date": "02/06/2017",
|
||||
"description": "Primera Versión"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"tvshow",
|
||||
"anime"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
@@ -149,34 +149,14 @@ def findvideos(item):
|
||||
for server, quality, url in itemla:
|
||||
if "Calidad Alta" in quality:
|
||||
quality = quality.replace("Calidad Alta", "HQ")
|
||||
server = server.lower().strip()
|
||||
if "ok" == server:
|
||||
server = 'okru'
|
||||
if "netu" == server:
|
||||
continue
|
||||
if " Calidad media - Carga mas rapido" in quality:
|
||||
quality = quality.replace(" Calidad media - Carga mas rapido", "360p")
|
||||
server = server.lower().strip()
|
||||
if "ok" == server:
|
||||
server = 'okru'
|
||||
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)))
|
||||
|
||||
|
||||
autoplay.start(itemlist, item)
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
# Buscamos video por servidor ...
|
||||
devuelve = servertools.findvideosbyserver(item.url, item.server)
|
||||
|
||||
if not devuelve:
|
||||
# ...sino lo encontramos buscamos en todos los servidores disponibles
|
||||
devuelve = servertools.findvideos(item.url, skip=True)
|
||||
|
||||
if devuelve:
|
||||
# logger.debug(devuelve)
|
||||
itemlist.append(Item(channel=item.channel, title=item.contentTitle, action="play", server=devuelve[0][2],
|
||||
url=devuelve[0][1], thumbnail=item.thumbnail))
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -4,21 +4,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"adult": false,
|
||||
"active": true,
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "16/02/2017",
|
||||
"description": "Canal reparado ya que no funcionaban los enlaces"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"banner": "areadocumental.png",
|
||||
"thumbnail": "areadocumental.png",
|
||||
"categories": [
|
||||
|
||||
@@ -1,20 +1,13 @@
|
||||
{
|
||||
"id": "asialiveaction",
|
||||
"name": "Asialiveaction.",
|
||||
"name": "Asialiveaction",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "asialiveaction.png",
|
||||
"banner": "https://imgur.com/B1IOAu4.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "08/10/2017",
|
||||
"description": "Primera versión del canal"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"serie"
|
||||
"tvshow"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ from core import jsontools
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
from platformcode import platformtools
|
||||
from platformcode import launcher
|
||||
|
||||
__channel__ = "autoplay"
|
||||
|
||||
@@ -78,7 +79,20 @@ def start(itemlist, item):
|
||||
:return: intenta autoreproducir, en caso de fallar devuelve el itemlist que recibio en un principio
|
||||
'''
|
||||
logger.info()
|
||||
|
||||
for videoitem in itemlist:
|
||||
#Nos dice de donde viene si del addon o videolibrary
|
||||
if item.contentChannel=='videolibrary':
|
||||
videoitem.contentEpisodeNumber=item.contentEpisodeNumber
|
||||
videoitem.contentPlot=item.contentPlot
|
||||
videoitem.contentSeason=item.contentSeason
|
||||
videoitem.contentSerieName=item.contentSerieName
|
||||
videoitem.contentTitle=item.contentTitle
|
||||
videoitem.contentType=item.contentType
|
||||
videoitem.episode_id=item.episode_id
|
||||
videoitem.hasContentDetails=item.hasContentDetails
|
||||
videoitem.infoLabels=item.infoLabels
|
||||
videoitem.thumbnail=item.thumbnail
|
||||
#videoitem.title=item.title
|
||||
if not config.is_xbmc():
|
||||
#platformtools.dialog_notification('AutoPlay ERROR', 'Sólo disponible para XBMC/Kodi')
|
||||
return itemlist
|
||||
@@ -261,8 +275,12 @@ def start(itemlist, item):
|
||||
else:
|
||||
videoitem = resolved_item[0]
|
||||
|
||||
# si no directamente reproduce
|
||||
platformtools.play_video(videoitem)
|
||||
# si no directamente reproduce y marca como visto
|
||||
from platformcode import xbmc_videolibrary
|
||||
xbmc_videolibrary.mark_auto_as_watched(item)
|
||||
#platformtools.play_video(videoitem)
|
||||
videoitem.contentChannel='videolibrary'
|
||||
launcher.run(videoitem)
|
||||
|
||||
try:
|
||||
if platformtools.is_playing():
|
||||
|
||||
19
plugin.video.alfa/channels/bajui2.json → plugin.video.alfa/channels/bajui.json
Executable file → Normal file
19
plugin.video.alfa/channels/bajui2.json → plugin.video.alfa/channels/bajui.json
Executable file → Normal file
@@ -1,27 +1,12 @@
|
||||
{
|
||||
"id": "bajui2",
|
||||
"name": "Bajui2",
|
||||
"id": "bajui",
|
||||
"name": "Bajui",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"thumbnail": "bajui.png",
|
||||
"banner": "bajui.png",
|
||||
"fanart": "bajui.png",
|
||||
"version": 2,
|
||||
"changes": [
|
||||
{
|
||||
"date": "07/08/2017",
|
||||
"description": "Fix URL HOST changed to Bajui2"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"tvshow",
|
||||
24
plugin.video.alfa/channels/bajui2.py → plugin.video.alfa/channels/bajui.py
Executable file → Normal file
24
plugin.video.alfa/channels/bajui2.py → plugin.video.alfa/channels/bajui.py
Executable file → Normal 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 + ")"
|
||||
|
||||
@@ -6,21 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "beeg.png",
|
||||
"banner": "beeg.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "03/06/2017",
|
||||
"description": "reliminado encoding y soporte multiples calidades"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast"],
|
||||
"thumbnail": "http://s6.postimg.org/6ash180up/bityoulogo.png",
|
||||
"banner": "bityouth.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
|
||||
@@ -5,17 +5,6 @@
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"thumbnail": "http://imgur.com/BePrYmy.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "26/04/2017",
|
||||
"description": "Release"
|
||||
},
|
||||
{
|
||||
"date": "28/06/2017",
|
||||
"description": "Correciones código y mejoras"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast"],
|
||||
"thumbnail": "http://s6.postimg.org/9u8m1ep8x/bricocine.jpg",
|
||||
"banner": "bricocine.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
|
||||
@@ -7,13 +7,6 @@
|
||||
"fanart": "https://raw.githubusercontent.com/Inter95/tvguia/master/thumbnails/canalpelisbg.jpg",
|
||||
"thumbnail": "http://www.canalpelis.com/wp-content/uploads/2016/11/logo_web.gif",
|
||||
"banner": "",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/08/17",
|
||||
"description": "Nuevo Canal"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"tvshow",
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "http://i.imgur.com/gAbPcvT.png?1",
|
||||
"banner": "canalporno.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "09/01/2017",
|
||||
"description": "Primera version."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"adult"
|
||||
]
|
||||
|
||||
@@ -43,7 +43,7 @@ def findvideos(item):
|
||||
for thumbnail, title, url, time in matches:
|
||||
scrapedtitle = time + " - " + title
|
||||
scrapedurl = host + url
|
||||
scrapedthumbnail = "http:" + thumbnail
|
||||
scrapedthumbnail = thumbnail
|
||||
itemlist.append(item.clone(action="play", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail))
|
||||
|
||||
@@ -80,7 +80,7 @@ def play(item):
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
url = "http:" + scrapertools.find_single_match(data, '<source src="([^"]+)"')
|
||||
url = scrapertools.find_single_match(data, '<source src="([^"]+)"')
|
||||
itemlist.append(item.clone(url=url, server="directo"))
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -6,13 +6,6 @@
|
||||
"language": ["lat"],
|
||||
"thumbnail": "http://i.imgur.com/wk6fRDZ.png",
|
||||
"banner": "http://i.imgur.com/115c59F.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "07/06/2017",
|
||||
"description": "Primera version del canal"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"tvshow"
|
||||
]
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
from channels import renumbertools
|
||||
from channelselector import get_thumb
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
@@ -10,6 +9,7 @@ from core import servertools
|
||||
from core import tmdb
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
from channels import autoplay
|
||||
|
||||
host = "http://www.cartoon-latino.com/"
|
||||
from channels import autoplay
|
||||
@@ -33,7 +33,6 @@ def mainlist(item):
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title="Series", url=host,
|
||||
thumbnail=thumb_series))
|
||||
itemlist = renumbertools.show_option(item.channel, itemlist)
|
||||
autoplay.show_option(item.channel, itemlist)
|
||||
|
||||
return itemlist
|
||||
@@ -71,7 +70,7 @@ def lista_gen(item):
|
||||
title = scrapedtitle + " [ " + scrapedlang + "]"
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title=title, url=scrapedurl, thumbnail=scrapedthumbnail, action="episodios",
|
||||
show=scrapedtitle, context=renumbertools.context(item)))
|
||||
show=scrapedtitle))
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
# Paginacion
|
||||
patron_pag = '<a class="nextpostslink" rel="next" href="([^"]+)">'
|
||||
@@ -98,7 +97,7 @@ def lista(item):
|
||||
for link, name in matches:
|
||||
title = name + " [Latino]"
|
||||
url = link
|
||||
context1=[renumbertools.context(item), autoplay.context]
|
||||
context1=[autoplay.context]
|
||||
itemlist.append(
|
||||
item.clone(title=title, url=url, plot=title, action="episodios", show=title,
|
||||
context=context1))
|
||||
@@ -129,42 +128,38 @@ def episodios(item):
|
||||
number = 0
|
||||
ncap = 0
|
||||
A = 1
|
||||
tempo=1
|
||||
for temp, link, name in matches:
|
||||
if A != temp:
|
||||
if A != temp and "Ranma" not in show:
|
||||
number = 0
|
||||
number = number + 1
|
||||
if "Ranma" in show:
|
||||
number = int(temp)
|
||||
temp = str(1)
|
||||
else:
|
||||
number = number + 1
|
||||
if number < 10:
|
||||
capi = "0" + str(number)
|
||||
else:
|
||||
capi = str(number)
|
||||
number,tempo=renumerar_ranma(number,tempo,18+1,1)
|
||||
number,tempo=renumerar_ranma(number,tempo,22+1,2)
|
||||
number,tempo=renumerar_ranma(number,tempo,24+1,3)
|
||||
number,tempo=renumerar_ranma(number,tempo,24+1,4)
|
||||
number,tempo=renumerar_ranma(number,tempo,24+1,5)
|
||||
number,tempo=renumerar_ranma(number,tempo,24+1,6)
|
||||
capi=str(number).zfill(2)
|
||||
if "Ranma" in show:
|
||||
season = 1
|
||||
episode = number
|
||||
season, episode = renumbertools.numbered_for_tratk(
|
||||
item.channel, item.show, season, episode)
|
||||
date = name
|
||||
if episode < 10:
|
||||
capi = "0" + str(episode)
|
||||
else:
|
||||
capi = episode
|
||||
title = str(season) + "x" + str(capi) + " - " + name # "{0}x{1} - ({2})".format(season, episode, date)
|
||||
title = "{0}x{1} - ({2})".format(str(tempo), capi, name)
|
||||
else:
|
||||
title = str(temp) + "x" + capi + " - " + name
|
||||
title = "{0}x{1} - ({2})".format(str(temp), capi, name)
|
||||
url = link
|
||||
A = temp
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos", title=title, url=url, show=show))
|
||||
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0:
|
||||
itemlist.append(Item(channel=item.channel, title="Añadir " + show + " a la videoteca", url=item.url,
|
||||
|
||||
action="add_serie_to_library", extra="episodios", show=show))
|
||||
|
||||
return itemlist
|
||||
|
||||
def renumerar_ranma(number,tempo,final,actual):
|
||||
if number==final and tempo==actual:
|
||||
tempo=tempo+1
|
||||
number=1
|
||||
return number, tempo
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
@@ -190,29 +185,5 @@ def findvideos(item):
|
||||
server1 = server
|
||||
itemlist.append(item.clone(url=url, action="play", server=server1,
|
||||
title="Enlace encontrado en %s " % (server1.capitalize())))
|
||||
|
||||
autoplay.start(itemlist, item)
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
# Buscamos video por servidor ...
|
||||
|
||||
devuelve = servertools.findvideosbyserver(item.url, item.server)
|
||||
|
||||
if not devuelve:
|
||||
# ...sino lo encontramos buscamos en todos los servidores disponibles
|
||||
|
||||
devuelve = servertools.findvideos(item.url, skip=True)
|
||||
|
||||
if devuelve:
|
||||
# logger.debug(devuelve)
|
||||
itemlist.append(Item(channel=item.channel, title=item.contentTitle, action="play", server=devuelve[0][2],
|
||||
|
||||
url=devuelve[0][1], thumbnail=item.thumbnail, folder=False))
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -6,13 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "https://s9.postimg.org/secdb5s8v/ciberdocumentales.png",
|
||||
"banner": "https://s1.postimg.org/sa486z0of/ciberdocumentales_banner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "18/06/2016",
|
||||
"descripcion": "First release"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"documentary"
|
||||
],
|
||||
|
||||
@@ -6,21 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "http://i.imgur.com/5KOU8uy.png?3",
|
||||
"banner": "cineasiaenlinea.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "07/02/17",
|
||||
"description": "Fix bug in newest"
|
||||
},
|
||||
{
|
||||
"date": "09/01/2017",
|
||||
"description": "Primera version"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"vos"
|
||||
|
||||
@@ -6,29 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "https://s31.postimg.org/puxmvsi7v/cinecalidad.png",
|
||||
"banner": "https://s32.postimg.org/kihkdpx1x/banner_cinecalidad.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "01/08/2017",
|
||||
"description": "Cambio de estructura"
|
||||
},
|
||||
{
|
||||
"date": "24/06/2017",
|
||||
"description": "Cambios para autoplay"
|
||||
},
|
||||
{
|
||||
"date": "06/06/2017",
|
||||
"description": "Compatibilidad con AutoPlay"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "18/06/2016",
|
||||
"description": "First release."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
|
||||
@@ -4,27 +4,8 @@
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"version": 1,
|
||||
"thumbnail": "cinefox.png",
|
||||
"banner": "cinefox.png",
|
||||
"changes": [
|
||||
{
|
||||
"date": "01/08/2017",
|
||||
"description": "Agregado servidor gvideo"
|
||||
},
|
||||
{
|
||||
"date": "05/04/2017",
|
||||
"description": "Cambio en los servidores"
|
||||
},
|
||||
{
|
||||
"date": "21/03/2017",
|
||||
"description": "Adaptado a httptools y corregido episodios para videoteca"
|
||||
},
|
||||
{
|
||||
"date": "18/07/2016",
|
||||
"description": "Primera version"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"tvshow",
|
||||
|
||||
@@ -6,21 +6,6 @@
|
||||
"language": ["lat"],
|
||||
"thumbnail": "https://s28.postimg.org/lytn2q1tp/cinefoxtv.png",
|
||||
"banner": "cinefoxtv.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "22/05/2017",
|
||||
"description": "fix por cambio en la estructura"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "09/02/2017",
|
||||
"description": "First release."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
|
||||
@@ -6,13 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "cinehindi.png",
|
||||
"banner": "http://i.imgur.com/cau9TVe.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "25/05/2017",
|
||||
"description": "Primera versión completa del canal"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
]
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "cinetemagay.png",
|
||||
"banner": "cinetemagay.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "05/08/2016",
|
||||
"description": "Eliminado de sección películas"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"adult"
|
||||
]
|
||||
|
||||
@@ -7,25 +7,6 @@
|
||||
"thumbnail": "cinetux.png",
|
||||
"banner": "cinetux.png",
|
||||
"fanart": "cinetux.jpg",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "31/07/2017",
|
||||
"description": "Actualizado por cambio de estructura de la página"
|
||||
},
|
||||
{
|
||||
"date": "12/05/2017",
|
||||
"description": "Arreglada paginación y enlaces directos"
|
||||
},
|
||||
{
|
||||
"date": "16/02/2017",
|
||||
"description": "Adaptado a httptools y añadidos enlaces directos"
|
||||
},
|
||||
{
|
||||
"date": "08/07/2016",
|
||||
"description": "Correciones y adaptaciones a la nueva version"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"direct",
|
||||
"movie"
|
||||
|
||||
@@ -28,9 +28,9 @@ def mainlist(item):
|
||||
itemlist = []
|
||||
item.viewmode = viewmode
|
||||
|
||||
data = httptools.downloadpage(CHANNEL_HOST).data
|
||||
total = scrapertools.find_single_match(data, "TENEMOS\s<b>(.*?)</b>")
|
||||
titulo = "Peliculas (%s)" % total
|
||||
data = httptools.downloadpage(CHANNEL_HOST + "pelicula").data
|
||||
total = scrapertools.find_single_match(data, "Películas</h1><span>(.*?)</span>")
|
||||
titulo = "Peliculas (%s)" %total
|
||||
itemlist.append(item.clone(title=titulo, text_color=color2, action="", text_bold=True))
|
||||
itemlist.append(item.clone(action="peliculas", title=" Novedades", url=CHANNEL_HOST + "pelicula",
|
||||
thumbnail="https://raw.githubusercontent.com/master-1970/resources/master/images/genres"
|
||||
@@ -283,7 +283,7 @@ def bloque_enlaces(data, filtro_idioma, dict_idiomas, type, item):
|
||||
if type == "descarga": t_tipo = "Descargar"
|
||||
data = data.replace("\n", "")
|
||||
if type == "online":
|
||||
patron = '(?is)class="playex.*?visualizaciones'
|
||||
patron = '(?is)class="playex.*?sheader'
|
||||
bloque1 = scrapertools.find_single_match(data, patron)
|
||||
patron = '(?is)#(option-[^"]+).*?png">([^<]+)'
|
||||
match = scrapertools.find_multiple_matches(data, patron)
|
||||
@@ -303,7 +303,7 @@ def bloque_enlaces(data, filtro_idioma, dict_idiomas, type, item):
|
||||
bloque2 = scrapertools.find_single_match(data, '(?s)box_links.*?dt_social_single')
|
||||
bloque2 = bloque2.replace("\t", "").replace("\r", "")
|
||||
patron = '(?s)optn" href="([^"]+)'
|
||||
patron += '.*?title="([^\.]+)'
|
||||
patron += '.*?alt="([^\.]+)'
|
||||
patron += '.*?src.*?src="[^>]+"?/>([^<]+)'
|
||||
patron += '.*?src="[^>]+"?/>([^<]+)'
|
||||
patron += '.*?/span>([^<]+)'
|
||||
|
||||
@@ -6,25 +6,6 @@
|
||||
"language": ["cast"],
|
||||
"thumbnail": "http://i.imgur.com/F7sevVu.jpg?1",
|
||||
"banner": "clasicofilm.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "28/05/2017",
|
||||
"description": "Corregido findvideos"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "07/02/17",
|
||||
"description": "Fix bug in newest"
|
||||
},
|
||||
{
|
||||
"date": "09/01/2017",
|
||||
"description": "Primera version"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
{
|
||||
"id": "crimenes",
|
||||
"name": "Crimenes Imperfectos",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"banner": "crimenes.png",
|
||||
"thumbnail": "crimenes.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "19/06/2017",
|
||||
"description": "correcion xml"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": false,
|
||||
"enabled": false,
|
||||
"visible": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,167 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
import xbmc
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
|
||||
|
||||
# Main list manual
|
||||
|
||||
def listav(item):
|
||||
itemlist = []
|
||||
|
||||
data = scrapertools.cache_page(item.url)
|
||||
|
||||
patronbloque = '<li><div class="yt-lockup.*?<img.*?src="([^"]+)".*?'
|
||||
patronbloque += '<h3 class="yt-lockup-title "><a href="([^"]+)".*?title="([^"]+)".*?'
|
||||
patronbloque += '</a><span class=.*?">(.*?)</span></h3>'
|
||||
matchesbloque = re.compile(patronbloque, re.DOTALL).findall(data)
|
||||
scrapertools.printMatches(matchesbloque)
|
||||
|
||||
scrapedduration = ''
|
||||
for scrapedthumbnail, scrapedurl, scrapedtitle, scrapedduration in matchesbloque:
|
||||
scrapedtitle = '[COLOR white]' + scrapedtitle + '[/COLOR] [COLOR red]' + scrapedduration + '[/COLOR]'
|
||||
url = urlparse.urljoin(item.url, scrapedurl)
|
||||
thumbnail = urlparse.urljoin(item.thumbnail, scrapedthumbnail)
|
||||
xbmc.log("$ " + scrapedurl + " " + scrapedtitle + " " + scrapedthumbnail)
|
||||
itemlist.append(Item(channel=item.channel, action="play", title=scrapedtitle, fulltitle=scrapedtitle, url=url,
|
||||
thumbnail=thumbnail, fanart=thumbnail))
|
||||
|
||||
|
||||
# Paginacion
|
||||
|
||||
patronbloque = '<div class="branded-page-box .*? spf-link ">(.*?)</div>'
|
||||
matches = re.compile(patronbloque, re.DOTALL).findall(data)
|
||||
for bloque in matches:
|
||||
patronvideo = '<a href="([^"]+)"'
|
||||
matchesx = re.compile(patronvideo, re.DOTALL).findall(bloque)
|
||||
for scrapedurl in matchesx:
|
||||
url = urlparse.urljoin(item.url, 'https://www.youtube.com' + scrapedurl)
|
||||
# solo me quedo con el ultimo enlace
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="listav", title="Siguiente pag >>", fulltitle="Siguiente Pag >>", url=url,
|
||||
thumbnail=item.thumbnail, fanart=item.fanart))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def busqueda(item):
|
||||
itemlist = []
|
||||
keyboard = xbmc.Keyboard("", "Busqueda")
|
||||
keyboard.doModal()
|
||||
if (keyboard.isConfirmed()):
|
||||
myurl = keyboard.getText().replace(" ", "+")
|
||||
|
||||
data = scrapertools.cache_page('https://www.youtube.com/results?q=' + myurl)
|
||||
data = data.replace("\n", "").replace("\t", "")
|
||||
data = scrapertools.decodeHtmlentities(data)
|
||||
|
||||
patronbloque = '<li><div class="yt-lockup.*?<img.*?src="([^"]+)".*?'
|
||||
patronbloque += '<h3 class="yt-lockup-title "><a href="([^"]+)".*?title="([^"]+)".*?'
|
||||
patronbloque += '</a><span class=.*?">(.*?)</span></h3>'
|
||||
matchesbloque = re.compile(patronbloque, re.DOTALL).findall(data)
|
||||
scrapertools.printMatches(matchesbloque)
|
||||
|
||||
for scrapedthumbnail, scrapedurl, scrapedtitle, scrapedduracion in matchesbloque:
|
||||
scrapedtitle = scrapedtitle + ' ' + scrapedduracion
|
||||
url = scrapedurl
|
||||
thumbnail = scrapedthumbnail
|
||||
xbmc.log("$ " + scrapedurl + " " + scrapedtitle + " " + scrapedthumbnail)
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="play", title=scrapedtitle, fulltitle=scrapedtitle, url=url,
|
||||
thumbnail=thumbnail, fanart=thumbnail))
|
||||
|
||||
|
||||
# Paginacion
|
||||
|
||||
patronbloque = '<div class="branded-page-box .*? spf-link ">(.*?)</div>'
|
||||
matches = re.compile(patronbloque, re.DOTALL).findall(data)
|
||||
for bloque in matches:
|
||||
patronvideo = '<a href="([^"]+)"'
|
||||
matchesx = re.compile(patronvideo, re.DOTALL).findall(bloque)
|
||||
for scrapedurl in matchesx:
|
||||
url = 'https://www.youtube.com' + scrapedurl
|
||||
# solo me quedo con el ultimo enlace
|
||||
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="listav", title="Siguiente pag >>", fulltitle="Siguiente Pag >>",
|
||||
url=url))
|
||||
return itemlist
|
||||
else:
|
||||
# xbmcgui.Dialog().ok(item.channel, "nada que buscar")
|
||||
# xbmc.executebuiltin("Action(up)")
|
||||
xbmc.executebuiltin("Action(enter)")
|
||||
|
||||
# itemlist.append( Item(channel=item.channel, action="listav", title="<< Volver", fulltitle="Volver" , url="history.back()") )
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
item.url = 'https://www.youtube.com/results?q=crimenes+imperfectos&sp=CAI%253D'
|
||||
scrapedtitle = "[COLOR white]Crimenes [COLOR red]Imperfectos[/COLOR]"
|
||||
item.thumbnail = urlparse.urljoin(item.thumbnail,
|
||||
"https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQ2PcyvcYIg6acvdUZrHGFFk_E3mXK9QSh-5TypP8Rk6zQ6S1yb2g")
|
||||
item.fanart = urlparse.urljoin(item.fanart,
|
||||
"https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQ2PcyvcYIg6acvdUZrHGFFk_E3mXK9QSh-5TypP8Rk6zQ6S1yb2g")
|
||||
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="listav", title=scrapedtitle, fulltitle=scrapedtitle, url=item.url,
|
||||
thumbnail=item.thumbnail, fanart=item.fanart))
|
||||
|
||||
item.url = 'https://www.youtube.com/results?search_query=russian+dash+cam&sp=CAI%253D'
|
||||
scrapedtitle = "[COLOR blue]Russian[/COLOR] [COLOR White]Dash[/COLOR] [COLOR red]Cam[/COLOR]"
|
||||
item.thumbnail = urlparse.urljoin(item.thumbnail, "https://i.ytimg.com/vi/-C6Ftromtig/maxresdefault.jpg")
|
||||
item.fanart = urlparse.urljoin(item.fanart,
|
||||
"https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRQLO-n-kO1ByY8lLhKxz0-cejJD1J7rLge_j0E0Gh9LJ2WtTbSnA")
|
||||
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="listav", title=scrapedtitle, fulltitle=scrapedtitle, url=item.url,
|
||||
thumbnail=item.thumbnail, fanart=item.fanart))
|
||||
|
||||
item.url = 'https://www.youtube.com/results?search_query=cuarto+milenio+programa+completo&sp=CAI%253D'
|
||||
scrapedtitle = "[COLOR green]Cuarto[/COLOR] [COLOR White]Milenio[/COLOR]"
|
||||
item.thumbnail = urlparse.urljoin(item.thumbnail,
|
||||
"http://cuatrostatic-a.akamaihd.net/cuarto-milenio/Cuarto-Milenio-analiza-fantasma-Granada_MDSVID20100924_0063_3.jpg")
|
||||
item.fanart = urlparse.urljoin(item.fanart,
|
||||
"http://cuatrostatic-a.akamaihd.net/cuarto-milenio/programas/temporada-07/t07xp32/fantasma-universidad_MDSVID20120420_0001_3.jpg")
|
||||
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="listav", title=scrapedtitle, fulltitle=scrapedtitle, url=item.url,
|
||||
thumbnail=item.thumbnail, fanart=item.fanart))
|
||||
|
||||
item.url = 'https://www.youtube.com/results?q=milenio+3&sp=CAI%253D'
|
||||
scrapedtitle = "[COLOR green]Milenio[/COLOR] [COLOR White]3- Podcasts[/COLOR]"
|
||||
item.thumbnail = urlparse.urljoin(item.thumbnail,
|
||||
"http://cuatrostatic-a.akamaihd.net/cuarto-milenio/Cuarto-Milenio-analiza-fantasma-Granada_MDSVID20100924_0063_3.jpg")
|
||||
item.fanart = urlparse.urljoin(item.fanart,
|
||||
"http://cuatrostatic-a.akamaihd.net/cuarto-milenio/programas/temporada-07/t07xp32/fantasma-universidad_MDSVID20120420_0001_3.jpg")
|
||||
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="listav", title=scrapedtitle, fulltitle=scrapedtitle, url=item.url,
|
||||
thumbnail=item.thumbnail, fanart=item.fanart))
|
||||
|
||||
scrapedtitle = "[COLOR red]buscar ...[/COLOR]"
|
||||
item.thumbnail = urlparse.urljoin(item.thumbnail,
|
||||
"http://cuatrostatic-a.akamaihd.net/cuarto-milenio/Cuarto-Milenio-analiza-fantasma-Granada_MDSVID20100924_0063_3.jpg")
|
||||
item.fanart = urlparse.urljoin(item.fanart,
|
||||
"http://cuatrostatic-a.akamaihd.net/cuarto-milenio/programas/temporada-07/t07xp32/fantasma-universidad_MDSVID20120420_0001_3.jpg")
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="busqueda", title=scrapedtitle, fulltitle=scrapedtitle,
|
||||
thumbnail=item.thumbnail, fanart=item.fanart))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
logger.info("url=" + item.url)
|
||||
|
||||
itemlist = servertools.find_video_items(data=item.url)
|
||||
|
||||
return itemlist
|
||||
@@ -4,13 +4,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "16/05/2017",
|
||||
"description": "Primera versión"
|
||||
}
|
||||
],
|
||||
"thumbnail": "http://i.imgur.com/O49fDS1.png",
|
||||
"categories": [
|
||||
"anime",
|
||||
|
||||
@@ -4,21 +4,6 @@
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "10/12/2016",
|
||||
"description": "Reparado fanart y thumbs y correción código.Adaptado a Infoplus"
|
||||
},
|
||||
{
|
||||
"date": "04/04/2017",
|
||||
"description": "Migración a Httptools"
|
||||
},
|
||||
{
|
||||
"date": "28/06/2017",
|
||||
"description": "Correciones código.Algunas mejoras"
|
||||
}
|
||||
],
|
||||
"thumbnail": "cuelgame.png",
|
||||
"banner": "cuelgame.png",
|
||||
"categories": [
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "cumlouder.png",
|
||||
"banner": "cumlouder.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "04/05/17",
|
||||
"description": "Corregido, usa proxy en caso de error con https"
|
||||
},
|
||||
{
|
||||
"date": "13/01/17",
|
||||
"description": "First version"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"adult"
|
||||
]
|
||||
|
||||
12
plugin.video.alfa/channels/danimados.json
Normal file
12
plugin.video.alfa/channels/danimados.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"id": "danimados",
|
||||
"name": "Danimados",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["lat"],
|
||||
"thumbnail": "https://imgur.com/kU5Lx1S.png",
|
||||
"banner": "https://imgur.com/xG5xqBq.png",
|
||||
"categories": [
|
||||
"tvshow"
|
||||
]
|
||||
}
|
||||
186
plugin.video.alfa/channels/danimados.py
Normal file
186
plugin.video.alfa/channels/danimados.py
Normal file
@@ -0,0 +1,186 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
from channelselector import get_thumb
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core import tmdb
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
from channels import autoplay
|
||||
|
||||
host = "http://www.danimados.com/"
|
||||
|
||||
list_servers = ['openload',
|
||||
'okru',
|
||||
'rapidvideo'
|
||||
]
|
||||
list_quality = ['default']
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
|
||||
thumb_series = get_thumb("channels_tvshow.png")
|
||||
autoplay.init(item.channel, list_servers, list_quality)
|
||||
|
||||
itemlist = list()
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="mainpage", title="Categorías", url=host,
|
||||
thumbnail=thumb_series))
|
||||
itemlist.append(Item(channel=item.channel, action="mainpage", title="Más Populares", url=host,
|
||||
thumbnail=thumb_series))
|
||||
#itemlist.append(Item(channel=item.channel, action="movies", title="Peliculas Animadas", url=host,
|
||||
# thumbnail=thumb_series))
|
||||
autoplay.show_option(item.channel, itemlist)
|
||||
return itemlist
|
||||
|
||||
|
||||
"""
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ","+")
|
||||
item.url = item.url+texto
|
||||
if texto!='':
|
||||
return lista(item)
|
||||
"""
|
||||
|
||||
|
||||
def mainpage(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
data1 = httptools.downloadpage(item.url).data
|
||||
data1 = re.sub(r"\n|\r|\t|\s{2}| ", "", data1)
|
||||
if item.title=="Más Populares":
|
||||
patron_sec='<a class="lglossary" data-type.+?>(.+?)<\/ul>'
|
||||
patron='<img .+? src="([^"]+)".+?<a href="([^"]+)".+?>([^"]+)<\/a>' #scrapedthumbnail, #scrapedurl, #scrapedtitle
|
||||
if item.title=="Categorías":
|
||||
patron_sec='<ul id="main_header".+?>(.+?)<\/ul><\/div>'
|
||||
patron='<a href="([^"]+)">([^"]+)<\/a>'#scrapedurl, #scrapedtitle
|
||||
|
||||
data = scrapertools.find_single_match(data1, patron_sec)
|
||||
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
if item.title=="Géneros" or item.title=="Categorías":
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
if "Películas Animadas"!=scrapedtitle:
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title=scrapedtitle, url=scrapedurl, action="lista"))
|
||||
return itemlist
|
||||
else:
|
||||
for scraped1, scraped2, scrapedtitle in matches:
|
||||
scrapedthumbnail=scraped1
|
||||
scrapedurl=scraped2
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail, action="episodios",
|
||||
show=scrapedtitle))
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
return itemlist
|
||||
return itemlist
|
||||
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
data_lista = scrapertools.find_single_match(data, '<div class="items">(.+?)<\/div><\/div><div class=.+?>')
|
||||
patron = '<img src="([^"]+)" alt="([^"]+)">.+?<a href="([^"]+)">.+?<div class="texto">(.+?)<\/div>'
|
||||
#scrapedthumbnail,#scrapedtitle, #scrapedurl, #scrapedplot
|
||||
matches = scrapertools.find_multiple_matches(data_lista, patron)
|
||||
for scrapedthumbnail,scrapedtitle, scrapedurl, scrapedplot in matches:
|
||||
itemlist.append(
|
||||
item.clone(title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail,
|
||||
context=autoplay.context,plot=scrapedplot, action="episodios", show=scrapedtitle))
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
return itemlist
|
||||
|
||||
|
||||
def episodios(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
|
||||
data_lista = scrapertools.find_single_match(data,
|
||||
'<ul class="episodios">(.+?)<\/ul><\/div><\/div><\/div>')
|
||||
show = item.title
|
||||
patron_caps = '<img src="([^"]+)"><\/a><\/div><div class=".+?">([^"]+)<\/div>.+?<a .+? href="([^"]+)">([^"]+)<\/a>'
|
||||
#scrapedthumbnail,#scrapedtempepi, #scrapedurl, #scrapedtitle
|
||||
matches = scrapertools.find_multiple_matches(data_lista, patron_caps)
|
||||
for scrapedthumbnail, scrapedtempepi, scrapedurl, scrapedtitle in matches:
|
||||
tempepi=scrapedtempepi.split(" - ")
|
||||
if tempepi[0]=='Pel':
|
||||
tempepi[0]=0
|
||||
title="{0}x{1} - ({2})".format(tempepi[0], tempepi[1].zfill(2), scrapedtitle)
|
||||
itemlist.append(Item(channel=item.channel, thumbnail=scrapedthumbnail,
|
||||
action="findvideos", title=title, url=scrapedurl, show=show))
|
||||
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0:
|
||||
itemlist.append(Item(channel=item.channel, title="[COLOR blue]Añadir " + show + " a la videoteca[/COLOR]", url=item.url,
|
||||
action="add_serie_to_library", extra="episodios", show=show))
|
||||
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
data = scrapertools.find_single_match(data,
|
||||
'<div id="playex" .+?>(.+?)<\/nav><\/div><\/div>')
|
||||
patron='src="(.+?)"'
|
||||
itemla = scrapertools.find_multiple_matches(data,patron)
|
||||
for i in range(len(itemla)):
|
||||
#for url in itemla:
|
||||
url=itemla[i]
|
||||
#verificar existencia del video (testing)
|
||||
codigo=verificar_video(itemla[i])
|
||||
if codigo==200:
|
||||
if "ok.ru" in url:
|
||||
server='okru'
|
||||
else:
|
||||
server=''
|
||||
if "openload" in url:
|
||||
server='openload'
|
||||
if "google" in url:
|
||||
server='gvideo'
|
||||
if "rapidvideo" in url:
|
||||
server='rapidvideo'
|
||||
if "streamango" in url:
|
||||
server='streamango'
|
||||
if server!='':
|
||||
title="Enlace encontrado en %s " % (server.capitalize())
|
||||
else:
|
||||
title="NO DISPONIBLE"
|
||||
if title!="NO DISPONIBLE":
|
||||
itemlist.append(item.clone(title=title,url=url, action="play", server=server))
|
||||
|
||||
autoplay.start(itemlist, item)
|
||||
return itemlist
|
||||
|
||||
|
||||
def verificar_video(url):
|
||||
codigo=httptools.downloadpage(url).code
|
||||
if codigo==200:
|
||||
# Revise de otra forma
|
||||
data=httptools.downloadpage(url).data
|
||||
removed = scrapertools.find_single_match(data,'removed(.+)')
|
||||
if len(removed) != 0:
|
||||
codigo1=404
|
||||
else:
|
||||
codigo1=200
|
||||
else:
|
||||
codigo1=200
|
||||
return codigo1
|
||||
@@ -4,17 +4,6 @@
|
||||
"language": ["*"],
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"changes": [
|
||||
{
|
||||
"date": "28/05/2017",
|
||||
"description": "Reparado por cambios en la página"
|
||||
},
|
||||
{
|
||||
"date": "21/02/2017",
|
||||
"description": "Primera versión"
|
||||
}
|
||||
],
|
||||
"version": 1,
|
||||
"thumbnail": "http://i.imgur.com/tBSWudd.png?1",
|
||||
"banner": "datoporn.png",
|
||||
"categories": [
|
||||
|
||||
@@ -4,17 +4,6 @@
|
||||
"language": ["cast"],
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"banner": "descargacineclasico2.png",
|
||||
"thumbnail": "descargacineclasico2.png",
|
||||
"categories": [
|
||||
|
||||
@@ -3,30 +3,7 @@
|
||||
"name": "DescargasMIX",
|
||||
"language": ["cast", "lat"],
|
||||
"active": true,
|
||||
"version": 1,
|
||||
"adult": false,
|
||||
"changes": [
|
||||
{
|
||||
"date": "06/05/17",
|
||||
"description": "Cambio de dominio"
|
||||
},
|
||||
{
|
||||
"date": "17/04/17",
|
||||
"description": "Mejorado en la deteccion del dominio para futuros cambios"
|
||||
},
|
||||
{
|
||||
"date": "09/04/17",
|
||||
"description": "Arreglado por cambios en la página"
|
||||
},
|
||||
{
|
||||
"date": "27/01/17",
|
||||
"description": "Sección online en películas modificada"
|
||||
},
|
||||
{
|
||||
"date": "08/07/16",
|
||||
"description": "Adaptado el canal a las nuevas funciones"
|
||||
}
|
||||
],
|
||||
"thumbnail": "descargasmix.png",
|
||||
"banner": "descargasmix.png",
|
||||
"categories": [
|
||||
|
||||
@@ -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 = []
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "discoverymx.png",
|
||||
"banner": "discoverymx.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"documentary"
|
||||
]
|
||||
|
||||
@@ -6,29 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "divxatope.png",
|
||||
"banner": "divxatope.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "17/04/17",
|
||||
"description": "Reparados torrents, añadidas nuevas secciones"
|
||||
},
|
||||
{
|
||||
"date": "13/01/17",
|
||||
"description": "Reparados torrents y paginacion. Añadida seccion Peliculas 4K ultraHD"
|
||||
},
|
||||
{
|
||||
"date": "31/12/16",
|
||||
"description": "Adaptado, por cambios en la web"
|
||||
},
|
||||
{
|
||||
"date": "01/07/16",
|
||||
"description": "Eliminado código innecesario."
|
||||
},
|
||||
{
|
||||
"date": "29/04/16",
|
||||
"description": "Adaptar a Buscador global y Novedades Peliculas y Series"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
|
||||
@@ -157,11 +157,10 @@ def lista(item):
|
||||
# logger.info("data="+data)
|
||||
|
||||
bloque = scrapertools.find_single_match(data, '(?:<ul class="pelilist">|<ul class="buscar-list">)(.*?)</ul>')
|
||||
patron = '<li[^<]+'
|
||||
patron += '<a href="([^"]+)".*?'
|
||||
patron += 'src="([^"]+)".*?'
|
||||
patron += '<h2[^>]*>(.*?)</h2.*?'
|
||||
patron += '(?:<strong[^>]*>|<span[^>]*>)(.*?)(?:</strong>|</span>)'
|
||||
patron = '<a href="([^"]+).*?' # la url
|
||||
patron += '<img src="([^"]+)"[^>]+>.*?' # el thumbnail
|
||||
patron += '<h2[^>]*>(.*?)</h2.*?' # el titulo
|
||||
patron += '<span>([^<].*?)<' # la calidad
|
||||
|
||||
matches = re.compile(patron, re.DOTALL).findall(bloque)
|
||||
scrapertools.printMatches(matches)
|
||||
@@ -175,7 +174,7 @@ def lista(item):
|
||||
thumbnail = urlparse.urljoin(item.url, scrapedthumbnail)
|
||||
plot = ""
|
||||
logger.debug("title=[" + title + "], url=[" + url + "], thumbnail=[" + thumbnail + "]")
|
||||
|
||||
year = scrapertools.find_single_match(scrapedthumbnail, r'-(\d{4})')
|
||||
contentTitle = scrapertools.htmlclean(scrapedtitle).strip()
|
||||
patron = '([^<]+)<br>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(calidad + '<br>')
|
||||
@@ -196,7 +195,7 @@ def lista(item):
|
||||
itemlist.append(Item(channel=item.channel, action="episodios", title=title, fulltitle=title, url=url,
|
||||
thumbnail=thumbnail, plot=plot, folder=True, contentTitle=contentTitle,
|
||||
language=idioma, contentSeason=int(temporada),
|
||||
contentEpisodeNumber=int(episodio), contentQuality=calidad))
|
||||
contentEpisodeNumber=int(episodio), quality=calidad))
|
||||
|
||||
else:
|
||||
if len(matches) == 2:
|
||||
@@ -205,7 +204,7 @@ def lista(item):
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos", title=title, fulltitle=title, url=url,
|
||||
thumbnail=thumbnail, plot=plot, folder=True, contentTitle=contentTitle,
|
||||
language=idioma, contentThumbnail=thumbnail, contentQuality=calidad))
|
||||
language=idioma, contentThumbnail=thumbnail, quality=calidad))
|
||||
|
||||
next_page_url = scrapertools.find_single_match(data, '<li><a href="([^"]+)">Next</a></li>')
|
||||
if next_page_url != "":
|
||||
@@ -262,7 +261,7 @@ def findvideos(item):
|
||||
item.plot = scrapertools.htmlclean(item.plot).strip()
|
||||
item.contentPlot = item.plot
|
||||
|
||||
link = scrapertools.find_single_match(data, 'href.*?=.*?"http:\/\/(?:tumejorserie|tumejorjuego).*?link=([^"]+)"')
|
||||
link = scrapertools.find_single_match(data, 'location\.href.*?=.*?"http:\/\/(?:tumejorserie|tumejorjuego).*?link=(.*?)"')
|
||||
if link != "":
|
||||
link = "http://www.divxatope1.com/" + link
|
||||
logger.info("torrent=" + link)
|
||||
@@ -275,14 +274,7 @@ def findvideos(item):
|
||||
patron += '<\/div[^<]+<div class="box4">([^<]+)<\/div[^<]+<div class="box5"><a href=(.*?) rel.*?'
|
||||
patron += '<\/div[^<]+<div class="box6">([^<]+)<'
|
||||
|
||||
#patron = "<div class=\"box1\"[^<]+<img[^<]+</div[^<]+"
|
||||
#patron += '<div class="box2">([^<]+)</div[^<]+'
|
||||
#patron += '<div class="box3">([^<]+)</div[^<]+'
|
||||
#patron += '<div class="box4">([^<]+)</div[^<]+'
|
||||
#patron += '<div class="box5">(.*?)</div[^<]+'
|
||||
#patron += '<div class="box6">([^<]+)<'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
scrapertools.printMatches(matches)
|
||||
|
||||
itemlist_ver = []
|
||||
itemlist_descargar = []
|
||||
@@ -308,11 +300,8 @@ def findvideos(item):
|
||||
else:
|
||||
itemlist_descargar.append(new_item)
|
||||
|
||||
for new_item in itemlist_ver:
|
||||
itemlist.append(new_item)
|
||||
|
||||
for new_item in itemlist_descargar:
|
||||
itemlist.append(new_item)
|
||||
itemlist.extend(itemlist_ver)
|
||||
itemlist.extend(itemlist_descargar)
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -5,17 +5,6 @@
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"thumbnail": "http://imgur.com/Madj03A.jpg",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "26/04/2017",
|
||||
"description": "Release"
|
||||
},
|
||||
{
|
||||
"date": "28/06/2017",
|
||||
"description": "Correciones código por cambios web"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "http://i.imgur.com/qMR9sg9.png",
|
||||
"banner": "documaniatv.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "11/07/2016",
|
||||
"description": "Reparadas cuentas de usuario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"documentary"
|
||||
],
|
||||
|
||||
@@ -5,17 +5,6 @@
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "http://i.imgur.com/fsrnC4m.jpg",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/04/2017",
|
||||
"description": "fix novedades"
|
||||
},
|
||||
{
|
||||
"date": "09/03/2017",
|
||||
"description": "nueva web"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"documentary"
|
||||
],
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "doramastv.png",
|
||||
"banner": "doramastv.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"tvshow"
|
||||
],
|
||||
|
||||
@@ -4,21 +4,6 @@
|
||||
"active": false,
|
||||
"adult": false,
|
||||
"language": ["*"],
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "12/03/17",
|
||||
"description": "Añadidas mas opciones de configuracion y corregidos fallos"
|
||||
},
|
||||
{
|
||||
"date": "12/01/17",
|
||||
"description": "release"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "ecarteleratrailers.png",
|
||||
"banner": "ecarteleratrailers.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
]
|
||||
|
||||
@@ -6,21 +6,6 @@
|
||||
"language": ["cast"],
|
||||
"thumbnail": "elitetorrent.png",
|
||||
"banner": "elitetorrent.png",
|
||||
"version": 2,
|
||||
"changes": [
|
||||
{
|
||||
"date": "2/08/2017",
|
||||
"description": "arreglada url canal"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "elsenordelanillo.png",
|
||||
"banner": "elsenordelanillo.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
]
|
||||
|
||||
@@ -6,21 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "eporner.png",
|
||||
"banner": "eporner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "03/06/2017",
|
||||
"description": "reparada seccion categorias"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "28/12/16",
|
||||
"description": "First version"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"adult"
|
||||
]
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "http://www.youfreeporntube.com/uploads/custom-logo.png",
|
||||
"banner": "http://www.youfreeporntube.com/uploads/custom-logo.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "26/12/2016",
|
||||
"description": "Release."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
|
||||
@@ -6,29 +6,6 @@
|
||||
"language": ["lat"],
|
||||
"thumbnail": "https://s24.postimg.org/nsgit7fhh/estadepelis.png",
|
||||
"banner": "https://s28.postimg.org/ud0l032ul/estadepelis_banner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "24/06/2017",
|
||||
"description": "Cambios para autoplay"
|
||||
},
|
||||
{
|
||||
"date": "22/06/2017",
|
||||
"description": "ajustes para AutoPlay"
|
||||
},
|
||||
{
|
||||
"date": "25/05/2017",
|
||||
"description": "cambios esteticos"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "07/02/2017",
|
||||
"description": "Release"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
|
||||
@@ -7,21 +7,6 @@
|
||||
"fanart": "https://github.com/master-1970/resources/raw/master/images/fanart/estrenosgo.png",
|
||||
"thumbnail": "https://github.com/master-1970/resources/raw/master/images/squares/estrenosgo.png",
|
||||
"banner": "estrenosgo.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/05/16",
|
||||
"description": "Compatibilidad con python anteriores a la 2.7"
|
||||
},
|
||||
{
|
||||
"date": "03/05/16",
|
||||
"description": "Modificado por cambios en la web"
|
||||
},
|
||||
{
|
||||
"date": "29/04/16",
|
||||
"description": "Version inicial"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"tvshow",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
from channelselector import get_thumb
|
||||
@@ -53,8 +53,7 @@ def listado(item):
|
||||
patron += '<b>Categoria:\s*</b>([^&]+)»\s*([^<]+).*?'
|
||||
patron += '<div class="OpcionesDescargasMini">(.*?)</div>'
|
||||
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for thumbnail, title, cat_padres, cat_hijos, opciones in matches:
|
||||
# logger.debug(thumbnail + "\n" + title + "\n" + cat_padres + "\n" + cat_hijos + "\n" + opciones)
|
||||
# Obtenemos el año del titulo y eliminamos lo q sobre
|
||||
@@ -70,7 +69,7 @@ def listado(item):
|
||||
thumbnail = HOST + thumbnail[:-5] + 'b' + thumbnail[-4:]
|
||||
|
||||
# Buscamos opcion de ver online
|
||||
patron = '<a href="http://estrenosly.org/ver-online-([^"]+)'
|
||||
patron = '<a href="http://estrenos.*?/ver-online-([^"]+)'
|
||||
url_ver = scrapertools.find_single_match(opciones, patron)
|
||||
if url_ver:
|
||||
new_item = Item(channel=item.channel, action="findvideos", title=title,
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "filesmonster_catalogue.png",
|
||||
"banner": "filesmonster_catalogue.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "05/08/2016",
|
||||
"description": "Eliminado de sección películas"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
|
||||
@@ -4,13 +4,6 @@
|
||||
"language": ["*"],
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "29/04/2017",
|
||||
"description": "Primera versión"
|
||||
}
|
||||
],
|
||||
"thumbnail": "http://i.imgur.com/wuzhOCt.png?1",
|
||||
"categories": [
|
||||
"adult"
|
||||
|
||||
@@ -4,15 +4,8 @@
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"version": 1,
|
||||
"thumbnail": "http://gnula.mobi/wp-content/uploads/2016/08/Untitled-6.png",
|
||||
"banner": "",
|
||||
"changes": [
|
||||
{
|
||||
"date": "25/08/2017",
|
||||
"description": "Nuevo canal"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"adult"
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "gnula.png",
|
||||
"banner": "gnula.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
]
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast"],
|
||||
"thumbnail": "guaridavalencianista.png",
|
||||
"banner": "guaridavalencianista.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"documentary"
|
||||
]
|
||||
|
||||
@@ -6,29 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "hdfull.png",
|
||||
"banner": "hdfull.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "30/05/2017",
|
||||
"description": "Arreglada la extracción de enlaces por cambios en la web"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "21/03/2017",
|
||||
"description": "Pequeño fix para corregir algunas urls de los vídeos que se extraían mal"
|
||||
},
|
||||
{
|
||||
"date": "02/02/2017",
|
||||
"description": "Arreglada la extracción de enlaces por cambios en la web"
|
||||
},
|
||||
{
|
||||
"date": "05/01/2017",
|
||||
"description": "Corregido debido a cloudflare"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"tvshow"
|
||||
|
||||
@@ -616,6 +616,8 @@ def findvideos(item):
|
||||
url_targets = item.url
|
||||
|
||||
## Vídeos
|
||||
id = ""
|
||||
type = ""
|
||||
if "###" in item.url:
|
||||
id = item.url.split("###")[1].split(";")[0]
|
||||
type = item.url.split("###")[1].split(";")[1]
|
||||
@@ -698,6 +700,9 @@ def findvideos(item):
|
||||
|
||||
it2 = servertools.get_servers_itemlist(it2, lambda i: i.title % i.server.capitalize())
|
||||
it2.sort(key=lambda it: (it.tipo1, it.idioma, it.server))
|
||||
for item in it2:
|
||||
if "###" not in item.url:
|
||||
item.url += "###" + id + ";" + type
|
||||
itemlist.extend(it1)
|
||||
itemlist.extend(it2)
|
||||
## 2 = película
|
||||
@@ -707,7 +712,6 @@ def findvideos(item):
|
||||
action="add_pelicula_to_library", url=url_targets, thumbnail = item.thumbnail,
|
||||
fulltitle = item.contentTitle
|
||||
))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://s11.postimg.org/cmuwcvvpf/hentaienespanol.png",
|
||||
"banner": "https://s3.postimg.org/j3qkfut8z/hentaienespanol_banner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/12/2016",
|
||||
"description": "Release."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
|
||||
@@ -6,9 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://dl.dropboxusercontent.com/u/30248079/hentai_id.png",
|
||||
"banner": "https://dl.dropboxusercontent.com/u/30248079/hentai_id2.png",
|
||||
"version": 1,
|
||||
"date": "09/03/2017",
|
||||
"changes": "Fix web",
|
||||
"categories": [
|
||||
"adult"
|
||||
]
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "https://s27.postimg.org/pjq3y552b/idocumentales.png",
|
||||
"banner": "https://s16.postimg.org/6d8bh1z1x/idocumentales_banner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "25/05/2017",
|
||||
"description": "cambios esteticos"
|
||||
},
|
||||
{
|
||||
"date": "18/06/2016",
|
||||
"description": "First release"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"documentary"
|
||||
],
|
||||
|
||||
@@ -4,21 +4,6 @@
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"changes": [
|
||||
{
|
||||
"date": "12/03/2017",
|
||||
"description": "Reparados enlaces directos"
|
||||
},
|
||||
{
|
||||
"date": "27/02/2017",
|
||||
"description": "Añadidos enlaces directos y adaptado al uso de httptools"
|
||||
},
|
||||
{
|
||||
"date": "16/01/2016",
|
||||
"description": "Corregido por cambios en el enmascaramiento de enlaces"
|
||||
}
|
||||
],
|
||||
"version": 1,
|
||||
"thumbnail": "http://i.imgur.com/I7MxHZI.png",
|
||||
"banner": "inkapelis.png",
|
||||
"categories": [
|
||||
|
||||
@@ -4,13 +4,6 @@
|
||||
"language": ["*"],
|
||||
"active": true,
|
||||
"adult": true,
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "29/04/2017",
|
||||
"description": "Primera versión"
|
||||
}
|
||||
],
|
||||
"thumbnail": "http://i.imgur.com/OTYwbAa.png?1",
|
||||
"categories": [
|
||||
"adult"
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["*"],
|
||||
"thumbnail": "https://s15.postimg.org/pzd3h4vy3/javus.png",
|
||||
"banner": "https://s21.postimg.org/5pqzedp2f/javus_banner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/12/2016",
|
||||
"description": "Release."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"adult"
|
||||
],
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "jkanime.png",
|
||||
"banner": "jkanime.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"anime"
|
||||
],
|
||||
|
||||
@@ -4,13 +4,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "16/05/2017",
|
||||
"description": "Primera version"
|
||||
}
|
||||
],
|
||||
"thumbnail": "http://i.imgur.com/LVdupxc.png",
|
||||
"categories": [
|
||||
"movie",
|
||||
|
||||
@@ -6,29 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "https://s31.postimg.org/5worjw2nv/locopelis.png",
|
||||
"banner": "https://s31.postimg.org/ng87bb9jv/locopelis_banner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "24/06/2017",
|
||||
"description": "Cambios para autoplay"
|
||||
},
|
||||
{
|
||||
"date": "06/06/2017",
|
||||
"description": "Compatibilidad con autoplay"
|
||||
},
|
||||
{
|
||||
"date": "25/05/2017",
|
||||
"description": "cambios esteticos"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "06/12/2016",
|
||||
"description": "Release."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
|
||||
@@ -4,15 +4,8 @@
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"version": 1,
|
||||
"thumbnail": "http://www.maxipelis.net/wp-content/uploads/2016/12/applogo.png",
|
||||
"banner": "",
|
||||
"changes": [
|
||||
{
|
||||
"date": "25/08/2017",
|
||||
"description": "Nuevo canal"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast"],
|
||||
"thumbnail": "mejortorrent.png",
|
||||
"banner": "mejortorrent.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "17/04/2017",
|
||||
"description": "Arreglado error que impedía el uso del canal"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
|
||||
@@ -6,29 +6,6 @@
|
||||
"language": ["lat"],
|
||||
"thumbnail": "https://s32.postimg.org/7g50yo39h/metaserie.png",
|
||||
"banner": "https://s31.postimg.org/u6yddil8r/metaserie_banner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "24/06/2017",
|
||||
"description": "Cambios para autoplay"
|
||||
},
|
||||
{
|
||||
"date": "06/06/2017",
|
||||
"description": "Compatibilidad con AutoPlay"
|
||||
},
|
||||
{
|
||||
"date": "25/05/2017",
|
||||
"description": "cambios esteticos"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "04/01/2017",
|
||||
"description": "Release."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"tvshow"
|
||||
],
|
||||
|
||||
@@ -4,21 +4,6 @@
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "06/12/2016",
|
||||
"description": "Release"
|
||||
},
|
||||
{
|
||||
"date": "04/04/2017",
|
||||
"description": "Migración a Httptools y algunos arreglos"
|
||||
},
|
||||
{
|
||||
"date": "28/06/2017",
|
||||
"description": "Correciones código y algunas mejoras"
|
||||
}
|
||||
],
|
||||
"thumbnail": "http://imgur.com/KZoska0.png",
|
||||
"banner": "miltorrents.png",
|
||||
"categories": [
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["lat"],
|
||||
"thumbnail": "https://s17.postimg.org/e8kp12mcv/miradetodo.png",
|
||||
"banner": "https://s7.postimg.org/it21t0dej/miradetodo-banner.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "25/05/2017",
|
||||
"description": "cambios esteticos"
|
||||
},
|
||||
{
|
||||
"date": "05/05/2017",
|
||||
"description": "First release"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
|
||||
@@ -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':
|
||||
|
||||
12
plugin.video.alfa/channels/mundiseries.json
Normal file
12
plugin.video.alfa/channels/mundiseries.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"id": "mundiseries",
|
||||
"name": "Mundiseries",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "https://imgur.com/GdGMFi1.png",
|
||||
"banner": "https://imgur.com/1bDbYY1.png",
|
||||
"categories": [
|
||||
"tvshow"
|
||||
]
|
||||
}
|
||||
99
plugin.video.alfa/channels/mundiseries.py
Normal file
99
plugin.video.alfa/channels/mundiseries.py
Normal file
@@ -0,0 +1,99 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from channels import filtertools
|
||||
from platformcode import config, logger
|
||||
from platformcode import platformtools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from core import httptools
|
||||
from channels import autoplay
|
||||
|
||||
host = "http://mundiseries.com"
|
||||
list_servers = ['okru']
|
||||
list_quality = ['default']
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = list()
|
||||
autoplay.init(item.channel, list_servers, list_quality)
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title="Series", url=urlparse.urljoin(host, "/lista-de-series")))
|
||||
autoplay.show_option(item.channel, itemlist)
|
||||
|
||||
return itemlist
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
patron = '<a href="([^"]+)"><img src="([^"]+)" alt="ver ([^"]+) online'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for link, thumbnail, name in matches:
|
||||
itemlist.append(item.clone(title=name, url=host+link, thumbnail=host+thumbnail, action="temporada"))
|
||||
return itemlist
|
||||
|
||||
def temporada(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
logger.info("preon,:"+data)
|
||||
patron = '<a href="([^"]+)"><div class="item-temporada"><img alt=".+?" src="([^"]+)"><div .+?>Ver ([^"]+)<\/div><\/a>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for link,thumbnail,name in matches:
|
||||
itemlist.append(item.clone(title=name, url=host+link, thumbnail=host+thumbnail,action="episodios",context=autoplay.context))
|
||||
return itemlist
|
||||
|
||||
def episodios(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
patron_caps = 'href="http:.+?\/mundiseries.+?com([^"]+)" alt="([^"]+) Capitulo ([^"]+) Temporada ([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(data, patron_caps)
|
||||
patron_show='<h1 class="h-responsive center">.+?'
|
||||
patron_show+='<font color=".+?>([^"]+)<\/a><\/font>'
|
||||
show = scrapertools.find_single_match(data,patron_show)
|
||||
for link, name,cap,temp in matches:
|
||||
if '|' in cap:
|
||||
cap = cap.replace('|','')
|
||||
if '|' in temp:
|
||||
temp = temp.replace('|','')
|
||||
if '|' in name:
|
||||
name = name.replace('|','')
|
||||
title = "%sx%s %s"%(temp, str(cap).zfill(2),name)
|
||||
url=host+link
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos",
|
||||
title=title, url=url, show=show))
|
||||
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0:
|
||||
itemlist.append(Item(channel=item.channel, title="Añadir Temporada/Serie a la biblioteca de Kodi", url=item.url,
|
||||
action="add_serie_to_library", extra="episodios", show=show))
|
||||
return itemlist
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
id = ""
|
||||
type = ""
|
||||
data = httptools.downloadpage(item.url).data
|
||||
it2 = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
itemlist.extend(servertools.find_video_items(data=data))
|
||||
|
||||
for item in it2:
|
||||
if "###" not in item.url:
|
||||
item.url += "###" + id + ";" + type
|
||||
for videoitem in itemlist:
|
||||
videoitem.channel= item.channel
|
||||
autoplay.start(itemlist, item)
|
||||
return itemlist
|
||||
@@ -6,33 +6,6 @@
|
||||
"language": ["lat"],
|
||||
"thumbnail": "https://s32.postimg.org/h1ewz9hhx/mundoflv.png",
|
||||
"banner": "mundoflv.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "24/06/2017",
|
||||
"description": "Cambios para autoplay"
|
||||
},
|
||||
{
|
||||
"date": "06/06/2017",
|
||||
"description": "Compatibilidad con AutoPlay"
|
||||
},
|
||||
{
|
||||
"date": "03/06/2017",
|
||||
"description": "Reparado por mala subida"
|
||||
},
|
||||
{
|
||||
"date": "25/05/2017",
|
||||
"description": "cambios esteticos"
|
||||
},
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "28/01/2017",
|
||||
"description": "Release."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"tvshow"
|
||||
],
|
||||
|
||||
@@ -6,17 +6,6 @@
|
||||
"language": ["cast"],
|
||||
"thumbnail": "newpct.png",
|
||||
"banner": "newpct.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"tvshow",
|
||||
|
||||
@@ -6,25 +6,6 @@
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "newpct1.png",
|
||||
"banner": "newpct1.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "12/05/17",
|
||||
"description": "Modificado listado para evitar errores con infoplus"
|
||||
},
|
||||
{
|
||||
"date": "17/04/17",
|
||||
"description": "Arreglada seccion series"
|
||||
},
|
||||
{
|
||||
"date": "29/12/16",
|
||||
"description": "Adaptado, por cambios en la web, seccion Series"
|
||||
},
|
||||
{
|
||||
"date": "01/07/2016",
|
||||
"description": "Eliminado código innecesario."
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie",
|
||||
"tvshow",
|
||||
|
||||
@@ -4,25 +4,6 @@
|
||||
"active": false,
|
||||
"adult": false,
|
||||
"language": ["*"],
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "15/03/2017",
|
||||
"description": "limpieza código"
|
||||
},
|
||||
{
|
||||
"date": "07/02/17",
|
||||
"description": "Añadir cuadro de progreso"
|
||||
},
|
||||
{
|
||||
"date": "01/07/16",
|
||||
"description": "Eliminado código innecesario."
|
||||
},
|
||||
{
|
||||
"date": "29/04/16",
|
||||
"description": "Posibilidad de incluir otros canales, mediante configuracion"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user