Compare commits
409 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78b4a8d768 | ||
|
|
537c640771 | ||
|
|
d76430c6d7 | ||
|
|
b97f01d4d4 | ||
|
|
9059a6d14f | ||
|
|
b8f66623da | ||
|
|
1a1c8f2547 | ||
|
|
0fc75a5305 | ||
|
|
f4238302a5 | ||
|
|
ba2a6c682e | ||
|
|
02abbfcc64 | ||
|
|
4a0f1b5c41 | ||
|
|
738fb50ce9 | ||
|
|
64396b3a4f | ||
|
|
9e1c190c0b | ||
|
|
7b8c1c6eb7 | ||
|
|
9a5b8cb4e7 | ||
|
|
2793ea9952 | ||
|
|
3067d137cb | ||
|
|
825d9f2198 | ||
|
|
b41c2c08fc | ||
|
|
1f4825dd05 | ||
|
|
4f760040bc | ||
|
|
5391152408 | ||
|
|
815857404d | ||
|
|
239a73219e | ||
|
|
b7787e0ee5 | ||
|
|
14fce6ebac | ||
|
|
16a530a9d4 | ||
|
|
f4bc398f9e | ||
|
|
841f5e5f3d | ||
|
|
ee80f9c4d2 | ||
|
|
50c42fbc4b | ||
|
|
76170820bb | ||
|
|
b5083d16b5 | ||
|
|
6927f1f955 | ||
|
|
a3b70aba22 | ||
|
|
1fb8db8496 | ||
|
|
201e7f1e2e | ||
|
|
245190ca70 | ||
|
|
23ebf3d19b | ||
|
|
5c699ed892 | ||
|
|
2da412890e | ||
|
|
b47db3ae04 | ||
|
|
660a05f39d | ||
|
|
1f1b860715 | ||
|
|
bc318f7a18 | ||
|
|
87e8ee4d46 | ||
|
|
de5eda5477 | ||
|
|
0738a82372 | ||
|
|
c3ca5b472f | ||
|
|
4008c63e12 | ||
|
|
f5a5328620 | ||
|
|
48d7f754be | ||
|
|
f1ffdf425e | ||
|
|
fac578f631 | ||
|
|
f7df5e9494 | ||
|
|
aeea88395a | ||
|
|
8cc0ac4083 | ||
|
|
ba2e824ec6 | ||
|
|
3aabe7eb75 | ||
|
|
b3c345fd11 | ||
|
|
9ddc0c7eec | ||
|
|
6a25a4add4 | ||
|
|
b339965287 | ||
|
|
800d6ae02e | ||
|
|
f441d34222 | ||
|
|
57001ef13e | ||
|
|
19df05e956 | ||
|
|
9f20d50a79 | ||
|
|
d8052c4bab | ||
|
|
4aca9a2306 | ||
|
|
5729e04cb5 | ||
|
|
eb27cd53bc | ||
|
|
afaf2fd4b4 | ||
|
|
e264614a2e | ||
|
|
de439ff8ea | ||
|
|
37df471d60 | ||
|
|
98b61f1b50 | ||
|
|
65648bca9b | ||
|
|
e7fd77bcee | ||
|
|
27f93b9d98 | ||
|
|
a77a009c3a | ||
|
|
94d4244cd1 | ||
|
|
c2b9f1f009 | ||
|
|
7c887bf546 | ||
|
|
05535344c2 | ||
|
|
0caea46619 | ||
|
|
c49439bdc7 | ||
|
|
b5f1e7180c | ||
|
|
29324c4302 | ||
|
|
b88ef13772 | ||
|
|
b7b0c02589 | ||
|
|
f0e07b7b28 | ||
|
|
735b4a6584 | ||
|
|
120e77b44b | ||
|
|
ac27cd2f00 | ||
|
|
002e62aa19 | ||
|
|
4b9bbd0540 | ||
|
|
b474db07e3 | ||
|
|
9a6e070799 | ||
|
|
e0997a387b | ||
|
|
02797b5571 | ||
|
|
de8f6af086 | ||
|
|
98c06a1140 | ||
|
|
2e9573b6e9 | ||
|
|
fd5b972281 | ||
|
|
30e32ac133 | ||
|
|
1a7d23d7dc | ||
|
|
34f4e474fd | ||
|
|
c546976329 | ||
|
|
fe4c2685d7 | ||
|
|
1b7e71e3bf | ||
|
|
0ab5deba05 | ||
|
|
dd4bcb8ef4 | ||
|
|
796bf25e6f | ||
|
|
f136e6e2aa | ||
|
|
bad4e91aee | ||
|
|
48d76ad6d4 | ||
|
|
4d248cab54 | ||
|
|
df3022353c | ||
|
|
48a8f2fa1a | ||
|
|
5304271782 | ||
|
|
3701aba7fa | ||
|
|
ef962d7ed2 | ||
|
|
9d03b4de54 | ||
|
|
6bbf26a9a9 | ||
|
|
392435e6fb | ||
|
|
8b445165df | ||
|
|
ba28a426e6 | ||
|
|
aa5fa6d275 | ||
|
|
6d8de2efec | ||
|
|
0c65e2d20c | ||
|
|
2a5c27355b | ||
|
|
cad93526ce | ||
|
|
4cfe60c2a8 | ||
|
|
10a7535242 | ||
|
|
489cd02192 | ||
|
|
089098c58f | ||
|
|
57e5d32567 | ||
|
|
9adcafc343 | ||
|
|
cf068bc13f | ||
|
|
7579428087 | ||
|
|
5ca2ed6212 | ||
|
|
11494549b9 | ||
|
|
77423ec5a8 | ||
|
|
be2c691909 | ||
|
|
8fb445edaf | ||
|
|
fada17bb78 | ||
|
|
5c90256a3d | ||
|
|
611a0e28a3 | ||
|
|
8ea2efb632 | ||
|
|
f71de37f0f | ||
|
|
d4b2a61318 | ||
|
|
fd1f5c28df | ||
|
|
1e08ee9bd6 | ||
|
|
08ac52b279 | ||
|
|
7b52463ce6 | ||
|
|
e79364ef93 | ||
|
|
de4b08606a | ||
|
|
21b655b074 | ||
|
|
48120ac6ab | ||
|
|
5c360bdc68 | ||
|
|
de267299e7 | ||
|
|
d0139dfde3 | ||
|
|
7115c2f832 | ||
|
|
85135711de | ||
|
|
8c5c495633 | ||
|
|
fdcf27a5fa | ||
|
|
7523b02e62 | ||
|
|
3ca234f8ae | ||
|
|
2848692d79 | ||
|
|
d6f73e1f06 | ||
|
|
0dbf9c544a | ||
|
|
4fdf382ca3 | ||
|
|
ca943ab6ef | ||
|
|
41a66823e5 | ||
|
|
a6206420b5 | ||
|
|
1ebe99ede1 | ||
|
|
aaa0149bc8 | ||
|
|
4cb704a6c3 | ||
|
|
411b3ce23d | ||
|
|
1b0f91d4f2 | ||
|
|
3f1baae10c | ||
|
|
a91643694b | ||
|
|
3bd8507889 | ||
|
|
f97a283175 | ||
|
|
3b02b62a29 | ||
|
|
25f8a9dc4b | ||
|
|
860bd0f834 | ||
|
|
6bede726f8 | ||
|
|
f045d2ee7c | ||
|
|
51c4d7d746 | ||
|
|
f340cbce3a | ||
|
|
16bcfdcb15 | ||
|
|
11ef80c3e0 | ||
|
|
4d2562eaac | ||
|
|
5a1a1a97f1 | ||
|
|
035f27f887 | ||
|
|
f1db1236f1 | ||
|
|
790420df0d | ||
|
|
6999f615c8 | ||
|
|
78a6eecf2e | ||
|
|
c9a96831d8 | ||
|
|
e6cfcd3151 | ||
|
|
4fda116759 | ||
|
|
3c2902d5ea | ||
|
|
b9bd644e0a | ||
|
|
93ab41c2da | ||
|
|
87541a3291 | ||
|
|
46646e09d1 | ||
|
|
a206b9ddaf | ||
|
|
76f52ce404 | ||
|
|
afc13bd1d3 | ||
|
|
4469fc75cd | ||
|
|
8428e8571b | ||
|
|
b640303143 | ||
|
|
7456c32fbb | ||
|
|
a8ddc664d4 | ||
|
|
be3345d34f | ||
|
|
d9677a13ea | ||
|
|
d3d44463b7 | ||
|
|
6f63ea5128 | ||
|
|
48740f4a1d | ||
|
|
5224547446 | ||
|
|
feb4f239e3 | ||
|
|
164804d484 | ||
|
|
162928f4d6 | ||
|
|
4c24fe48ed | ||
|
|
5bf145114d | ||
|
|
39669395ae | ||
|
|
f5a5979f74 | ||
|
|
476f7f985d | ||
|
|
42d20e9434 | ||
|
|
9adb713d07 | ||
|
|
513d66dfb4 | ||
|
|
537c2cb0e4 | ||
|
|
ddda31b2af | ||
|
|
c5d1bc1988 | ||
|
|
44a89836d5 | ||
|
|
878dbc8393 | ||
|
|
d625419219 | ||
|
|
3032770580 | ||
|
|
742ff3feff | ||
|
|
df0607ec90 | ||
|
|
d83a49743c | ||
|
|
66762b2c46 | ||
|
|
79c761206d | ||
|
|
f04647f348 | ||
|
|
0f81113225 | ||
|
|
169c09db16 | ||
|
|
306bb6533d | ||
|
|
210e90cb96 | ||
|
|
74e53f362b | ||
|
|
947cb7f51f | ||
|
|
f88ca81ff5 | ||
|
|
42cd9ac14b | ||
|
|
b7520145bb | ||
|
|
209af696b2 | ||
|
|
3965fdd1c6 | ||
|
|
03589b9c39 | ||
|
|
a3337df4da | ||
|
|
acf7f9a27a | ||
|
|
8082e1b244 | ||
|
|
689e2cc534 | ||
|
|
d37f911d3f | ||
|
|
9345115869 | ||
|
|
7ae8b203b6 | ||
|
|
56c16f2922 | ||
|
|
7e47e3ae59 | ||
|
|
9eef89d1b0 | ||
|
|
2b3d81c9a0 | ||
|
|
876b02b81f | ||
|
|
8028290051 | ||
|
|
78252d3452 | ||
|
|
9aa77400d5 | ||
|
|
c7850cef56 | ||
|
|
783b8a11c1 | ||
|
|
3746d3bfb0 | ||
|
|
5d592f724d | ||
|
|
d288031a83 | ||
|
|
41a39ff02b | ||
|
|
0bad69a7cb | ||
|
|
74e6145d2f | ||
|
|
c344832c8c | ||
|
|
a9caf59ce1 | ||
|
|
770a2e215a | ||
|
|
28d99deb48 | ||
|
|
23ac80fbd6 | ||
|
|
9a5ddfbccb | ||
|
|
50bbf7d9aa | ||
|
|
2aab5ae0ff | ||
|
|
1bbc51a885 | ||
|
|
f95c3621d4 | ||
|
|
f05cbba109 | ||
|
|
16968f9204 | ||
|
|
8985f3ebdd | ||
|
|
d60c246bbb | ||
|
|
3b29fe47bb | ||
|
|
3093f72ce5 | ||
|
|
55dcf3f091 | ||
|
|
2924b6958d | ||
|
|
927310c7c6 | ||
|
|
0c25891790 | ||
|
|
212c06057f | ||
|
|
9c3b3e9256 | ||
|
|
6dc853b41e | ||
|
|
7afd09dfa9 | ||
|
|
6855508eaa | ||
|
|
2925c29671 | ||
|
|
506e68e8a3 | ||
|
|
9cc30152f8 | ||
|
|
267c9d8031 | ||
|
|
bd68b83b6c | ||
|
|
71bf6ce57b | ||
|
|
c1f8039672 | ||
|
|
99dfa2be58 | ||
|
|
39e711b3cb | ||
|
|
2d8d2b3baf | ||
|
|
82d126c3e1 | ||
|
|
8d41fd1c64 | ||
|
|
a8c2f409eb | ||
|
|
7b2a3c2181 | ||
|
|
9e6729f0be | ||
|
|
241e644dcf | ||
|
|
ae318721ab | ||
|
|
8328610ffa | ||
|
|
19101b5310 | ||
|
|
22827e0f7e | ||
|
|
f3b4ddee25 | ||
|
|
1747c9795d | ||
|
|
f3effe9a7f | ||
|
|
0621b1fa91 | ||
|
|
16473764c9 | ||
|
|
6b1727a0b8 | ||
|
|
11fceffd14 | ||
|
|
3a49b8a442 | ||
|
|
162772e9dc | ||
|
|
60d61f861b | ||
|
|
cd1c7b692a | ||
|
|
10abe4a6d4 | ||
|
|
b0fa5e8a75 | ||
|
|
54d6a943f5 | ||
|
|
44df5b6036 | ||
|
|
ae67d9b5ee | ||
|
|
895d14760d | ||
|
|
b0b4b218f0 | ||
|
|
2f4fb66ff0 | ||
|
|
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 | ||
|
|
5a7905d5e0 | ||
|
|
e348c26d9e | ||
|
|
badf40573c | ||
|
|
c80793e3e0 | ||
|
|
cbc0ff0bd0 | ||
|
|
672d1ce0c0 | ||
|
|
17002ddf94 | ||
|
|
2618168737 | ||
|
|
e6e572922f | ||
|
|
6a7e883299 | ||
|
|
d1a264f7c7 | ||
|
|
295f4eab68 | ||
|
|
e72320f12f | ||
|
|
dc77e9733b | ||
|
|
7864fe3740 | ||
|
|
ba03b01cc0 | ||
|
|
97d299b863 | ||
|
|
e85f31dadf | ||
|
|
c54ed630f9 | ||
|
|
5122d2f7fa |
@@ -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.3.0" provider-name="Alfa Addon">
|
||||
<addon id="plugin.video.alfa" name="Alfa" version="2.4.9" provider-name="Alfa Addon">
|
||||
<requires>
|
||||
<import addon="xbmc.python" version="2.1.0"/>
|
||||
<import addon="script.module.libtorrent" optional="true"/>
|
||||
@@ -19,15 +19,12 @@
|
||||
</assets>
|
||||
<news>[B]Estos son los cambios para esta versión:[/B]
|
||||
[COLOR green][B]Canales agregados y arreglos[/B][/COLOR]
|
||||
» cartoonlatino » serieslan
|
||||
» pelisplus » pedropolis
|
||||
» flashx » cinetux
|
||||
» animeflv_ru » streamixcloud
|
||||
» estrenosgo » animemovil
|
||||
» allpeliculas » pelismundo
|
||||
¤ arreglos internos
|
||||
[COLOR green]Gracias a [COLOR yellow]Danielr460[/COLOR] por su colaboración en esta versión[/COLOR]
|
||||
</news>
|
||||
» pelisfox » pelisgratis
|
||||
» gamovideo » doomtv
|
||||
» usercloud » ciberpeliculashd
|
||||
» pordede ¤ arreglos internos
|
||||
[COLOR green]Gracias a [B][COLOR yellow]f_y_m[/COLOR][/B] 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"
|
||||
@@ -26,6 +19,14 @@
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_latino",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Latino",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
|
||||
@@ -33,7 +33,7 @@ def newest(categoria):
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'peliculas':
|
||||
if categoria in ['peliculas','latino']:
|
||||
item.url = host
|
||||
elif categoria == 'infantiles':
|
||||
item.url = host + 'category/animacion/'
|
||||
|
||||
@@ -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": [
|
||||
@@ -43,6 +20,14 @@
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_latino",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Latino",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_peliculas",
|
||||
"type": "bool",
|
||||
@@ -73,4 +58,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import jsontools
|
||||
from core import scrapertools
|
||||
@@ -59,6 +57,7 @@ def colecciones(item):
|
||||
title = scrapedtitle.capitalize() + " (" + scrapedcantidad + ")"
|
||||
itemlist.append(Item(channel = item.channel,
|
||||
action = "listado_colecciones",
|
||||
page = 1,
|
||||
thumbnail = host + scrapedthumbnail,
|
||||
title = title,
|
||||
url = host + scrapedurl
|
||||
@@ -71,7 +70,7 @@ def listado_colecciones(item):
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data_url = scrapertools.find_single_match(data, "data_url: '([^']+)")
|
||||
post = "page=1"
|
||||
post = "page=%s" %item.page
|
||||
data = httptools.downloadpage(host + data_url, post=post).data
|
||||
patron = 'a href="(/peli[^"]+).*?'
|
||||
patron += 'src="([^"]+).*?'
|
||||
@@ -88,6 +87,16 @@ def listado_colecciones(item):
|
||||
url = host + scrapedurl
|
||||
))
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
item.page += 1
|
||||
post = "page=%s" %item.page
|
||||
data = httptools.downloadpage(host + data_url, post=post).data
|
||||
if len(data) > 50:
|
||||
itemlist.append(Item(channel = item.channel,
|
||||
action = "listado_colecciones",
|
||||
title = "Pagina siguiente>>",
|
||||
page = item.page,
|
||||
url = item.url
|
||||
))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -159,6 +168,7 @@ def lista(item):
|
||||
params = jsontools.dump(dict_param)
|
||||
|
||||
data = httptools.downloadpage(item.url, post=params).data
|
||||
data = data.replace("<mark>","").replace("<\/mark>","")
|
||||
dict_data = jsontools.load(data)
|
||||
|
||||
for it in dict_data["items"]:
|
||||
@@ -167,7 +177,7 @@ def lista(item):
|
||||
rating = it["imdb"]
|
||||
year = it["year"]
|
||||
url = host + "pelicula/" + it["slug"]
|
||||
thumb = urlparse.urljoin(host, it["image"])
|
||||
thumb = host + it["image"]
|
||||
item.infoLabels['year'] = year
|
||||
itemlist.append(item.clone(action="findvideos", title=title, fulltitle=title, url=url, thumbnail=thumb,
|
||||
plot=plot, context=["buscar_trailer"], contentTitle=title, contentType="movie"))
|
||||
@@ -207,7 +217,7 @@ def newest(categoria):
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == "peliculas":
|
||||
if categoria in ['peliculas','latino']:
|
||||
item.url = host + "movies/newmovies?page=1"
|
||||
item.action = "lista"
|
||||
itemlist = lista(item)
|
||||
|
||||
@@ -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"
|
||||
@@ -32,6 +25,14 @@
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_torrent",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Torrent",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -54,6 +54,7 @@ def browser(url):
|
||||
api_key = "2e2160006592024ba87ccdf78c28f49f"
|
||||
api_fankey = "dffe90fba4d02c199ae7a9e71330c987"
|
||||
|
||||
host = 'http://alltorrent.net/'
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
@@ -392,3 +393,26 @@ def get_art(item):
|
||||
item.extra = item.extra + "|" + item.thumbnail
|
||||
else:
|
||||
item.extra = item.extra + "|" + item.thumbnail
|
||||
|
||||
|
||||
def newest(categoria):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'torrent':
|
||||
item.url = host
|
||||
|
||||
itemlist = scraper(item)
|
||||
|
||||
if itemlist[-1].action == "[COLOR olivedrab][B]Siguiente >>[/B][/COLOR]":
|
||||
itemlist.pop()
|
||||
|
||||
# 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("{0}".format(line))
|
||||
return []
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -11,6 +11,12 @@ from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
from channels import autoplay
|
||||
|
||||
list_servers = ['openload',
|
||||
'directo'
|
||||
]
|
||||
list_quality = ['default']
|
||||
|
||||
CHANNEL_HOST = "http://animeflv.co"
|
||||
CHANNEL_DEFAULT_HEADERS = [
|
||||
@@ -117,7 +123,8 @@ def __find_series(html):
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
|
||||
|
||||
autoplay.init(item.channel, list_servers, list_quality)
|
||||
itemlist = list()
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="letras",
|
||||
@@ -134,6 +141,7 @@ def mainlist(item):
|
||||
url=CHANNEL_HOST + "/Buscar?s="))
|
||||
|
||||
itemlist = renumbertools.show_option(item.channel, itemlist)
|
||||
autoplay.show_option(item.channel, itemlist)
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -179,10 +187,13 @@ def search(item, texto):
|
||||
show_list = __find_series(html)
|
||||
|
||||
items = []
|
||||
context = renumbertools.context(item)
|
||||
context2 = autoplay.context
|
||||
context.extend(context2)
|
||||
for show in show_list:
|
||||
title, url, thumbnail, plot = show
|
||||
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)))
|
||||
plot=plot, show=title, viewmode="movies_with_plot", context=context))
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
@@ -197,10 +208,13 @@ def series(item):
|
||||
page_html = get_url_contents(item.url)
|
||||
show_list = __find_series(page_html)
|
||||
items = []
|
||||
context = renumbertools.context(item)
|
||||
context2 = autoplay.context
|
||||
context.extend(context2)
|
||||
for show in show_list:
|
||||
title, url, thumbnail, plot = show
|
||||
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)))
|
||||
plot=plot, show=title, viewmode="movies_with_plot", context=context))
|
||||
|
||||
url_next_page = scrapertools.find_single_match(page_html, REGEX_NEXT_PAGE)
|
||||
if url_next_page:
|
||||
@@ -292,4 +306,5 @@ def findvideos(item):
|
||||
itemlist.append(Item(channel=item.channel, action="play", url=video_url, show=re.escape(item.show),
|
||||
title="Ver en calidad [%s]" % (qualities[quality_id]), plot=item.plot,
|
||||
fulltitle=item.title))
|
||||
autoplay.start(__sort_by_quality(itemlist), item)
|
||||
return __sort_by_quality(itemlist)
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -134,8 +134,7 @@ def novedades_episodios(item):
|
||||
contentTitle = scrapedtitle.replace('#' + episodio, '')
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos", title=scrapedtitle, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail, plot=scrapedplot,
|
||||
hasContentDetails=True, contentSeason=1, contentTitle=contentTitle))
|
||||
thumbnail=scrapedthumbnail, plot=scrapedplot, contentSeason=1, contentTitle=contentTitle))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -3,16 +3,9 @@
|
||||
"name": "Animemovil",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["*"],
|
||||
"language": ["cast", "lat"],
|
||||
"thumbnail": "https://s1.postimg.org/92ji7stii7/animemovil1.png",
|
||||
"banner": "",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "24/10/2017",
|
||||
"description": "Primera version"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"anime"
|
||||
],
|
||||
|
||||
@@ -86,7 +86,7 @@ def recientes(item):
|
||||
tipo = "tvshow"
|
||||
show = contentTitle
|
||||
action = "episodios"
|
||||
context = renumbertools.context
|
||||
context = renumbertools.context(item)
|
||||
if item.extra == "recientes":
|
||||
action = "findvideos"
|
||||
context = ""
|
||||
@@ -96,7 +96,6 @@ def recientes(item):
|
||||
action = "peliculas"
|
||||
if not thumb.startswith("http"):
|
||||
thumb = "http:%s" % thumb
|
||||
|
||||
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,
|
||||
@@ -138,7 +137,7 @@ def listado(item):
|
||||
|
||||
itemlist.append(item.clone(action=action, title=scrapedtitle, url=url, thumbnail=thumb, text_color=color3,
|
||||
contentTitle=title, contentSerieName=show, infoLabels=infoLabels,
|
||||
context=renumbertools.context, contentType=tipo))
|
||||
context=renumbertools.context(item), contentType=tipo))
|
||||
|
||||
|
||||
try:
|
||||
@@ -205,7 +204,7 @@ def completo(item):
|
||||
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, contentType=tipo, infoLabels=infoLabels))
|
||||
context=renumbertools.context(item), contentType=tipo, infoLabels=infoLabels))
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -227,7 +226,7 @@ def episodios(item):
|
||||
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="", context=renumbertools.context)
|
||||
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))
|
||||
@@ -301,7 +300,7 @@ def emision(item):
|
||||
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, infoLabels=infoLabels))
|
||||
context=renumbertools.context(item), infoLabels=infoLabels))
|
||||
|
||||
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
|
||||
|
||||
@@ -127,11 +127,21 @@ def episodios(item):
|
||||
plot=scrapedplot, url=url, show=show))
|
||||
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0:
|
||||
itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", url=item.url,
|
||||
itemlist.append(Item(channel=item.channel, title="[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]", url=item.url,
|
||||
action="add_serie_to_library", extra="episodios", show=show))
|
||||
|
||||
return itemlist
|
||||
|
||||
def googl(url):
|
||||
logger.info()
|
||||
a=url.split("/")
|
||||
link=a[3]
|
||||
link="http://www.trueurl.net/?q=http%3A%2F%2Fgoo.gl%2F"+link+"&lucky=on&Uncloak=Find+True+URL"
|
||||
data_other = httptools.downloadpage(link).data
|
||||
data_other = re.sub(r"\n|\r|\t|\s{2}| ", "", data_other)
|
||||
patron='<td class="withbg">Destination URL<\/td><td><A title="(.+?)"'
|
||||
trueurl = scrapertools.find_single_match(data_other, patron)
|
||||
return trueurl
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
@@ -147,36 +157,23 @@ def findvideos(item):
|
||||
scrapedthumbnail = scrapertools.find_single_match(data, '<div class="caracteristicas"><img src="([^<]+)">')
|
||||
itemla = scrapertools.find_multiple_matches(data_vid, '<div class="serv">.+?-(.+?)-(.+?)<\/div><.+? src="(.+?)"')
|
||||
for server, quality, url in itemla:
|
||||
if "HQ" in quality:
|
||||
quality = "HD"
|
||||
if "Calidad Alta" in quality:
|
||||
quality = quality.replace("Calidad Alta", "HQ")
|
||||
server = server.lower().strip()
|
||||
if "ok" == server:
|
||||
server = 'okru'
|
||||
if "netu" == server:
|
||||
continue
|
||||
quality = "HQ"
|
||||
if " Calidad media - Carga mas rapido" in quality:
|
||||
quality = "360p"
|
||||
server = server.lower().strip()
|
||||
if "ok" in server:
|
||||
server = 'okru'
|
||||
if "rapid" in server:
|
||||
server = 'rapidvideo'
|
||||
if "netu" in server:
|
||||
server = 'netutv'
|
||||
url = googl(url)
|
||||
itemlist.append(item.clone(url=url, action="play", server=server, contentQuality=quality,
|
||||
thumbnail=scrapedthumbnail, plot=scrapedplot,
|
||||
title="Enlace encontrado en %s: [%s]" % (server.capitalize(), quality)))
|
||||
|
||||
title="Enlace encontrado en: %s [%s]" % (server.capitalize(), quality)))
|
||||
|
||||
autoplay.start(itemlist, item)
|
||||
return itemlist
|
||||
|
||||
|
||||
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"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -180,7 +180,7 @@ def findvideos(item):
|
||||
show = item.show
|
||||
for videoitem in itemlist:
|
||||
videoitem.channel = item.channel
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0 and item.contentType=="movie":
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0 and item.contentType=="movie" and item.contentChannel!='videolibrary':
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', url=item.url,
|
||||
action="add_pelicula_to_library", extra="findvideos", contentTitle=show))
|
||||
|
||||
@@ -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,19 @@ 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.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 +274,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",
|
||||
58
plugin.video.alfa/channels/bajui2.py → plugin.video.alfa/channels/bajui.py
Executable file → Normal file
58
plugin.video.alfa/channels/bajui2.py → plugin.video.alfa/channels/bajui.py
Executable file → Normal file
@@ -1,8 +1,9 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
import urlparse
|
||||
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core.item import Item
|
||||
@@ -13,7 +14,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))
|
||||
@@ -33,8 +34,7 @@ def menupeliculas(item):
|
||||
Item(channel=item.channel, title="Películas - A-Z", action="peliculas", url=item.url + "/orden:nombre",
|
||||
fanart=item.fanart, viewmode="movie_with_plot"))
|
||||
|
||||
# <ul class="submenu2 subcategorias"><li ><a href="/descargas/subcategoria/4/br-scr-dvdscr">BR-Scr / DVDScr</a></li><li ><a href="/descargas/subcategoria/6/dvdr-full">DVDR - Full</a></li><li ><a href="/descargas/subcategoria/1/dvdrip-vhsrip">DVDRip / VHSRip</a></li><li ><a href="/descargas/subcategoria/3/hd">HD</a></li><li ><a href="/descargas/subcategoria/2/hdrip-bdrip">HDRip / BDRip</a></li><li ><a href="/descargas/subcategoria/35/latino">Latino</a></li><li ><a href="/descargas/subcategoria/5/ts-scr-cam">TS-Scr / CAM</a></li><li ><a href="/descargas/subcategoria/7/vos">VOS</a></li></ul>
|
||||
data = scrapertools.cache_page(item.url)
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = scrapertools.get_match(data, '<ul class="submenu2 subcategorias">(.*?)</ul>')
|
||||
patron = '<a href="([^"]+)">([^<]+)</a>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
@@ -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,17 +68,16 @@ 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))
|
||||
return itemlist
|
||||
|
||||
|
||||
# Al llamarse "search" la función, el launcher pide un texto a buscar y lo añade como parámetro
|
||||
def search(item, texto, categoria=""):
|
||||
logger.info(item.url + " search " + texto)
|
||||
itemlist = []
|
||||
@@ -86,7 +85,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
|
||||
@@ -101,9 +100,7 @@ def search(item, texto, categoria=""):
|
||||
def peliculas(item, paginacion=True):
|
||||
logger.info()
|
||||
url = item.url
|
||||
|
||||
# Descarga la página
|
||||
data = scrapertools.cache_page(url)
|
||||
data = httptools.downloadpage(url).data
|
||||
patron = '<li id="ficha-\d+" class="ficha2[^<]+'
|
||||
patron += '<div class="detalles-ficha"[^<]+'
|
||||
patron += '<span class="nombre-det">Ficha\: ([^<]+)</span>[^<]+'
|
||||
@@ -118,22 +115,17 @@ 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"))
|
||||
logger.debug("title=[" + scrapedtitle + "], url=[" + scrapedurl + "], thumbnail=[" + scrapedthumbnail + "]")
|
||||
|
||||
# Añade al listado de XBMC
|
||||
scrapedthumbnail = urlparse.urljoin("http://bajui.org/", thumbnail.replace("_m.jpg", "_g.jpg"))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="enlaces", title=scrapedtitle, fulltitle=title, url=scrapedurl,
|
||||
thumbnail=scrapedthumbnail, plot=scrapedplot, extra=scrapedtitle, context="4|5",
|
||||
fanart=item.fanart, viewmode="movie_with_plot"))
|
||||
|
||||
# Extrae el paginador
|
||||
patron = '<a href="([^"]+)" class="pagina pag_sig">Siguiente \»\;</a>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
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:
|
||||
@@ -187,7 +179,7 @@ def enlaces(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
data = scrapertools.cache_page(item.url)
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
try:
|
||||
item.plot = scrapertools.get_match(data, '<span class="ficha-descrip">(.*?)</span>')
|
||||
@@ -197,22 +189,10 @@ 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
|
||||
|
||||
'''
|
||||
<div id="enlaces-34769"><img id="enlaces-cargando-34769" src="/images/cargando.gif" style="display:none;"/></div>
|
||||
</li><li id="box-enlace-330690" class="box-enlace">
|
||||
<div class="box-enlace-cabecera">
|
||||
<div class="datos-usuario"><img class="avatar" src="images/avatars/116305_p.jpg" />Enlaces de:
|
||||
<a class="nombre-usuario" href="/usuario/jerobien">jerobien</a> </div>
|
||||
<div class="datos-act">Actualizado: Hace 8 minutos</div>
|
||||
<div class="datos-boton-mostrar"><a id="boton-mostrar-330690" class="boton" href="javascript:mostrar_enlaces(330690,'b01de63028139fdd348d');">Mostrar enlaces</a></div>
|
||||
<div class="datos-servidores"><div class="datos-servidores-cell"><img src="/images/servidores/ul.to.png" title="uploaded.com" border="0" alt="uploaded.com" /><img src="/images/servidores/bitshare.png" title="bitshare.com" border="0" alt="bitshare.com" /><img src="/images/servidores/freakshare.net.jpg" title="freakshare.com" border="0" alt="freakshare.com" /><img src="/images/servidores/letitbit.png" title="letitbit.net" border="0" alt="letitbit.net" /><img src="/images/servidores/turbobit.png" title="turbobit.net" border="0" alt="turbobit.net" /><img src="/images/servidores/rapidgator.png" title="rapidgator.net" border="0" alt="rapidgator.net" /><img src="/images/servidores/cloudzer.png" title="clz.to" border="0" alt="clz.to" /></div></div>
|
||||
</div>
|
||||
'''
|
||||
|
||||
patron = '<div class="box-enlace-cabecera"[^<]+'
|
||||
patron += '<div class="datos-usuario"><img class="avatar" src="([^"]+)" />Enlaces[^<]+'
|
||||
patron += '<a class="nombre-usuario" href="[^"]+">([^<]+)</a[^<]+</div>[^<]+'
|
||||
@@ -222,20 +202,16 @@ def enlaces(item):
|
||||
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
scrapertools.printMatches(matches)
|
||||
logger.debug("matches=" + repr(matches))
|
||||
|
||||
for thumbnail, usuario, fecha, id, id2, servidores in matches:
|
||||
# <img src="/images/servidores/bitshare.png" title="bitshare.com" border="0" alt="bitshare.com" /><img src="/images/servidores/freakshare.net.jpg" title="freakshare.com" border="0" alt="freakshare.com" /><img src="/images/servidores/rapidgator.png" title="rapidgator.net" border="0" alt="rapidgator.net" /><img src="/images/servidores/turbobit.png" title="turbobit.net" border="0" alt="turbobit.net" /><img src="/images/servidores/muchshare.png" title="muchshare.net" border="0" alt="muchshare.net" /><img src="/images/servidores/letitbit.png" title="letitbit.net" border="0" alt="letitbit.net" /><img src="/images/servidores/shareflare.png" title="shareflare.net" border="0" alt="shareflare.net" /><img src="/images/servidores/otros.gif" title="Otros servidores" border="0" alt="Otros" />
|
||||
patronservidores = '<img src="[^"]+" title="([^"]+)"'
|
||||
matches2 = re.compile(patronservidores, re.DOTALL).findall(servidores)
|
||||
lista_servidores = ""
|
||||
for servidor in matches2:
|
||||
lista_servidores = lista_servidores + servidor + ", "
|
||||
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
|
||||
scrapedurl = "http://www.bajui.org/ajax/mostrar-enlaces.php?id=" + id + "&code=" + id2
|
||||
scrapedplot = item.plot
|
||||
scrapedtitle = "Enlaces de " + usuario + " (" + fecha + ") (" + lista_servidores + ")"
|
||||
|
||||
@@ -250,7 +226,7 @@ def enlaces(item):
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
|
||||
data = scrapertools.cache_page(item.url)
|
||||
data = httptools.downloadpage(item.url).data
|
||||
itemlist = servertools.find_video_items(data=data)
|
||||
for videoitem in itemlist:
|
||||
videoitem.channel = item.channel
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"id": "bityouth",
|
||||
"name": "Bityouth",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"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",
|
||||
"tvshow"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": false,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,42 +0,0 @@
|
||||
{
|
||||
"id": "borrachodetorrent",
|
||||
"name": "BorrachodeTorrent",
|
||||
"active": true,
|
||||
"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",
|
||||
"tvshow"
|
||||
],
|
||||
"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
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"id": "bricocine",
|
||||
"name": "Bricocine",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"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",
|
||||
"tvshow"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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",
|
||||
|
||||
@@ -143,14 +143,10 @@ def peliculas(item):
|
||||
contentTitle = scrapedtitle.partition(':')[0].partition(',')[0]
|
||||
title = "%s [COLOR green][%s][/COLOR] [COLOR yellow][%s][/COLOR]" % (
|
||||
scrapedtitle, year, quality)
|
||||
thumb_id = scrapertools.find_single_match(scrapedthumbnail, '.*?\/uploads\/(.*?)-')
|
||||
thumbnail = "/%s.jpg" % thumb_id
|
||||
filtro_list = {"poster_path": thumbnail}
|
||||
filtro_list = filtro_list.items()
|
||||
|
||||
itemlist.append(item.clone(channel=__channel__, action="findvideos", text_color=color3,
|
||||
url=scrapedurl, infoLabels={'filtro':filtro_list},
|
||||
contentTitle=contentTitle, thumbnail=thumbnail,
|
||||
url=scrapedurl, infoLabels={'year': year},
|
||||
contentTitle=contentTitle, thumbnail=scrapedthumbnail,
|
||||
title=title, context="buscar_trailer", quality = quality))
|
||||
|
||||
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
|
||||
@@ -168,17 +164,17 @@ def peliculas(item):
|
||||
|
||||
for item in itemlist:
|
||||
if item.infoLabels['plot'] == '':
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
datas = httptools.downloadpage(item.url).data
|
||||
datas = re.sub(r"\n|\r|\t|\s{2}| ", "", datas)
|
||||
item.fanart = scrapertools.find_single_match(
|
||||
data, "<meta property='og:image' content='([^']+)' />")
|
||||
datas, "<meta property='og:image' content='([^']+)' />")
|
||||
item.fanart = item.fanart.replace('w780', 'original')
|
||||
item.plot = scrapertools.find_single_match(data, '</span></h4><p>([^*]+)</p><h4')
|
||||
item.plot = scrapertools.find_single_match(datas, '</h4><p>(.*?)</p>')
|
||||
item.plot = scrapertools.htmlclean(item.plot)
|
||||
item.infoLabels['director'] = scrapertools.find_single_match(
|
||||
data, '<div class="name"><a href="[^"]+">([^<]+)</a>')
|
||||
datas, '<div class="name"><a href="[^"]+">([^<]+)</a>')
|
||||
item.infoLabels['genre'] = scrapertools.find_single_match(
|
||||
data, 'rel="tag">[^<]+</a><a href="[^"]+" rel="tag">([^<]+)</a>')
|
||||
datas, 'rel="tag">[^<]+</a><a href="[^"]+" rel="tag">([^<]+)</a>')
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -189,8 +185,7 @@ def generos(item):
|
||||
|
||||
data = scrapertools.cache_page(item.url)
|
||||
data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
|
||||
# logger.info(data)
|
||||
# url, title, cantidad
|
||||
|
||||
patron = '<li class="cat-item cat-item-[^"]+"><a href="([^"]+)" title="[^"]+">([^<]+)</a> <i>([^<]+)</i></li>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
|
||||
@@ -216,34 +211,34 @@ def year_release(item):
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
|
||||
itemlist.append(item.clone(channel=item.channel, action="peliculas", title=scrapedtitle, page=0,
|
||||
url=scrapedurl, text_color=color3, viewmode="movie_with_plot", extra='next'))
|
||||
url=scrapedurl, text_color=color3, viewmode="movie_with_plot", extra='next'))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def series(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
# logger.info(datas)
|
||||
data = re.sub(r"\n|\r|\t|\(.*?\)| |<br>", "", data)
|
||||
|
||||
patron = '<div class="poster"><img src="([^"]+)" alt="([^"]+)">.*?<a href="([^"]+)">'
|
||||
patron = '<div class="poster"><img src="([^"]+)" alt="([^"]+)">.*?<a href="([^"]+)">.*?'
|
||||
patron += '<div class="texto">([^<]+)</div>'
|
||||
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
|
||||
for scrapedthumbnail, scrapedtitle, scrapedurl in matches:
|
||||
for scrapedthumbnail, scrapedtitle, scrapedurl, plot in matches:
|
||||
if plot == '':
|
||||
plot = scrapertools.find_single_match(data, '<div class="texto">([^<]+)</div>')
|
||||
scrapedtitle = scrapedtitle.replace('Ver ', '').replace(
|
||||
' Online HD', '').replace('ver ', '').replace(' Online', '')
|
||||
' Online HD', '').replace('ver ', '').replace(' Online', '').replace(' (Serie TV)', '').strip()
|
||||
itemlist.append(item.clone(title=scrapedtitle, url=scrapedurl, action="temporadas",
|
||||
contentSerieName=scrapedtitle, show=scrapedtitle,
|
||||
contentSerieName=scrapedtitle, show=scrapedtitle, plot=plot,
|
||||
thumbnail=scrapedthumbnail, contentType='tvshow'))
|
||||
|
||||
url_next_page = scrapertools.find_single_match(data, '<link rel="next" href="([^"]+)" />')
|
||||
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
|
||||
if url_next_page:
|
||||
@@ -259,7 +254,6 @@ def temporadas(item):
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
datas = re.sub(r"\n|\r|\t| |<br>", "", data)
|
||||
# logger.info(datas)
|
||||
patron = '<span class="title">([^<]+)<i>.*?' # numeros de temporadas
|
||||
patron += '<img src="([^"]+)"></a></div>' # capitulos
|
||||
|
||||
@@ -268,13 +262,13 @@ def temporadas(item):
|
||||
for scrapedseason, scrapedthumbnail in matches:
|
||||
scrapedseason = " ".join(scrapedseason.split())
|
||||
temporada = scrapertools.find_single_match(scrapedseason, '(\d+)')
|
||||
new_item = item.clone(action="episodios", season=temporada, thumbnail=scrapedthumbnail)
|
||||
new_item = item.clone(action="episodios", season=temporada, thumbnail=scrapedthumbnail, extra='temporadas')
|
||||
new_item.infoLabels['season'] = temporada
|
||||
new_item.extra = ""
|
||||
itemlist.append(new_item)
|
||||
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
|
||||
for i in itemlist:
|
||||
i.title = "%s. %s" % (i.infoLabels['season'], i.infoLabels['tvshowtitle'])
|
||||
if i.infoLabels['title']:
|
||||
@@ -286,6 +280,11 @@ def temporadas(item):
|
||||
|
||||
itemlist.sort(key=lambda it: it.title)
|
||||
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0:
|
||||
itemlist.append(Item(channel=__channel__, title="Añadir esta serie a la videoteca", url=item.url,
|
||||
action="add_serie_to_library", extra="episodios", show=item.show, category="Series",
|
||||
text_color=color1, thumbnail=thumbnail_host, fanart=fanart_host))
|
||||
|
||||
return itemlist
|
||||
else:
|
||||
return episodios(item)
|
||||
@@ -328,7 +327,6 @@ def episodios(item):
|
||||
if not item.extra:
|
||||
# Obtenemos los datos de todos los capitulos de la temporada mediante multihilos
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
for i in itemlist:
|
||||
if i.infoLabels['title']:
|
||||
# Si el capitulo tiene nombre propio añadirselo al titulo del item
|
||||
@@ -355,13 +353,17 @@ def findvideos(item):
|
||||
itemlist = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
data = re.sub(r"\n|\r|\t|\(.*?\)|\s{2}| ", "", data)
|
||||
patron = '<div id="option-(\d+)" class="play-box-iframe.*?src="([^"]+)" frameborder="0" scrolling="no" allowfullscreen></iframe>'
|
||||
|
||||
patron = '<div id="option-(\d+)" class="play-box-iframe.*?src="([^"]+)" frameborder="0" scrolling="no" allowfullscreen></iframe>'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
|
||||
for option, url in matches:
|
||||
datas = httptools.downloadpage(urlparse.urljoin(host, url),
|
||||
headers={'Referer': item.url}).data
|
||||
|
||||
patron = '<iframe[^>]+src="([^"]+)"'
|
||||
url = scrapertools.find_single_match(datas, patron)
|
||||
lang = scrapertools.find_single_match(
|
||||
data, '<li><a class="options" href="#option-%s"><b class="icon-play_arrow"><\/b> (.*?)<span class="dt_flag">' % option)
|
||||
lang = lang.replace('Español ', '').replace('B.S.O. ', '')
|
||||
@@ -371,10 +373,9 @@ def findvideos(item):
|
||||
itemlist.append(item.clone(action='play', url=url, title=title, extra1=title,
|
||||
server=server, language = lang, text_color=color3))
|
||||
|
||||
itemlist.append(Item(channel=item.channel,
|
||||
title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]',
|
||||
url=item.url, action="add_pelicula_to_library",
|
||||
thumbnail='https://raw.githubusercontent.com/Inter95/tvguia/master/thumbnails/libreria.png',
|
||||
extra="findvideos", contentTitle=item.contentTitle))
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'episodios':
|
||||
itemlist.append(Item(channel=__channel__, url=item.url, action="add_pelicula_to_library", extra="findvideos",
|
||||
title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]',
|
||||
thumbnail=thumbnail_host, contentTitle=item.contentTitle))
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
|
||||
@@ -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,4 +1,4 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
@@ -9,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
|
||||
@@ -24,29 +25,15 @@ 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="lista", title="Series", 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 lista_gen(item):
|
||||
logger.info()
|
||||
|
||||
@@ -149,8 +136,7 @@ def episodios(item):
|
||||
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,
|
||||
|
||||
itemlist.append(Item(channel=item.channel, title="[COLOR yellow]Añadir " + show + " a la videoteca[/COLOR]", url=item.url,
|
||||
action="add_serie_to_library", extra="episodios", show=show))
|
||||
|
||||
return itemlist
|
||||
@@ -179,35 +165,10 @@ def findvideos(item):
|
||||
for link in itemla:
|
||||
if server in link:
|
||||
url = link.replace('" + ID' + server + ' + "', str(id))
|
||||
if "drive" in server:
|
||||
server1 = 'Gvideo'
|
||||
else:
|
||||
server1 = server
|
||||
itemlist.append(item.clone(url=url, action="play", server=server1,
|
||||
title="Enlace encontrado en %s " % (server1.capitalize())))
|
||||
|
||||
itemlist.append(item.clone(url=url, action="play",
|
||||
title="Enlace encontrado en %s "
|
||||
))
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
scrapertools.printMatches(itemlist)
|
||||
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"
|
||||
],
|
||||
|
||||
62
plugin.video.alfa/channels/ciberpeliculashd.json
Normal file
62
plugin.video.alfa/channels/ciberpeliculashd.json
Normal file
@@ -0,0 +1,62 @@
|
||||
{
|
||||
"id": "ciberpeliculashd",
|
||||
"name": "Ciberpeliculashd",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["lat"],
|
||||
"thumbnail": "https://s17.postimg.org/78tekxeov/ciberpeliculashd1.png",
|
||||
"banner": "",
|
||||
"categories": [
|
||||
"movie"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "modo_grafico",
|
||||
"type": "bool",
|
||||
"label": "Buscar información extra",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_latino",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Latino",
|
||||
"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": "include_in_newest_peliculas",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Peliculas",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_infantiles",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Infantiles",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_terror",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - terror",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
271
plugin.video.alfa/channels/ciberpeliculashd.py
Normal file
271
plugin.video.alfa/channels/ciberpeliculashd.py
Normal file
@@ -0,0 +1,271 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
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
|
||||
|
||||
__channel__='ciberpeliculashd'
|
||||
|
||||
host = "http://ciberpeliculashd.net"
|
||||
|
||||
try:
|
||||
__modo_grafico__ = config.get_setting('modo_grafico', __channel__)
|
||||
except:
|
||||
__modo_grafico__ = True
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist.append(Item(channel = item.channel, title = "Películas", text_bold = True, folder = False))
|
||||
itemlist.append(Item(channel = item.channel, title = " Novedades", action = "peliculas", url = host + "/?peli=1"))
|
||||
itemlist.append(Item(channel = item.channel, title = " Por género", action = "filtro", url = host, extra = "categories" ))
|
||||
itemlist.append(Item(channel = item.channel, title = " Por calidad", action = "filtro", url = host, extra = "qualitys"))
|
||||
itemlist.append(Item(channel = item.channel, title = " Por idioma", action = "filtro", url = host, extra = "languages"))
|
||||
itemlist.append(Item(channel = item.channel, title = ""))
|
||||
itemlist.append(Item(channel = item.channel, title = "Series", text_bold = True, folder = False))
|
||||
itemlist.append(Item(channel = item.channel, title = " Novedades", action = "series", url = host + "/series/?peli=1"))
|
||||
itemlist.append(Item(channel = item.channel, title = " Nuevos Capitulos", action = "nuevos_capitulos", url = host + "/series/?peli=1"))
|
||||
itemlist.append(Item(channel = item.channel, title = ""))
|
||||
itemlist.append(Item(channel = item.channel, title = "Buscar", action = "search", url = host + "/?s="))
|
||||
return itemlist
|
||||
|
||||
def nuevos_capitulos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = 'class="episode" href="([^"]+).*?'
|
||||
patron += 'src="([^"]+).*?'
|
||||
patron += 'title="([^"]+).*?'
|
||||
patron += '-->([^<]+).*?'
|
||||
patron += 'created_at">([^<]+)'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedepisode, scrapeddays in matches:
|
||||
scrapedtitle = scrapedtitle + " %s (%s)" %(scrapedepisode.strip(), scrapeddays.strip())
|
||||
itemlist.append(Item(action = "findvideos",
|
||||
channel = item.channel,
|
||||
title = scrapedtitle,
|
||||
thumbnail = scrapedthumbnail,
|
||||
url = scrapedurl
|
||||
))
|
||||
return itemlist
|
||||
|
||||
def series(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
bloque = scrapertools.find_single_match(data, 'loop-posts series.*?panel-pagination pagination-bottom')
|
||||
patron = 'a href="([^"]+).*?'
|
||||
patron += '((?:http|https)://image.tmdb.org[^"]+).*?'
|
||||
patron += 'title="([^"]+)'
|
||||
matches = scrapertools.find_multiple_matches(bloque, patron)
|
||||
for scrapedurl, scrapedthumbnail, scrapedtitle in matches:
|
||||
itemlist.append(Item(action = "temporadas",
|
||||
channel = item.channel,
|
||||
thumbnail = scrapedthumbnail,
|
||||
title = scrapedtitle,
|
||||
contentSerieName = scrapedtitle,
|
||||
url = scrapedurl
|
||||
))
|
||||
if itemlist:
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
page = int(scrapertools.find_single_match(item.url,"peli=([0-9]+)")) + 1
|
||||
next_page = scrapertools.find_single_match(item.url,".*?peli=")
|
||||
next_page += "%s" %page
|
||||
itemlist.append(Item(action = "series",
|
||||
channel = item.channel,
|
||||
title = "Página siguiente",
|
||||
url = next_page
|
||||
))
|
||||
return itemlist
|
||||
|
||||
|
||||
def temporadas(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
bloque = scrapertools.find_single_match(data, 'Lista de Temporadas.*?</ul>')
|
||||
matches = scrapertools.find_multiple_matches(bloque, '</i> (.*?[0-9]+)')
|
||||
for scrapedtitle in matches:
|
||||
season = scrapertools.find_single_match(scrapedtitle, '[0-9]+')
|
||||
item.infoLabels["season"] = season
|
||||
url = item.url + "?temporada=%s" %season
|
||||
itemlist.append(item.clone(action = "capitulos",
|
||||
title = scrapedtitle,
|
||||
url = url
|
||||
))
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
if config.get_videolibrary_support():
|
||||
itemlist.append(Item(channel=item.channel, title =""))
|
||||
itemlist.append(item.clone(action = "add_serie_to_library",
|
||||
channel = item.channel,
|
||||
extra = "episodios",
|
||||
title = '[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]',
|
||||
url = item.url
|
||||
))
|
||||
return itemlist
|
||||
|
||||
|
||||
def episodios(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
templist = temporadas(item)
|
||||
for tempitem in templist:
|
||||
itemlist += capitulos(tempitem)
|
||||
return itemlist
|
||||
|
||||
|
||||
def capitulos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<td><a href="([^"]+).*?'
|
||||
patron += '<b>(.*?)</a>'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle in matches:
|
||||
scrapedtitle = scrapedtitle.replace("</b>", "")
|
||||
episode = scrapertools.find_single_match(scrapedtitle, "Capitulo ([0-9]+)")
|
||||
scrapedtitle = scrapedtitle.split(":")[1]
|
||||
scrapedtitle = "%sx%s %s" %(item.infoLabels["season"], episode, scrapedtitle)
|
||||
item.infoLabels["episode"] = episode
|
||||
itemlist.append(item.clone(action = "findvideos",
|
||||
title = scrapedtitle,
|
||||
url = scrapedurl
|
||||
))
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
return itemlist
|
||||
|
||||
|
||||
def newest(categoria):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria in ['peliculas','latino']:
|
||||
item.url = host + "/?peli=1"
|
||||
elif categoria == 'infantiles':
|
||||
item.url = host + '/categories/animacion/?peli=1'
|
||||
elif categoria == 'terror':
|
||||
item.url = host + '/categories/terror/?peli=1'
|
||||
itemlist = peliculas(item)
|
||||
if "Pagina" in itemlist[-1].title:
|
||||
itemlist.pop()
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("{0}".format(line))
|
||||
return []
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
texto = texto.replace(" ", "+")
|
||||
item.url = item.url + texto + "&peli=1"
|
||||
item.extra = "busca"
|
||||
if texto != '':
|
||||
return peliculas(item)
|
||||
else:
|
||||
return []
|
||||
|
||||
|
||||
def filtro(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = 'uk-navbar-nav-subtitle taxonomy-menu-title">%s.*?</ul>' %item.extra
|
||||
bloque = scrapertools.find_single_match(data, patron)
|
||||
patron = "href='([^']+)"
|
||||
patron += "'>([^<]+)"
|
||||
matches = scrapertools.find_multiple_matches(bloque, patron)
|
||||
for url, titulo in matches:
|
||||
itemlist.append(Item(channel = item.channel,
|
||||
action = "peliculas",
|
||||
title = titulo,
|
||||
url = url + "/?peli=1"
|
||||
))
|
||||
return itemlist
|
||||
|
||||
|
||||
def peliculas(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
infoLabels = dict()
|
||||
data = httptools.downloadpage(item.url).data
|
||||
bloque = scrapertools.find_single_match(data, 'loop-posts".*?panel-pagination pagination-bottom')
|
||||
patron = 'a href="([^"]+)".*?'
|
||||
patron += 'img alt="([^"]+)".*?'
|
||||
patron += '((?:http|https)://image.tmdb.org[^"]+)".*?'
|
||||
patron += 'a href="([^"]+)".*?'
|
||||
matches = scrapertools.find_multiple_matches(bloque, patron)
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail, scrapedurl1 in matches:
|
||||
scrapedtitle = scrapedtitle.replace(" Online imagen","").replace("Pelicula ","")
|
||||
year = scrapertools.find_single_match(scrapedtitle, "\(([0-9]+)\)")
|
||||
if year:
|
||||
year = int(year)
|
||||
else:
|
||||
year = 0
|
||||
fulltitle = scrapertools.find_single_match(scrapedtitle, "(.*?) \(")
|
||||
if "serie" in scrapedurl:
|
||||
action = "temporadas"
|
||||
infoLabels ['tvshowtitle'] = scrapedtitle
|
||||
else:
|
||||
action = "findvideos"
|
||||
infoLabels ['tvshowtitle'] = ""
|
||||
infoLabels ['year'] = year
|
||||
itemlist.append(Item(action = action,
|
||||
channel = item.channel,
|
||||
fulltitle = fulltitle,
|
||||
thumbnail = scrapedthumbnail,
|
||||
infoLabels = infoLabels,
|
||||
title = scrapedtitle,
|
||||
url = scrapedurl
|
||||
))
|
||||
if itemlist:
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
page = int(scrapertools.find_single_match(item.url,"peli=([0-9]+)")) + 1
|
||||
next_page = scrapertools.find_single_match(item.url,".*?peli=")
|
||||
next_page += "%s" %page
|
||||
itemlist.append(Item(action = "peliculas",
|
||||
channel = item.channel,
|
||||
title = "Página siguiente",
|
||||
url = next_page
|
||||
))
|
||||
return itemlist
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = 'src="([^&]+)'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl in matches:
|
||||
title = "Ver en: %s"
|
||||
itemlist.append(item.clone(action = "play",
|
||||
title = title,
|
||||
url = scrapedurl
|
||||
))
|
||||
tmdb.set_infoLabels(itemlist)
|
||||
itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize())
|
||||
if itemlist:
|
||||
itemlist.append(Item(channel = item.channel))
|
||||
itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", context="",
|
||||
text_color="magenta"))
|
||||
# Opción "Añadir esta película a la biblioteca de KODI"
|
||||
if item.extra != "library":
|
||||
if config.get_videolibrary_support():
|
||||
itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green",
|
||||
action="add_pelicula_to_library", url=item.url, thumbnail = item.thumbnail,
|
||||
fulltitle = item.fulltitle
|
||||
))
|
||||
return itemlist
|
||||
|
||||
|
||||
def play(item):
|
||||
item.thumbnail = item.contentThumbnail
|
||||
return [item]
|
||||
@@ -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"
|
||||
],
|
||||
@@ -78,6 +55,22 @@
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_castellano",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Castellano",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_latino",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Latino",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -378,12 +378,14 @@ def newest(categoria):
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'peliculas':
|
||||
item.url = 'http://www.cinecalidad.to'
|
||||
if categoria in ['peliculas','latino']:
|
||||
item.url = 'http://www.cinecalidad.com'
|
||||
elif categoria == 'infantiles':
|
||||
item.url = 'http://www.cinecalidad.to/genero-peliculas/infantil/'
|
||||
item.url = 'http://www.cinecalidad.com/genero-peliculas/infantil/'
|
||||
elif categoria == 'terror':
|
||||
item.url = 'http://www.cinecalidad.to/genero-peliculas/terror/'
|
||||
item.url = 'http://www.cinecalidad.com/genero-peliculas/terror/'
|
||||
elif categoria == 'castellano':
|
||||
item.url = 'http://www.cinecalidad.com/espana/'
|
||||
itemlist = peliculas(item)
|
||||
if itemlist[-1].title == 'Página siguiente >>':
|
||||
itemlist.pop()
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -512,7 +512,7 @@ def episodios(item):
|
||||
else:
|
||||
action = "menu_info_episode"
|
||||
|
||||
seasons = scrapertools.find_multiple_matches(data, '<a href="([^"]+)"[^>]+><span class="season-toggle')
|
||||
seasons = scrapertools.find_single_match(data, '<a href="([^"]+)"[^>]+><span class="season-toggle')
|
||||
for i, url in enumerate(seasons):
|
||||
if i != 0:
|
||||
data_season = httptools.downloadpage(url, add_referer=True).data
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
@@ -33,6 +18,14 @@
|
||||
"enabled": false,
|
||||
"visible": false
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_latino",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Latino",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_peliculas",
|
||||
"type": "bool",
|
||||
@@ -50,4 +43,4 @@
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ from core import tmdb
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
|
||||
host = 'http://cinefoxtv.net/'
|
||||
host = 'http://verhdpelis.com/'
|
||||
headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'],
|
||||
['Referer', host]]
|
||||
|
||||
@@ -193,7 +193,7 @@ def newest(categoria):
|
||||
item = Item()
|
||||
# categoria='peliculas'
|
||||
try:
|
||||
if categoria == 'peliculas':
|
||||
if categoria in ['peliculas','latino']:
|
||||
item.url = host + 'page/1.html'
|
||||
elif categoria == 'infantiles':
|
||||
item.url = host + 'peliculas-de-genero/infantil/1.html'
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
|
||||
@@ -123,7 +123,7 @@ def lista(item):
|
||||
|
||||
if next_page_url != "":
|
||||
item.url = next_page_url
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title=">> Página siguiente", url=next_page_url,
|
||||
itemlist.append(Item(channel=item.channel, action="lista", title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=next_page_url,
|
||||
thumbnail='https://s32.postimg.org/4zppxf5j9/siguiente.png'))
|
||||
return itemlist
|
||||
|
||||
@@ -132,14 +132,18 @@ def findvideos(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
itemlist1 = []
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
itemlist.extend(servertools.find_video_items(data=data))
|
||||
itemlist1.extend(servertools.find_video_items(data=data))
|
||||
patron_show = '<div class="data"><h1 itemprop="name">([^<]+)<\/h1>'
|
||||
show = scrapertools.find_single_match(data, patron_show)
|
||||
for videoitem in itemlist:
|
||||
for videoitem in itemlist1:
|
||||
videoitem.channel = item.channel
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0:
|
||||
for i in range(len(itemlist1)):
|
||||
if not 'youtube' in itemlist1[i].title:
|
||||
itemlist.append(itemlist1[i])
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0 and item.contentChannel!='videolibrary':
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', url=item.url,
|
||||
action="add_pelicula_to_library", extra="findvideos", contentTitle=show))
|
||||
|
||||
@@ -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"
|
||||
@@ -63,6 +44,30 @@
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_terror",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - terror",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_castellano",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Castellano",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_latino",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Latino",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "modo_grafico",
|
||||
"type": "bool",
|
||||
|
||||
@@ -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"
|
||||
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"
|
||||
@@ -90,26 +90,30 @@ def newest(categoria):
|
||||
if categoria == 'peliculas':
|
||||
item.url = CHANNEL_HOST
|
||||
item.action = "peliculas"
|
||||
itemlist = peliculas(item)
|
||||
|
||||
if itemlist[-1].action == "peliculas":
|
||||
itemlist.pop()
|
||||
|
||||
elif categoria == 'documentales':
|
||||
item.url = CHANNEL_HOST + "genero/documental/"
|
||||
item.action = "peliculas"
|
||||
itemlist = peliculas(item)
|
||||
|
||||
if itemlist[-1].action == "peliculas":
|
||||
itemlist.pop()
|
||||
|
||||
elif categoria == 'infantiles':
|
||||
item.url = CHANNEL_HOST + "genero/infantil/"
|
||||
item.url = CHANNEL_HOST + "genero/animacion/"
|
||||
item.action = "peliculas"
|
||||
itemlist = peliculas(item)
|
||||
|
||||
if itemlist[-1].action == "peliculas":
|
||||
itemlist.pop()
|
||||
elif categoria == 'terror':
|
||||
item.url = CHANNEL_HOST + "genero/terror/"
|
||||
item.action = "peliculas"
|
||||
|
||||
elif categoria == 'castellano':
|
||||
item.url = CHANNEL_HOST + "idioma/espanol/"
|
||||
item.action = "peliculas"
|
||||
|
||||
elif categoria == 'latino':
|
||||
item.url = CHANNEL_HOST + "idioma/latino/"
|
||||
item.action = "peliculas"
|
||||
|
||||
itemlist = peliculas(item)
|
||||
if itemlist[-1].action == "peliculas":
|
||||
itemlist.pop()
|
||||
|
||||
# Se captura la excepción, para no interrumpir al canal novedades si un canal falla
|
||||
except:
|
||||
@@ -178,18 +182,15 @@ def destacadas(item):
|
||||
matches = scrapertools.find_multiple_matches(bloque, patron)
|
||||
for scrapedtitle, scrapedurl, scrapedthumbnail in matches:
|
||||
scrapedurl = CHANNEL_HOST + scrapedurl
|
||||
scrapedtitle = scrapedtitle.replace("Ver ", "")
|
||||
new_item = item.clone(action="findvideos", title=scrapedtitle, fulltitle=scrapedtitle,
|
||||
itemlist.append(item.clone(action="findvideos", title=scrapedtitle, fulltitle=scrapedtitle,
|
||||
url=scrapedurl, thumbnail=scrapedthumbnail,
|
||||
contentType="movie")
|
||||
itemlist.append(new_item)
|
||||
|
||||
contentType="movie"
|
||||
))
|
||||
# Extrae el paginador
|
||||
next_page_link = scrapertools.find_single_match(data, '<a href="([^"]+)"\s+><span [^>]+>»</span>')
|
||||
if next_page_link:
|
||||
itemlist.append(
|
||||
item.clone(action="destacadas", title=">> Página siguiente", url=next_page_link, text_color=color3))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -239,13 +240,9 @@ def findvideos(item):
|
||||
|
||||
# Busca el argumento
|
||||
data = httptools.downloadpage(item.url).data
|
||||
year = scrapertools.find_single_match(item.title, "\(([0-9]+)")
|
||||
|
||||
tmdb.set_infoLabels(item, __modo_grafico__)
|
||||
|
||||
if not item.infoLabels.get('plot'):
|
||||
plot = scrapertools.find_single_match(data, '<div class="sinopsis"><p>(.*?)</p>')
|
||||
item.infoLabels['plot'] = plot
|
||||
if item.infoLabels["year"]:
|
||||
tmdb.set_infoLabels(item, __modo_grafico__)
|
||||
|
||||
if filtro_enlaces != 0:
|
||||
list_enlaces = bloque_enlaces(data, filtro_idioma, dict_idiomas, "online", item)
|
||||
@@ -263,15 +260,11 @@ def findvideos(item):
|
||||
if itemlist:
|
||||
itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", context="",
|
||||
text_color="magenta"))
|
||||
# Opción "Añadir esta película a la videoteca"
|
||||
if item.extra != "library":
|
||||
if config.get_videolibrary_support():
|
||||
itemlist.append(Item(channel=item.channel, title="Añadir a la videoteca", text_color="green",
|
||||
action="add_pelicula_to_library", url=item.url, fulltitle = item.fulltitle
|
||||
))
|
||||
|
||||
else:
|
||||
itemlist.append(item.clone(title="No hay enlaces disponibles", action="", text_color=color3))
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -296,6 +289,8 @@ def bloque_enlaces(data, filtro_idioma, dict_idiomas, type, item):
|
||||
url = scrapertools.find_single_match(bloque1, patron)
|
||||
if "goo.gl" in url:
|
||||
url = httptools.downloadpage(url, follow_redirects=False, only_headers=True).headers.get("location", "")
|
||||
if "drive.php" in url:
|
||||
scrapedserver = "gvideo"
|
||||
if "player" in url:
|
||||
scrapedserver = scrapertools.find_single_match(url, 'player/(\w+)')
|
||||
if "ok" in scrapedserver: scrapedserver = "okru"
|
||||
@@ -348,12 +343,14 @@ def bloque_enlaces(data, filtro_idioma, dict_idiomas, type, item):
|
||||
def play(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
if "api.cinetux" in item.url or item.server == "okru":
|
||||
if "api.cinetux" in item.url or item.server == "okru" or "drive.php" in item.url or "youtube" in item.url:
|
||||
data = httptools.downloadpage(item.url, headers={'Referer': item.extra}).data.replace("\\", "")
|
||||
id = scrapertools.find_single_match(data, 'img src="[^#]+#(.*?)"')
|
||||
item.url = "https://youtube.googleapis.com/embed/?status=ok&hl=es&allow_embed=1&ps=docs&partnerid=30&hd=1&autoplay=0&cc_load_policy=1&showinfo=0&docid=" + id
|
||||
item.url = "http://docs.google.com/get_video_info?docid=" + id
|
||||
if item.server == "okru":
|
||||
item.url = "https://ok.ru/videoembed/" + id
|
||||
if item.server == "youtube":
|
||||
item.url = "https://www.youtube.com/embed/" + id
|
||||
elif "links" in item.url or "www.cinetux.me" in item.url:
|
||||
data = httptools.downloadpage(item.url).data
|
||||
scrapedurl = scrapertools.find_single_match(data, '<a href="(http[^"]+)')
|
||||
@@ -365,6 +362,9 @@ def play(item):
|
||||
scrapedurl = httptools.downloadpage(scrapedurl, follow_redirects=False, only_headers=True).headers.get(
|
||||
"location", "")
|
||||
item.url = scrapedurl
|
||||
item.thumbnail = item.contentThumbnail
|
||||
item.server = servertools.get_server_from_url(item.url)
|
||||
return [item]
|
||||
item.server = ""
|
||||
itemlist.append(item.clone())
|
||||
itemlist = servertools.get_servers_itemlist(itemlist)
|
||||
for i in itemlist:
|
||||
i.thumbnail = i.contentThumbnail
|
||||
return itemlist
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -2,11 +2,15 @@
|
||||
|
||||
import re
|
||||
|
||||
from core import filetools
|
||||
from core import jsontools
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core import servertools
|
||||
from core import tmdb
|
||||
from core import videolibrarytools
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
from platformcode import config, platformtools, logger
|
||||
|
||||
host = "http://www.clasicofilm.com/"
|
||||
# Configuracion del canal
|
||||
@@ -47,7 +51,6 @@ def mainlist(item):
|
||||
|
||||
|
||||
def configuracion(item):
|
||||
from platformcode import platformtools
|
||||
ret = platformtools.show_channel_settings()
|
||||
platformtools.itemlist_refresh()
|
||||
return ret
|
||||
@@ -55,13 +58,9 @@ def configuracion(item):
|
||||
|
||||
def search(item, texto):
|
||||
logger.info()
|
||||
|
||||
data = httptools.downloadpage(host).data
|
||||
cx = scrapertools.find_single_match(data, "var cx = '([^']+)'")
|
||||
texto = texto.replace(" ", "%20")
|
||||
item.url = "https://www.googleapis.com/customsearch/v1element?key=AIzaSyCVAXiUzRYsML1Pv6RwSG1gunmMikTzQqY&rsz=filtered_cse&num=20&hl=es&sig=0c3990ce7a056ed50667fe0c3873c9b6&cx=%s&q=%s&sort=&googlehost=www.google.com&start=0" % (
|
||||
cx, texto)
|
||||
|
||||
item.url = host + "search?q=%s" % texto
|
||||
try:
|
||||
return busqueda(item)
|
||||
# Se captura la excepción, para no interrumpir al buscador global si un canal falla
|
||||
@@ -104,7 +103,6 @@ def peliculas(item):
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
data = scrapertools.find_single_match(data, 'finddatepost\((\{.*?\]\}\})\);')
|
||||
from core import jsontools
|
||||
data = jsontools.load(data)["feed"]
|
||||
|
||||
for entry in data["entry"]:
|
||||
@@ -133,7 +131,6 @@ def peliculas(item):
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
|
||||
actualpage = int(scrapertools.find_single_match(item.url, 'start-index=(\d+)'))
|
||||
totalresults = int(data["openSearch$totalResults"]["$t"])
|
||||
if actualpage + 20 < totalresults:
|
||||
@@ -146,48 +143,22 @@ def peliculas(item):
|
||||
def busqueda(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item.text_color = color2
|
||||
|
||||
# Descarga la página
|
||||
data = httptools.downloadpage(item.url).data
|
||||
|
||||
from core import jsontools
|
||||
data = jsontools.load(data)
|
||||
|
||||
for entry in data["results"]:
|
||||
try:
|
||||
title = entry["richSnippet"]["metatags"]["ogTitle"]
|
||||
url = entry["richSnippet"]["metatags"]["ogUrl"]
|
||||
thumbnail = entry["richSnippet"]["metatags"]["ogImage"]
|
||||
except:
|
||||
continue
|
||||
|
||||
try:
|
||||
title_split = re.split(r"\s*\((\d)", title, 1)
|
||||
year = title_split[1] + scrapertools.find_single_match(title_split[2], '(\d{3})\)')
|
||||
fulltitle = title_split[0]
|
||||
except:
|
||||
fulltitle = title
|
||||
year = ""
|
||||
if not "DVD" in title and not "HDTV" in title and not "HD-" in title:
|
||||
continue
|
||||
infolabels = {'year': year}
|
||||
new_item = item.clone(action="findvideos", title=title, fulltitle=fulltitle,
|
||||
url=url, thumbnail=thumbnail, infoLabels=infolabels,
|
||||
contentTitle=fulltitle, contentType="movie")
|
||||
itemlist.append(new_item)
|
||||
|
||||
try:
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
|
||||
actualpage = int(scrapertools.find_single_match(item.url, 'start=(\d+)'))
|
||||
totalresults = int(data["cursor"]["resultCount"])
|
||||
if actualpage + 20 <= totalresults:
|
||||
url_next = item.url.replace("start=" + str(actualpage), "start=" + str(actualpage + 20))
|
||||
itemlist.append(Item(channel=item.channel, action="busqueda", title=">> Página Siguiente", url=url_next))
|
||||
|
||||
patron = """post-title entry-titl.*?href='([^']+)'"""
|
||||
patron += """>([^<]+).*?"""
|
||||
patron += """src="([^"]+)"""
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail in matches:
|
||||
year = scrapertools.find_single_match(scrapedtitle, "\(([0-9]{4})\)")
|
||||
ctitle = scrapedtitle.split("(")[0].strip()
|
||||
itemlist.append(item.clone(action = "findvideos",
|
||||
contentTitle = ctitle,
|
||||
infoLabels = {"year" : year},
|
||||
thumbnail = scrapedthumbnail,
|
||||
title = scrapedtitle,
|
||||
url = scrapedurl
|
||||
))
|
||||
tmdb.set_infoLabels(itemlist, __modo_grafico__)
|
||||
return itemlist
|
||||
|
||||
|
||||
@@ -197,9 +168,10 @@ def generos(item):
|
||||
|
||||
# Descarga la página
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<b>([^<]+)</b><br/>\s*<script src="([^"]+)"'
|
||||
patron = '<b>([^<]+)</b><br\s*/>\s*<script src="([^"]+)"'
|
||||
matches = scrapertools.find_multiple_matches(data, patron)
|
||||
for scrapedtitle, scrapedurl in matches:
|
||||
scrapedurl = scrapedurl.replace("&","&")
|
||||
scrapedurl = scrapedurl.replace("max-results=500", "start-index=1&max-results=20") \
|
||||
.replace("recentpostslist", "finddatepost")
|
||||
itemlist.append(Item(channel=item.channel, action="peliculas", title=scrapedtitle, url=scrapedurl,
|
||||
@@ -210,13 +182,13 @@ def generos(item):
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
from core import servertools
|
||||
|
||||
if item.infoLabels["tmdb_id"]:
|
||||
tmdb.set_infoLabels_item(item, __modo_grafico__)
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
iframe = scrapertools.find_single_match(data, '<iframe src="([^"]+)"')
|
||||
data = data.replace("googleusercontent","malo") # para que no busque enlaces erroneos de gvideo
|
||||
if "goo.gl/" in iframe:
|
||||
data += httptools.downloadpage(iframe, follow_redirects=False, only_headers=True).headers.get("location", "")
|
||||
itemlist = servertools.find_video_items(item, data)
|
||||
@@ -226,13 +198,11 @@ def findvideos(item):
|
||||
title = "Añadir película a la videoteca"
|
||||
if item.infoLabels["imdb_id"] and not library_path.lower().startswith("smb://"):
|
||||
try:
|
||||
from core import filetools
|
||||
movie_path = filetools.join(config.get_videolibrary_path(), 'CINE')
|
||||
files = filetools.walk(movie_path)
|
||||
for dirpath, dirname, filename in files:
|
||||
for f in filename:
|
||||
if item.infoLabels["imdb_id"] in f and f.endswith(".nfo"):
|
||||
from core import videolibrarytools
|
||||
head_nfo, it = videolibrarytools.read_nfo(filetools.join(dirpath, dirname, f))
|
||||
canales = it.library_urls.keys()
|
||||
canales.sort()
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -168,11 +168,11 @@ def episodios(item):
|
||||
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r'\n|\t|\s{2,}', '', data)
|
||||
patron = '<li id="showview_videos.*?href="([^"]+)".*?(?:src|data-thumbnailUrl)="([^"]+)".*?media_id="([^"]+)" ' \
|
||||
'style="width: (.*?)%.*?<span class="series-title.*?>\s*(.*?)</span>.*?<p class="short-desc".*?>' \
|
||||
patron = '<li id="showview_videos.*?href="([^"]+)".*?(?:src|data-thumbnailUrl)="([^"]+)".*?media_id="([^"]+)"' \
|
||||
'style="width:(.*?)%.*?<span class="series-title.*?>\s*(.*?)</span>.*?<p class="short-desc".*?>' \
|
||||
'\s*(.*?)</p>.*?description":"([^"]+)"'
|
||||
if data.count('class="season-dropdown') > 1:
|
||||
bloques = scrapertools.find_multiple_matches(data, 'class="season-dropdown[^"]+" title="([^"]+)"(.*?)</ul>')
|
||||
bloques = scrapertools.find_multiple_matches(data, 'class="season-dropdown[^"]+".*?title="([^"]+)"(.*?)</ul>')
|
||||
for season, b in bloques:
|
||||
matches = scrapertools.find_multiple_matches(b, patron)
|
||||
if matches:
|
||||
@@ -209,7 +209,6 @@ def episodios(item):
|
||||
Item(channel=item.channel, action="play", title=title, url=url, thumbnail=thumb, media_id=media_id,
|
||||
server="crunchyroll", text_color=item.text_color, contentTitle=item.contentTitle,
|
||||
contentSerieName=item.contentSerieName, contentType="tvshow"))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
|
||||
@@ -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": [
|
||||
@@ -36,6 +21,14 @@
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_torrent",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Torrent",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1223,3 +1223,25 @@ def browser(url):
|
||||
response = r.read()
|
||||
|
||||
return response
|
||||
|
||||
def newest(categoria):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'torrent':
|
||||
item.url = 'http://cuelgame.net/?category=4'
|
||||
|
||||
itemlist = scraper(item)
|
||||
|
||||
if itemlist[-1].action == "Página siguiente >>":
|
||||
itemlist.pop()
|
||||
|
||||
# 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("{0}".format(line))
|
||||
return []
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
203
plugin.video.alfa/channels/danimados.py
Normal file
203
plugin.video.alfa/channels/danimados.py
Normal file
@@ -0,0 +1,203 @@
|
||||
# -*- 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="lista", title="Peliculas Animadas", url=host+"peliculas/",
|
||||
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)
|
||||
if item.title=="Peliculas Animadas":
|
||||
data_lista = scrapertools.find_single_match(data,
|
||||
'<div id="archive-content" class="animation-2 items">(.*)<a href=\'')
|
||||
else:
|
||||
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:
|
||||
if item.title=="Peliculas Animadas":
|
||||
itemlist.append(
|
||||
item.clone(title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail, contentType="movie",
|
||||
plot=scrapedplot, action="findvideos", show=scrapedtitle))
|
||||
else:
|
||||
itemlist.append(
|
||||
item.clone(title=scrapedtitle, url=scrapedurl, thumbnail=scrapedthumbnail,
|
||||
context=autoplay.context,plot=scrapedplot, action="episodios", show=scrapedtitle))
|
||||
if item.title!="Peliculas Animadas":
|
||||
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 yellow]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="(.+?)"'
|
||||
logger.info("assfxxv "+data)
|
||||
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 "youtube" in url:
|
||||
server='youtube'
|
||||
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))
|
||||
if config.get_videolibrary_support() and len(itemlist) > 0 and item.contentType=="movie" and item.contentChannel!='videolibrary':
|
||||
itemlist.append(
|
||||
item.clone(channel=item.channel, title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', url=item.url,
|
||||
action="add_pelicula_to_library", contentTitle=item.show))
|
||||
|
||||
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": [
|
||||
@@ -66,6 +43,14 @@
|
||||
"default": false,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_torrent",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Torrent",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -42,12 +42,12 @@ def mainlist(item):
|
||||
fanart="http://i.imgur.com/ggFFR8o.png"))
|
||||
itemlist.append(item.clone(title="", action=""))
|
||||
itemlist.append(item.clone(title="Buscar...", action="search"))
|
||||
itemlist.append(item.clone(action="configuracion", title="Configurar canal...", text_color="gold", folder=False))
|
||||
itemlist.append(item.clone(action="setting_channel", title="Configurar canal...", text_color="gold", folder=False))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def configuracion(item):
|
||||
def setting_channel(item):
|
||||
from platformcode import platformtools
|
||||
ret = platformtools.show_channel_settings()
|
||||
platformtools.itemlist_refresh()
|
||||
@@ -108,13 +108,15 @@ def busqueda(item):
|
||||
|
||||
def lista(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist = list()
|
||||
|
||||
itemlist.append(item.clone(title="Novedades", action="entradas", url="%s/peliculas" % host))
|
||||
itemlist.append(item.clone(title="Estrenos", action="entradas", url="%s/peliculas/estrenos" % host))
|
||||
itemlist.append(item.clone(title="Dvdrip", action="entradas", url="%s/peliculas/dvdrip" % host))
|
||||
itemlist.append(item.clone(title="HD (720p/1080p)", action="entradas", url="%s/peliculas/hd" % host))
|
||||
itemlist.append(item.clone(title="4K", action="entradas", url="%s/peliculas/4k" % host))
|
||||
itemlist.append(item.clone(title="HDRIP", action="entradas", url="%s/peliculas/hdrip" % host))
|
||||
|
||||
itemlist.append(item.clone(title="Latino", action="entradas",
|
||||
url="%s/peliculas/latino-peliculas" % host))
|
||||
itemlist.append(item.clone(title="VOSE", action="entradas", url="%s/peliculas/subtituladas" % host))
|
||||
@@ -125,7 +127,7 @@ def lista(item):
|
||||
|
||||
def lista_series(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
itemlist = list()
|
||||
|
||||
itemlist.append(item.clone(title="Novedades", action="entradas", url="%s/series/" % host))
|
||||
itemlist.append(item.clone(title="Miniseries", action="entradas", url="%s/series/miniseries" % host))
|
||||
@@ -254,7 +256,7 @@ def episodios(item):
|
||||
return itemlist
|
||||
|
||||
|
||||
def epienlaces(item):
|
||||
def episode_links(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item.text_color = color3
|
||||
@@ -286,7 +288,7 @@ def epienlaces(item):
|
||||
else:
|
||||
if servertools.is_server_enabled(scrapedserver):
|
||||
try:
|
||||
servers_module = __import__("servers." + scrapedserver)
|
||||
# servers_module = __import__("servers." + scrapedserver)
|
||||
lista_enlaces.append(item.clone(action="play", title=titulo, server=scrapedserver, url=scrapedurl,
|
||||
extra=item.url))
|
||||
except:
|
||||
@@ -302,13 +304,14 @@ def epienlaces(item):
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
if (item.extra and item.extra != "findvideos") or item.path:
|
||||
return epienlaces(item)
|
||||
if item.contentSeason != '':
|
||||
return episode_links(item)
|
||||
|
||||
itemlist = []
|
||||
item.text_color = color3
|
||||
|
||||
data = get_data(item.url)
|
||||
|
||||
item.plot = scrapertools.find_single_match(data, 'SINOPSIS(?:</span>|</strong>):(.*?)</p>')
|
||||
year = scrapertools.find_single_match(data, '(?:<span class="bold">|<strong>)AÑO(?:</span>|</strong>):\s*(\d+)')
|
||||
if year:
|
||||
@@ -346,9 +349,9 @@ def findvideos(item):
|
||||
patron = 'make_links.*?,[\'"]([^"\']+)["\']'
|
||||
matches = scrapertools.find_multiple_matches(data_online, patron)
|
||||
for i, code in enumerate(matches):
|
||||
enlace = mostrar_enlaces(code)
|
||||
enlaces = servertools.findvideos(data=enlace[0])
|
||||
if enlaces and "peliculas.nu" not in enlaces:
|
||||
enlace = show_links(code)
|
||||
links = servertools.findvideos(data=enlace[0])
|
||||
if links and "peliculas.nu" not in links:
|
||||
if i == 0:
|
||||
extra_info = scrapertools.find_single_match(data_online, '<span class="tooltiptext">(.*?)</span>')
|
||||
size = scrapertools.find_single_match(data_online, '(?i)TAMAÑO:\s*(.*?)<').strip()
|
||||
@@ -362,8 +365,8 @@ def findvideos(item):
|
||||
new_item.title += " +INFO"
|
||||
itemlist.append(new_item)
|
||||
|
||||
title = " Ver vídeo en " + enlaces[0][2]
|
||||
itemlist.append(item.clone(action="play", server=enlaces[0][2], title=title, url=enlaces[0][1]))
|
||||
title = " Ver vídeo en " + links[0][2]
|
||||
itemlist.append(item.clone(action="play", server=links[0][2], title=title, url=links[0][1]))
|
||||
scriptg = scrapertools.find_single_match(data, "<script type='text/javascript'>str='([^']+)'")
|
||||
if scriptg:
|
||||
gvideo = urllib.unquote_plus(scriptg.replace("@", "%"))
|
||||
@@ -419,9 +422,9 @@ def findvideos(item):
|
||||
continue
|
||||
if servertools.is_server_enabled(scrapedserver):
|
||||
try:
|
||||
servers_module = __import__("servers." + scrapedserver)
|
||||
# servers_module = __import__("servers." + scrapedserver)
|
||||
# Saca numero de enlaces
|
||||
urls = mostrar_enlaces(scrapedurl)
|
||||
urls = show_links(scrapedurl)
|
||||
numero = str(len(urls))
|
||||
titulo = " %s - Nº enlaces: %s" % (titulo, numero)
|
||||
itemlist.append(item.clone(action="enlaces", title=titulo, extra=scrapedurl, server=scrapedserver))
|
||||
@@ -449,12 +452,13 @@ def play(item):
|
||||
headers=headers, follow_redirects=False).data
|
||||
|
||||
url = scrapertools.find_single_match(data, 'url":"([^"]+)"').replace("\\", "")
|
||||
if "enlacesmix" in url:
|
||||
|
||||
if "enlacesmix" in url or "enlacesws.com" in url:
|
||||
data = httptools.downloadpage(url, headers={'Referer': item.extra}, follow_redirects=False).data
|
||||
url = scrapertools.find_single_match(data, '<iframe.*?src="([^"]+)"')
|
||||
enlaces = servertools.findvideosbyserver(url, item.server)
|
||||
if enlaces:
|
||||
itemlist.append(item.clone(action="play", server=enlaces[0][2], url=enlaces[0][1]))
|
||||
links = servertools.findvideosbyserver(url, item.server)
|
||||
if links:
|
||||
itemlist.append(item.clone(action="play", server=links[0][2], url=links[0][1]))
|
||||
else:
|
||||
itemlist.append(item.clone())
|
||||
|
||||
@@ -465,13 +469,13 @@ def enlaces(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
urls = mostrar_enlaces(item.extra)
|
||||
urls = show_links(item.extra)
|
||||
numero = len(urls)
|
||||
for enlace in urls:
|
||||
enlaces = servertools.findvideos(data=enlace)
|
||||
if enlaces:
|
||||
for link in enlaces:
|
||||
if "/folder/" in enlace:
|
||||
for url in urls:
|
||||
links = servertools.findvideos(data=url)
|
||||
if links:
|
||||
for link in links:
|
||||
if "/folder/" in url:
|
||||
titulo = link[0]
|
||||
else:
|
||||
titulo = "%s - Enlace %s" % (item.title.split("-")[0], str(numero))
|
||||
@@ -482,7 +486,7 @@ def enlaces(item):
|
||||
return itemlist
|
||||
|
||||
|
||||
def mostrar_enlaces(data):
|
||||
def show_links(data):
|
||||
import base64
|
||||
data = data.split(",")
|
||||
len_data = len(data)
|
||||
@@ -535,3 +539,38 @@ def get_data(url_orig, get_host=False):
|
||||
break
|
||||
|
||||
return response.data
|
||||
|
||||
|
||||
def newest(categoria):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'torrent':
|
||||
item.url = host+'/peliculas'
|
||||
|
||||
itemlist = entradas(item)
|
||||
if itemlist[-1].title == ">> Siguiente":
|
||||
itemlist.pop()
|
||||
|
||||
item.url = host + '/series'
|
||||
|
||||
itemlist.extend(entradas(item))
|
||||
if itemlist[-1].title == ">> Siguiente":
|
||||
itemlist.pop()
|
||||
|
||||
item.url = host + '/anime'
|
||||
|
||||
itemlist.extend(entradas(item))
|
||||
|
||||
if itemlist[-1].title == ">> Siguiente":
|
||||
itemlist.pop()
|
||||
|
||||
# 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,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",
|
||||
@@ -58,6 +35,14 @@
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_torrent",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Torrent",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -94,7 +94,7 @@ def newest(categoria):
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'peliculas':
|
||||
if categoria in ['peliculas', 'torrent']:
|
||||
item.url = "http://www.divxatope1.com/peliculas"
|
||||
|
||||
elif categoria == 'series':
|
||||
@@ -260,14 +260,16 @@ def findvideos(item):
|
||||
item.plot = scrapertools.find_single_match(data, '<div class="post-entry" style="height:300px;">(.*?)</div>')
|
||||
item.plot = scrapertools.htmlclean(item.plot).strip()
|
||||
item.contentPlot = item.plot
|
||||
|
||||
link = scrapertools.find_single_match(data, 'location\.href.*?=.*?"http:\/\/(?:tumejorserie|tumejorjuego).*?link=(.*?)"')
|
||||
if link != "":
|
||||
link = "http://www.divxatope1.com/" + link
|
||||
logger.info("torrent=" + link)
|
||||
al_url_fa = scrapertools.find_single_match(data, 'location\.href.*?=.*?"http:\/\/(?:tumejorserie|tumejorjuego).*?link=(.*?)"')
|
||||
if al_url_fa == "":
|
||||
al_url_fa = scrapertools.find_single_match(data,
|
||||
'location\.href.*?=.*?"http:\/\/divxatope1.com/(.*?)"')
|
||||
if al_url_fa != "":
|
||||
al_url_fa = "http://www.divxatope1.com/" + al_url_fa
|
||||
logger.info("torrent=" + al_url_fa)
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, action="play", server="torrent", title="Vídeo en torrent", fulltitle=item.title,
|
||||
url=link, thumbnail=servertools.guess_server_thumbnail("torrent"), plot=item.plot, folder=False,
|
||||
url=al_url_fa, thumbnail=servertools.guess_server_thumbnail("torrent"), plot=item.plot, folder=False,
|
||||
parentContent=item))
|
||||
|
||||
patron = '<div class=\"box1\"[^<]+<img[^<]+<\/div[^<]+<div class="box2">([^<]+)<\/div[^<]+<div class="box3">([^<]+)'
|
||||
|
||||
@@ -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",
|
||||
@@ -37,6 +26,14 @@
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_torrent",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Torrent",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1020,3 +1020,26 @@ def ext_size(url):
|
||||
ext_v = ext_v + " -- No reproducible"
|
||||
size = ""
|
||||
return ext_v, size
|
||||
|
||||
def newest(categoria):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'torrent':
|
||||
item.url = 'http://www.divxtotal.com/peliculas/'
|
||||
item.contentType="movie"
|
||||
|
||||
itemlist = scraper(item)
|
||||
|
||||
if itemlist[-1].title == "[COLOR springgreen][B]Siguiente >>[/B][/COLOR]":
|
||||
itemlist.pop()
|
||||
|
||||
# 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("{0}".format(line))
|
||||
return []
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
|
||||
@@ -55,6 +55,14 @@
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_latino",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Latino",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -202,7 +202,7 @@ def newest(categoria):
|
||||
item = Item()
|
||||
# categoria='peliculas'
|
||||
try:
|
||||
if categoria == 'peliculas':
|
||||
if categoria in ['peliculas', 'latino']:
|
||||
item.url = host +'peliculas/page/1'
|
||||
elif categoria == 'infantiles':
|
||||
item.url = host + 'categoria/animacion/'
|
||||
@@ -222,9 +222,14 @@ def newest(categoria):
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
#itemlist = get_url(item)
|
||||
data = httptools.downloadpage(item.url).data
|
||||
data = re.sub(r'"|\n|\r|\t| |<br>|\s{2,}', "", data)
|
||||
player_vip = scrapertools.find_single_match(data, 'src=(https:\/\/content.jwplatform.com\/players.*?js)')
|
||||
data_m3u8 = httptools.downloadpage(player_vip, headers= {'referer':item.url}).data
|
||||
data_m3u8 = re.sub(r'"|\n|\r|\t| |<br>|\s{2,}', "", data_m3u8)
|
||||
url_m3u8 = scrapertools.find_single_match(data_m3u8,',sources:.*?file: (.*?),')
|
||||
itemlist.append(item.clone(url=url_m3u8, action='play'))
|
||||
|
||||
patron = 'id=(tab\d+)><div class=movieplay><(?:iframe|script) src=(.*?)(?:scrolling|><\/script>)'
|
||||
matches = re.compile(patron, re.DOTALL).findall(data)
|
||||
|
||||
|
||||
@@ -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,26 +6,21 @@
|
||||
"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",
|
||||
"tvshow",
|
||||
"documentary",
|
||||
"vos"
|
||||
],
|
||||
"settings":[
|
||||
{
|
||||
"id": "include_in_newest_torrent",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Torrent",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -105,3 +105,24 @@ def play(item):
|
||||
thumbnail=item.thumbnail, plot=item.plot, folder=False))
|
||||
|
||||
return itemlist
|
||||
|
||||
def newest(categoria):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'torrent':
|
||||
item.url = 'http://www.elitetorrent.wesconference.net/categoria/2/peliculas/modo:mini'
|
||||
|
||||
itemlist = peliculas(item)
|
||||
if itemlist[-1].title == "Página siguiente >>":
|
||||
itemlist.pop()
|
||||
|
||||
# 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("{0}".format(line))
|
||||
return []
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -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"
|
||||
],
|
||||
@@ -54,6 +31,14 @@
|
||||
"VOS"
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_latino",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Latino",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_peliculas",
|
||||
"type": "bool",
|
||||
@@ -79,4 +64,4 @@
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -457,7 +457,7 @@ def newest(categoria):
|
||||
item = Item()
|
||||
# categoria='peliculas'
|
||||
try:
|
||||
if categoria == 'peliculas':
|
||||
if categoria in ['peliculas','latino']:
|
||||
item.url = host
|
||||
elif categoria == 'infantiles':
|
||||
item.url = host + 'search?q=animación'
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
@@ -25,6 +18,22 @@
|
||||
"default": false,
|
||||
"enabled": false,
|
||||
"visible": false
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_castellano",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Castellano",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "include_in_newest_latino",
|
||||
"type": "bool",
|
||||
"label": "Incluir en Novedades - Latino",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -12,10 +12,11 @@ from core import tmdb
|
||||
from core.item import Item
|
||||
from platformcode import logger
|
||||
|
||||
host = 'http://gnula.mobi/'
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
itemlist = list()
|
||||
itemlist.append(item.clone(title="Novedades", action="peliculas", url="http://gnula.mobi/"))
|
||||
itemlist.append(item.clone(title="Novedades", action="peliculas", url=host))
|
||||
itemlist.append(item.clone(title="Castellano", action="peliculas",
|
||||
url="http://www.gnula.mobi/tag/espanol/"))
|
||||
itemlist.append(item.clone(title="Latino", action="peliculas", url="http://gnula.mobi/tag/latino/"))
|
||||
@@ -113,3 +114,25 @@ def findvideos(item):
|
||||
def play(item):
|
||||
item.thumbnail = item.contentThumbnail
|
||||
return [item]
|
||||
|
||||
def newest(categoria):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
item = Item()
|
||||
try:
|
||||
if categoria == 'peliculas':
|
||||
item.url = host
|
||||
elif categoria == 'castellano':
|
||||
item.url = host +'tag/espanol/'
|
||||
elif categoria == 'latino':
|
||||
item.url = host +'tag/latino/'
|
||||
itemlist = peliculas(item)
|
||||
if "Pagina" in itemlist[-1].title:
|
||||
itemlist.pop()
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("{0}".format(line))
|
||||
return []
|
||||
|
||||
return itemlist
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
|
||||
@@ -51,8 +51,6 @@ def generos(item):
|
||||
|
||||
def peliculas(item):
|
||||
logger.info()
|
||||
|
||||
# Descarga la página
|
||||
data = httptools.downloadpage(item.url).data
|
||||
patron = '<a class="Ntooltip" href="([^"]+)">([^<]+)<span><br[^<]+'
|
||||
patron += '<img src="([^"]+)"></span></a>(.*?)<br'
|
||||
@@ -61,25 +59,21 @@ def peliculas(item):
|
||||
for scrapedurl, scrapedtitle, scrapedthumbnail, resto in matches:
|
||||
language = []
|
||||
plot = scrapertools.htmlclean(resto).strip()
|
||||
logger.debug('plot: %s' % plot)
|
||||
languages = scrapertools.find_multiple_matches(plot, r'\((V.)\)')
|
||||
quality = scrapertools.find_single_match(plot, r'(?:\[.*?\].*?)\[(.*?)\]')
|
||||
for lang in languages:
|
||||
language.append(lang)
|
||||
logger.debug('languages: %s' % languages)
|
||||
title = scrapedtitle + " " + plot
|
||||
contentTitle = scrapedtitle
|
||||
url = item.url + scrapedurl
|
||||
if not scrapedurl.startswith("http"):
|
||||
scrapedurl = item.url + scrapedurl
|
||||
itemlist.append(Item(channel = item.channel,
|
||||
action = 'findvideos',
|
||||
title = title,
|
||||
url = url,
|
||||
url = scrapedurl,
|
||||
thumbnail = scrapedthumbnail,
|
||||
plot = plot,
|
||||
hasContentDetails = True,
|
||||
contentTitle = contentTitle,
|
||||
contentTitle = scrapedtitle,
|
||||
contentType = "movie",
|
||||
context = ["buscar_trailer"],
|
||||
language=language,
|
||||
quality=quality
|
||||
))
|
||||
@@ -89,13 +83,11 @@ def peliculas(item):
|
||||
def findvideos(item):
|
||||
logger.info("item=" + item.tostring())
|
||||
itemlist = []
|
||||
|
||||
# Descarga la página para obtener el argumento
|
||||
data = httptools.downloadpage(item.url).data
|
||||
item.plot = scrapertools.find_single_match(data, '<div class="entry">(.*?)<div class="iframes">')
|
||||
item.plot = scrapertools.htmlclean(item.plot).strip()
|
||||
item.contentPlot = item.plot
|
||||
patron = 'Ver película online.*?>.*?>([^<]+)'
|
||||
patron = '<strong>Ver película online.*?>.*?>([^<]+)'
|
||||
scrapedopcion = scrapertools.find_single_match(data, patron)
|
||||
titulo_opcional = scrapertools.find_single_match(scrapedopcion, ".*?, (.*)").upper()
|
||||
bloque = scrapertools.find_multiple_matches(data, 'contenedor_tab.*?/table')
|
||||
|
||||
73
plugin.video.alfa/channels/pasateatorrent.json → plugin.video.alfa/channels/grantorrent.json
Executable file → Normal file
73
plugin.video.alfa/channels/pasateatorrent.json → plugin.video.alfa/channels/grantorrent.json
Executable file → Normal file
@@ -1,40 +1,33 @@
|
||||
{
|
||||
"id": "pasateatorrent",
|
||||
"name": "PasateaTorrent",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"thumbnail": "http://imgur.com/iLeISt0.png",
|
||||
"banner": "pasateatorrent.png",
|
||||
"fanart": "http://imgur.com/uexmGEg.png",
|
||||
"version": 1,
|
||||
"changes": [
|
||||
{
|
||||
"date": "25/08/2017",
|
||||
"description": "Revamp"
|
||||
}
|
||||
],
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
"tvshow"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "modo_grafico",
|
||||
"type": "bool",
|
||||
"label": "Buscar información extra (TMDB)",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"id": "grantorrent",
|
||||
"name": "GranTorrent",
|
||||
"active": true,
|
||||
"adult": false,
|
||||
"language": ["cast"],
|
||||
"thumbnail": "grantorrent.jpg",
|
||||
"banner": "grantorrent.png",
|
||||
"fanart": "grantorrent.png",
|
||||
"categories": [
|
||||
"torrent",
|
||||
"movie",
|
||||
"tvshow"
|
||||
],
|
||||
"settings": [
|
||||
{
|
||||
"id": "include_in_global_search",
|
||||
"type": "bool",
|
||||
"label": "Incluir en busqueda global",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"id": "modo_grafico",
|
||||
"type": "bool",
|
||||
"label": "Buscar información extra (TMDB)",
|
||||
"default": true,
|
||||
"enabled": true,
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
546
plugin.video.alfa/channels/pasateatorrent.py → plugin.video.alfa/channels/grantorrent.py
Executable file → Normal file
546
plugin.video.alfa/channels/pasateatorrent.py → plugin.video.alfa/channels/grantorrent.py
Executable file → Normal file
@@ -1,273 +1,273 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
from channelselector import get_thumb
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
|
||||
host = "https://pasateatorrent.com/"
|
||||
|
||||
dict_url_seasons = dict()
|
||||
__modo_grafico__ = config.get_setting('modo_grafico', 'pasateatorrent')
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
|
||||
thumb_movie = get_thumb("channels_movie.png")
|
||||
thumb_tvshow = get_thumb("channels_tvshow.png")
|
||||
|
||||
itemlist = list()
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title="Peliculas", action="peliculas", thumbnail=thumb_movie))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title="Series", action="series", thumbnail=thumb_tvshow))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def peliculas(item):
|
||||
logger.info()
|
||||
|
||||
thumb_search = get_thumb("search.png")
|
||||
|
||||
itemlist = list()
|
||||
itemlist.append(item.clone(channel=item.channel, title="Novedades", action="listado", url=host))
|
||||
# itemlist.append(item.clone(channel=item.channel, title="Filtrar películas", action="listado", url=host))
|
||||
itemlist.append(item.clone(channel=item.channel, title="Buscar", action="search", url=host, media="película",
|
||||
thumbnail=thumb_search))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def series(item):
|
||||
logger.info()
|
||||
|
||||
thumb_search = get_thumb("search.png")
|
||||
|
||||
itemlist = list()
|
||||
itemlist.append(item.clone(channel=item.channel, title="Novedades", action="listado", url=host + "series/"))
|
||||
# itemlist.append(item.clone(channel=item.channel, title="Filtrar series", action="listado", url=host))
|
||||
itemlist.append(item.clone(channel=item.channel, title="Buscar", action="search", url=host + "series/",
|
||||
media="serie", thumbnail=thumb_search))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info("texto:" + texto)
|
||||
texto = texto.replace(" ", "+")
|
||||
itemlist = []
|
||||
|
||||
try:
|
||||
url = "%s?s=%s&post_type=Buscar+%s" % (item.url, texto, item.media)
|
||||
data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(url).data)
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
|
||||
video_section = scrapertools.find_single_match(data, '<div class="contenedor_imagenes">(.*?)</div><center>')
|
||||
|
||||
pattern = '<a href="(?P<url>[^"]+)">.*?<img.*?src="(?P<thumb>[^"]+)".*?class="bloque_inferior">' \
|
||||
'(?P<title>.*?)</div>'
|
||||
|
||||
matches = re.compile(pattern, re.DOTALL).findall(video_section)
|
||||
|
||||
for url, thumb, title in matches:
|
||||
if item.media == "serie":
|
||||
action = "episodios"
|
||||
else:
|
||||
action = "findvideos"
|
||||
itemlist.append(Item(channel=item.channel, action=action, title=title, url=url, thumbnail=thumb,
|
||||
contentTitle=title, contentType="movie"))
|
||||
|
||||
return itemlist
|
||||
|
||||
# Se captura la excepción, para no interrumpir al buscador global si un canal falla
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def listado(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data)
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
|
||||
video_section = scrapertools.find_single_match(data, '<div class="contenedor_imagenes">(.*?)</div><center>')
|
||||
# logger.debug("data %s \n\n" % video_section)
|
||||
|
||||
pattern = '<a href="(?P<url>[^"]+)">.*?<img.*?src="(?P<thumb>[^"]+)".*?class="bloque_superior">\s*' \
|
||||
'(?P<quality>.*?)\s*</div>.*?src="(?P<lang>[^"]+)".*?class="bloque_inferior">\s*(?P<title>.*?)\s*' \
|
||||
'</div>.*?class="div_inferior_date">\s*(?P<date>.*?)\s*</div>'
|
||||
|
||||
matches = re.compile(pattern, re.DOTALL).findall(video_section)
|
||||
|
||||
for url, thumb, quality, lang, title, date in matches:
|
||||
title = scrapertools.htmlclean(title)
|
||||
title = re.sub(r"\s{2}", " ", title)
|
||||
|
||||
if "/series" in item.url:
|
||||
if quality:
|
||||
title2 = "%s [%s]" % (title, quality)
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="episodios", title=title2, url=url, thumbnail=thumb,
|
||||
quality=quality, contentTitle=title, contentType="tvshow"))
|
||||
else:
|
||||
|
||||
if quality:
|
||||
title2 = "%s [%s]" % (title, quality)
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos", title=title2, url=url, thumbnail=thumb,
|
||||
quality=quality, contentTitle=title, contentType="movie"))
|
||||
|
||||
pagination = scrapertools.find_single_match(data, '<div class="navigation">(.*?)</ul>')
|
||||
if pagination:
|
||||
next_page = scrapertools.find_single_match(pagination, 'class="active"><a.*?<a.*?href="([^"]+)')
|
||||
# logger.debug("next %s" % next_page)
|
||||
if next_page:
|
||||
itemlist.append(Item(channel=item.channel, action="listado", title=">> Página siguiente", url=next_page,
|
||||
thumbnail=get_thumb("next.png")))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def episodios(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
dict_data = dict()
|
||||
dict_data, item = get_episodes(item, dict_data)
|
||||
|
||||
for key in dict_data.keys():
|
||||
d = dict_data[key]
|
||||
quality = "[%s]" % "][".join(d["quality"])
|
||||
|
||||
d["s_e"] = re.sub(r"\(Contrase.*?\)\s*", "NO REPRODUCIBLE-RAR", d["s_e"])
|
||||
title = "%s [%s] %s" % (d["s_e"], d["lang"], quality)
|
||||
logger.debug("bla %s" % d["s_e"])
|
||||
|
||||
if "temporada" in d["s_e"].lower():
|
||||
regex = re.compile('temporada\s*', re.I)
|
||||
d["s_e"] = regex.sub("", d["s_e"])
|
||||
season = scrapertools.find_single_match(d["s_e"], "(\d+)")
|
||||
episode = 1
|
||||
else:
|
||||
season, episode = scrapertools.find_single_match(d["s_e"], "(\d+)×(\d+)")
|
||||
|
||||
itemlist.append(item.clone(action="findvideos", title=title, thumbnail=item.thumbnail, url=d["url"],
|
||||
server="torrent", contentSeason=season, contentEpisodeNumber=episode,
|
||||
contentType="tvshow", fulltitle=item.title, quality=d["quality"], lang=d["lang"]))
|
||||
|
||||
# order list
|
||||
if len(itemlist) > 1:
|
||||
itemlist = sorted(itemlist, key=lambda it: (int(it.contentSeason), int(it.contentEpisodeNumber)))
|
||||
|
||||
try:
|
||||
from core import tmdb
|
||||
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def get_episodes(item, dict_data):
|
||||
global dict_url_seasons
|
||||
|
||||
data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data)
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
if item.contentTitle != "":
|
||||
title = scrapertools.find_single_match(data, '<div class="titulo_page_exit">(.*?)[.]</div>')
|
||||
year = scrapertools.find_single_match(data, '<div class="ano_page_exit">(\d+)</div>')
|
||||
# logger.debug("title es %s" % title)
|
||||
if title:
|
||||
item.contentTitle = title
|
||||
item.show = title
|
||||
if year:
|
||||
item.infoLabels['year'] = year
|
||||
|
||||
links_section = scrapertools.find_single_match(data, 'div id="Tokyo" [^>]+>(.*?)</div>')
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
|
||||
pattern = 'icono_.*?png" title="(?P<lang>.*?)" [^>]+></td><td>(?P<s_e>.*?)</td><td>(?P<quality>.*?)</td><td>' \
|
||||
'<a href="(?P<url>[^"]+)"'
|
||||
matches = re.compile(pattern, re.DOTALL).findall(links_section)
|
||||
for lang, s_e, quality, url in matches:
|
||||
if s_e + lang not in dict_data:
|
||||
dict_data[s_e + lang] = {"url": [url], "lang": lang, "s_e": s_e,
|
||||
"quality": [quality]}
|
||||
else:
|
||||
if quality not in dict_data[s_e+lang]["quality"]:
|
||||
dict_data[s_e + lang]["quality"].append(quality)
|
||||
dict_data[s_e + lang]["url"].append(url)
|
||||
|
||||
url_to_check = scrapertools.find_single_match(links_section, '</table><p><a .*?href="([^"]+)">Temporada.*?</a>')
|
||||
# logger.debug("url es %s " % url_to_check)
|
||||
|
||||
# if url doesn't exist we add it into the dict
|
||||
if url_to_check not in dict_url_seasons:
|
||||
dict_url_seasons[url_to_check] = False
|
||||
|
||||
for key, value in dict_url_seasons.items():
|
||||
if not value:
|
||||
item.url = key
|
||||
dict_url_seasons[key] = True
|
||||
dict_data, item = get_episodes(item, dict_data)
|
||||
|
||||
# logger.debug("URL_LIST es %s " % dict_url_seasons)
|
||||
|
||||
return dict_data, item
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
if item.contentType == "movie":
|
||||
|
||||
data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data)
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
|
||||
if item.contentTitle != "":
|
||||
title = scrapertools.find_single_match(data, '<div class="titulo_page_exit">(.*?)[.]</div>')
|
||||
year = scrapertools.find_single_match(data, '<div class="ano_page_exit">(\d+)</div>')
|
||||
logger.debug("title es %s" % title)
|
||||
if title:
|
||||
item.contentTitle = title
|
||||
item.show = title
|
||||
if year:
|
||||
item.infoLabels['year'] = year
|
||||
|
||||
links_section = scrapertools.find_single_match(data, 'div id="Tokyo" [^>]+>(.*?)</div>')
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
|
||||
pattern = 'icono_.*?png" title="(?P<lang>.*?)" [^>]+></td><td>(?P<quality>.*?)</td><td>(?P<size>.*?)</td><td>' \
|
||||
'<a href="(?P<url>[^"]+)"'
|
||||
matches = re.compile(pattern, re.DOTALL).findall(links_section)
|
||||
|
||||
for lang, quality, size, url in matches:
|
||||
title = "[%s] [%s] (%s)" % (lang, quality, size)
|
||||
|
||||
itemlist.append(item.clone(action="play", title=title, url=url, thumbnail=item.thumbnail, server="torrent",
|
||||
fulltitle=item.title))
|
||||
|
||||
try:
|
||||
from core import tmdb
|
||||
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
|
||||
else:
|
||||
for index, url in enumerate(item.url):
|
||||
title = "%sx%s [%s] [%s]" % (item.contentSeason, item.contentEpisodeNumber, item.lang, item.quality[index])
|
||||
itemlist.append(item.clone(action="play", title=title, url=url, thumbnail=item.thumbnail, server="torrent",
|
||||
quality=item.quality[index]))
|
||||
|
||||
return itemlist
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
import re
|
||||
|
||||
from channelselector import get_thumb
|
||||
from core import httptools
|
||||
from core import scrapertools
|
||||
from core.item import Item
|
||||
from platformcode import config, logger
|
||||
|
||||
host = "https://grantorrent.com/"
|
||||
|
||||
dict_url_seasons = dict()
|
||||
__modo_grafico__ = config.get_setting('modo_grafico', 'grantorrent')
|
||||
|
||||
|
||||
def mainlist(item):
|
||||
logger.info()
|
||||
|
||||
thumb_movie = get_thumb("channels_movie.png")
|
||||
thumb_tvshow = get_thumb("channels_tvshow.png")
|
||||
|
||||
itemlist = list()
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title="Peliculas", action="peliculas", thumbnail=thumb_movie))
|
||||
itemlist.append(
|
||||
Item(channel=item.channel, title="Series", action="series", thumbnail=thumb_tvshow))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def peliculas(item):
|
||||
logger.info()
|
||||
|
||||
thumb_search = get_thumb("search.png")
|
||||
|
||||
itemlist = list()
|
||||
itemlist.append(item.clone(channel=item.channel, title="Novedades", action="listado", url=host))
|
||||
# itemlist.append(item.clone(channel=item.channel, title="Filtrar películas", action="listado", url=host))
|
||||
itemlist.append(item.clone(channel=item.channel, title="Buscar", action="search", url=host, media="película",
|
||||
thumbnail=thumb_search))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def series(item):
|
||||
logger.info()
|
||||
|
||||
thumb_search = get_thumb("search.png")
|
||||
|
||||
itemlist = list()
|
||||
itemlist.append(item.clone(channel=item.channel, title="Novedades", action="listado", url=host + "series/"))
|
||||
# itemlist.append(item.clone(channel=item.channel, title="Filtrar series", action="listado", url=host))
|
||||
itemlist.append(item.clone(channel=item.channel, title="Buscar", action="search", url=host + "series/",
|
||||
media="serie", thumbnail=thumb_search))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def search(item, texto):
|
||||
logger.info("texto:" + texto)
|
||||
texto = texto.replace(" ", "+")
|
||||
itemlist = []
|
||||
|
||||
try:
|
||||
url = "%s?s=%s" % (item.url, texto)
|
||||
data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(url).data)
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
|
||||
video_section = scrapertools.find_single_match(data, '<div class="contenedor-imagen">(.*?</div>)</div></div>')
|
||||
|
||||
pattern = '<a href="(?P<url>[^"]+)"><img.*?src="(?P<thumb>[^"]+)".*?class="bloque-inferior">' \
|
||||
'\s*(?P<title>.*?)\s*</div>'
|
||||
|
||||
matches = re.compile(pattern, re.DOTALL).findall(video_section)
|
||||
|
||||
for url, thumb, title in matches:
|
||||
if item.media == "serie":
|
||||
action = "episodios"
|
||||
else:
|
||||
action = "findvideos"
|
||||
itemlist.append(Item(channel=item.channel, action=action, title=title, url=url, thumbnail=thumb,
|
||||
contentTitle=title, contentType="movie"))
|
||||
|
||||
return itemlist
|
||||
|
||||
# Se captura la excepción, para no interrumpir al buscador global si un canal falla
|
||||
except:
|
||||
import sys
|
||||
for line in sys.exc_info():
|
||||
logger.error("%s" % line)
|
||||
return []
|
||||
|
||||
|
||||
def listado(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
|
||||
data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data)
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
|
||||
video_section = scrapertools.find_single_match(data, '<br><div class="contenedor-home">(.*?</div>)</div></div>')
|
||||
# logger.debug("data %s \n\n" % video_section)
|
||||
|
||||
pattern = '<a href="(?P<url>[^"]+)"><img.*?src="(?P<thumb>[^"]+)".*?.*?class="bloque-superior">\s*' \
|
||||
'(?P<quality>.*?)\s*<div class="imagen-idioma">\s*<img src=".*?icono_(?P<lang>[^\.]+).*?<div class=' \
|
||||
'"bloque-inferior">\s*(?P<title>.*?)\s*</div><div class="bloque-date">\s*(?P<date>.*?)\s*</div>'
|
||||
|
||||
matches = re.compile(pattern, re.DOTALL).findall(video_section)
|
||||
|
||||
for url, thumb, quality, lang, title, date in matches:
|
||||
title = scrapertools.htmlclean(title)
|
||||
title = re.sub(r"\s{2}", " ", title)
|
||||
|
||||
if "/series" in item.url:
|
||||
if quality:
|
||||
title2 = "%s [%s]" % (title, quality)
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="episodios", title=title2, url=url, thumbnail=thumb,
|
||||
quality=quality, contentTitle=title, contentType="tvshow"))
|
||||
else:
|
||||
|
||||
if quality:
|
||||
title2 = "%s [%s]" % (title, quality)
|
||||
|
||||
itemlist.append(Item(channel=item.channel, action="findvideos", title=title2, url=url, thumbnail=thumb,
|
||||
quality=quality, contentTitle=title, contentType="movie"))
|
||||
|
||||
pagination = scrapertools.find_single_match(data, '<div class="nav-links">(.*?)</ul>')
|
||||
if pagination:
|
||||
next_page = scrapertools.find_single_match(pagination, "class='page-numbers current'.*?<a.*?href='([^']+)'")
|
||||
# logger.debug("next %s" % next_page)
|
||||
if next_page:
|
||||
itemlist.append(Item(channel=item.channel, action="listado", title=">> Página siguiente", url=next_page,
|
||||
thumbnail=get_thumb("next.png")))
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def episodios(item):
|
||||
logger.info()
|
||||
|
||||
itemlist = []
|
||||
dict_data = dict()
|
||||
dict_data, item = get_episodes(item, dict_data)
|
||||
|
||||
for key in dict_data.keys():
|
||||
d = dict_data[key]
|
||||
quality = "[%s]" % "][".join(d["quality"])
|
||||
|
||||
d["s_e"] = re.sub(r"\(Contrase.*?\)\s*", "NO REPRODUCIBLE-RAR", d["s_e"])
|
||||
title = "%s [%s] %s" % (d["s_e"], d["lang"], quality)
|
||||
# logger.debug("%s" % d["s_e"])
|
||||
|
||||
if "temporada" in d["s_e"].lower():
|
||||
regex = re.compile('temporada\s*', re.I)
|
||||
d["s_e"] = regex.sub("", d["s_e"])
|
||||
season = scrapertools.find_single_match(d["s_e"], "(\d+)")
|
||||
episode = 1
|
||||
else:
|
||||
season, episode = scrapertools.find_single_match(d["s_e"], "(\d+)×(\d+)")
|
||||
|
||||
itemlist.append(item.clone(action="findvideos", title=title, thumbnail=item.thumbnail, url=d["url"],
|
||||
server="torrent", contentSeason=season, contentEpisodeNumber=episode,
|
||||
contentType="tvshow", fulltitle=item.title, quality=d["quality"], lang=d["lang"]))
|
||||
|
||||
# order list
|
||||
if len(itemlist) > 1:
|
||||
itemlist = sorted(itemlist, key=lambda it: (int(it.contentSeason), int(it.contentEpisodeNumber)))
|
||||
|
||||
try:
|
||||
from core import tmdb
|
||||
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
|
||||
return itemlist
|
||||
|
||||
|
||||
def get_episodes(item, dict_data):
|
||||
global dict_url_seasons
|
||||
|
||||
data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data)
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
if item.contentTitle != "":
|
||||
title = scrapertools.find_single_match(data, '<h3 class="bold">.*?original:\s*(.*?)[.]</h3>')
|
||||
year = scrapertools.find_single_match(data, '<h3 class="bold">\s*Estreno:\s*(\d+)[.]</h')
|
||||
# logger.debug("title es %s" % title)
|
||||
if title:
|
||||
item.contentTitle = title
|
||||
item.show = title
|
||||
if year:
|
||||
item.infoLabels['year'] = year
|
||||
|
||||
links_section = scrapertools.find_single_match(data, 'div id="Tokyo" [^>]+>(.*?)</div>')
|
||||
# logger.debug("data %s \n\n" % links_section)
|
||||
|
||||
pattern = 'icono_.*?png" title="(?P<lang>.*?)" [^>]+></td><td>(?P<s_e>.*?)</td><td>(?P<quality>.*?)</td><td>' \
|
||||
'<a class="link" href="(?P<url>[^"]+)"'
|
||||
matches = re.compile(pattern, re.DOTALL).findall(links_section)
|
||||
for lang, s_e, quality, url in matches:
|
||||
if s_e + lang not in dict_data:
|
||||
dict_data[s_e + lang] = {"url": [url], "lang": lang, "s_e": s_e,
|
||||
"quality": [quality]}
|
||||
else:
|
||||
if quality not in dict_data[s_e+lang]["quality"]:
|
||||
dict_data[s_e + lang]["quality"].append(quality)
|
||||
dict_data[s_e + lang]["url"].append(url)
|
||||
|
||||
url_to_check = scrapertools.find_single_match(links_section, '</table><p><a.*?href="([^"]+)".*?>\s*Temporada.*?</a>')
|
||||
# logger.debug("url es %s " % url_to_check)
|
||||
|
||||
# if url doesn't exist we add it into the dict
|
||||
if url_to_check and url_to_check not in dict_url_seasons:
|
||||
dict_url_seasons[url_to_check] = False
|
||||
|
||||
for key, value in dict_url_seasons.items():
|
||||
if not value:
|
||||
item.url = key
|
||||
dict_url_seasons[key] = True
|
||||
dict_data, item = get_episodes(item, dict_data)
|
||||
|
||||
# logger.debug("URL_LIST es %s " % dict_url_seasons)
|
||||
|
||||
return dict_data, item
|
||||
|
||||
|
||||
def findvideos(item):
|
||||
logger.info()
|
||||
itemlist = []
|
||||
|
||||
if item.contentType == "movie":
|
||||
|
||||
data = re.sub(r"\n|\r|\t|\s{2,}", "", httptools.downloadpage(item.url).data)
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
|
||||
if item.contentTitle != "":
|
||||
title = scrapertools.find_single_match(data, '<div class="titulo_page_exit">(.*?)[.]</div>')
|
||||
year = scrapertools.find_single_match(data, '<div class="ano_page_exit">(\d+)</div>')
|
||||
logger.debug("title es %s" % title)
|
||||
if title:
|
||||
item.contentTitle = title
|
||||
item.show = title
|
||||
if year:
|
||||
item.infoLabels['year'] = year
|
||||
|
||||
links_section = scrapertools.find_single_match(data, 'div id="Tokyo" [^>]+>(.*?)</div>')
|
||||
# logger.debug("data %s \n\n" % data)
|
||||
|
||||
pattern = 'icono_.*?png" title="(?P<lang>.*?)" [^>]+></td><td>(?P<quality>.*?)</td><td>(?P<size>.*?)</td><td>' \
|
||||
'<a class="link" href="(?P<url>[^"]+)"'
|
||||
matches = re.compile(pattern, re.DOTALL).findall(links_section)
|
||||
|
||||
for lang, quality, size, url in matches:
|
||||
title = "[%s] [%s] (%s)" % (lang, quality, size)
|
||||
|
||||
itemlist.append(item.clone(action="play", title=title, url=url, thumbnail=item.thumbnail, server="torrent",
|
||||
fulltitle=item.title))
|
||||
|
||||
try:
|
||||
from core import tmdb
|
||||
tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
|
||||
except:
|
||||
pass
|
||||
|
||||
else:
|
||||
for index, url in enumerate(item.url):
|
||||
title = "%sx%s [%s] [%s]" % (item.contentSeason, item.contentEpisodeNumber, item.lang, item.quality[index])
|
||||
itemlist.append(item.clone(action="play", title=title, url=url, thumbnail=item.thumbnail, server="torrent",
|
||||
quality=item.quality[index]))
|
||||
|
||||
return itemlist
|
||||
@@ -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"
|
||||
|
||||
@@ -310,7 +310,8 @@ def fichas(item):
|
||||
|
||||
for scrapedurl, scrapedthumbnail, scrapedlangs, scrapedrating, scrapedtitle, scrapedid in matches:
|
||||
|
||||
thumbnail = scrapedthumbnail.replace("/tthumb/130x190/", "/thumbs/")
|
||||
#thumbnail = scrapedthumbnail.replace("/tthumb/130x190/", "/thumbs/")
|
||||
thumbnail = scrapedthumbnail
|
||||
language = ''
|
||||
title = scrapedtitle.strip()
|
||||
show = title
|
||||
@@ -692,12 +693,10 @@ def findvideos(item):
|
||||
fanart = scrapertools.find_single_match(data, '<div style="background-image.url. ([^\s]+)')
|
||||
if account:
|
||||
url += "###" + id + ";" + type
|
||||
|
||||
it2.append(
|
||||
item.clone(channel=item.channel, action="play", title=title, url=url, thumbnail=thumbnail,
|
||||
plot=plot, fanart=fanart, show=item.show, folder=True, infoLabels=infolabels,
|
||||
contentTitle=item.title, contentType=item.contentType, tipo=option, tipo1=option1, idioma=idioma))
|
||||
|
||||
contentTitle=item.show, contentType=item.contentType, tipo=option, tipo1=option1, idioma=idioma))
|
||||
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:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user