]*>[^<]*<[^>]+href="\.([^"]+)".*?src-data="([^"]+)".*?' \
'
'
matches = scrapertools.find_multiple_matches(data, patron)
@@ -312,7 +312,6 @@ def fichas(item):
scrapedurl = host + scrapedurl.rsplit("-dc=")[0]
if not "-dc=" in scrapedurl:
scrapedurl += "-dc="
- scrapedthumbnail = host + scrapedthumbnail
action = "findvideos"
if __menu_info__:
action = "menu_info"
diff --git a/plugin.video.alfa/channels/playpornx.json b/plugin.video.alfa/channels/playpornx.json
index f8a62643..2e1d4f4c 100644
--- a/plugin.video.alfa/channels/playpornx.json
+++ b/plugin.video.alfa/channels/playpornx.json
@@ -3,7 +3,7 @@
"name": "PlayPornX",
"active": true,
"adult": true,
- "language": "es",
+ "language": ["*"],
"thumbnail": "https://s3.postimg.org/3rkfrnypv/playpornx.png",
"banner": "https://s3.postimg.org/it5qa1gyb/playpornx-banner.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/plusdede.json b/plugin.video.alfa/channels/plusdede.json
index a5464c28..6d9912ba 100755
--- a/plugin.video.alfa/channels/plusdede.json
+++ b/plugin.video.alfa/channels/plusdede.json
@@ -3,7 +3,7 @@
"name": "Plusdede",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast"],
"thumbnail": "plusdede.png",
"banner": "plusdede.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/pordede.json b/plugin.video.alfa/channels/pordede.json
index 65a34761..a99cd21e 100755
--- a/plugin.video.alfa/channels/pordede.json
+++ b/plugin.video.alfa/channels/pordede.json
@@ -3,7 +3,7 @@
"name": "Pordede",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast"],
"thumbnail": "pordede.png",
"banne": "pordede.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/pornhub.json b/plugin.video.alfa/channels/pornhub.json
index 6a7f4be6..f22c6134 100755
--- a/plugin.video.alfa/channels/pornhub.json
+++ b/plugin.video.alfa/channels/pornhub.json
@@ -3,7 +3,7 @@
"name": "PornHub",
"active": true,
"adult": true,
- "language": "es",
+ "language": ["*"],
"fanart": "http://i.imgur.com/PwFvoss.jpg",
"thumbnail": "http://s22.postimg.org/5lzcocfqp/pornhub_logo.jpg",
"banner": "pornhub.png",
diff --git a/plugin.video.alfa/channels/porntrex.json b/plugin.video.alfa/channels/porntrex.json
index b525c7b1..849a4ac9 100755
--- a/plugin.video.alfa/channels/porntrex.json
+++ b/plugin.video.alfa/channels/porntrex.json
@@ -1,7 +1,7 @@
{
"id": "porntrex",
"name": "Porntrex",
- "language": "es",
+ "language": ["*"],
"active": true,
"adult": true,
"version": 1,
diff --git a/plugin.video.alfa/channels/puyasubs.json b/plugin.video.alfa/channels/puyasubs.json
index e31841e6..95b2e7a9 100755
--- a/plugin.video.alfa/channels/puyasubs.json
+++ b/plugin.video.alfa/channels/puyasubs.json
@@ -3,7 +3,7 @@
"name": "PuyaSubs!",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "http://i.imgur.com/aad4psi.png",
"banner": "http://i.imgur.com/trFDT39.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/pymovie.json b/plugin.video.alfa/channels/pymovie.json
index 79f10b3e..cfbbdc10 100755
--- a/plugin.video.alfa/channels/pymovie.json
+++ b/plugin.video.alfa/channels/pymovie.json
@@ -3,7 +3,7 @@
"name": "pymovie",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "https://s27.postimg.org/hvmvz7vab/pymovie.png",
"banner": "https://s28.postimg.org/3k0wjnwul/pymovie_banner.png",
"version": 1,
@@ -22,7 +22,6 @@
}
],
"categories": [
- "latino",
"movie",
"tvshow",
"documentary"
diff --git a/plugin.video.alfa/channels/qserie.json b/plugin.video.alfa/channels/qserie.json
index 6839e07b..ebdaccbd 100755
--- a/plugin.video.alfa/channels/qserie.json
+++ b/plugin.video.alfa/channels/qserie.json
@@ -3,7 +3,7 @@
"name": "QSerie",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "https://s31.postimg.org/dousrbu9n/qserie.png",
"banner": "https://s32.postimg.org/nk1quq1wl/qserie_banner.png",
"version": 1,
@@ -22,7 +22,6 @@
}
],
"categories": [
- "latino",
"tvshow"
]
}
\ No newline at end of file
diff --git a/plugin.video.alfa/channels/quierodibujosanimados.json b/plugin.video.alfa/channels/quierodibujosanimados.json
index cba08198..538f5351 100755
--- a/plugin.video.alfa/channels/quierodibujosanimados.json
+++ b/plugin.video.alfa/channels/quierodibujosanimados.json
@@ -3,7 +3,7 @@
"name": "Quiero Dibujos Animados",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast"],
"thumbnail": "quierodibujosanimados.png",
"banner": "quierodibujosanimados.png",
"fanart": "quierodibujosanimados.jpg",
diff --git a/plugin.video.alfa/channels/repelis.json b/plugin.video.alfa/channels/repelis.json
index 2803277a..34e8b50b 100755
--- a/plugin.video.alfa/channels/repelis.json
+++ b/plugin.video.alfa/channels/repelis.json
@@ -3,7 +3,7 @@
"name": "Repelis",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "repelis.png",
"banner": "repelis.png",
"version": 1,
@@ -23,7 +23,8 @@
],
"categories": [
"movie",
- "documentary"
+ "documentary",
+ "vos"
],
"settings": [
{
diff --git a/plugin.video.alfa/channels/search.json b/plugin.video.alfa/channels/search.json
index e5808ff9..6cb3a753 100755
--- a/plugin.video.alfa/channels/search.json
+++ b/plugin.video.alfa/channels/search.json
@@ -3,7 +3,7 @@
"name": "Buscador global",
"active": false,
"adult": false,
- "language": "es",
+ "language": ["*"],
"version": 1,
"changes": [
{
diff --git a/plugin.video.alfa/channels/search.py b/plugin.video.alfa/channels/search.py
index 4ae621fc..73a0190a 100644
--- a/plugin.video.alfa/channels/search.py
+++ b/plugin.video.alfa/channels/search.py
@@ -70,10 +70,7 @@ def settings(item):
def setting_channel(item):
channels_path = os.path.join(config.get_runtime_path(), "channels", '*.json')
- channel_language = config.get_setting("channel_language")
-
- if channel_language == "":
- channel_language = "all"
+ channel_language = config.get_setting("channel_language", default="all")
list_controls = []
for infile in sorted(glob.glob(channels_path)):
@@ -89,7 +86,8 @@ def setting_channel(item):
continue
# No incluir si el canal es en un idioma filtrado
- if channel_language != "all" and channel_parameters["language"] != channel_language:
+ if channel_language != "all" and channel_language not in channel_parameters["language"] \
+ and "*" not in channel_parameters["language"]:
continue
# No incluir si en la configuracion del canal no existe "include_in_global_search"
@@ -292,11 +290,8 @@ def do_search(item, categories=None):
channels_path = os.path.join(config.get_runtime_path(), "channels", '*.json')
logger.info("channels_path=%s" % channels_path)
- channel_language = config.get_setting("channel_language")
+ channel_language = config.get_setting("channel_language", default="all")
logger.info("channel_language=%s" % channel_language)
- if channel_language == "":
- channel_language = "all"
- logger.info("channel_language=%s" % channel_language)
# Para Kodi es necesario esperar antes de cargar el progreso, de lo contrario
# el cuadro de progreso queda "detras" del cuadro "cargando..." y no se le puede dar a cancelar
@@ -347,7 +342,8 @@ def do_search(item, categories=None):
continue
# No busca si el canal es en un idioma filtrado
- if channel_language != "all" and channel_parameters["language"] != channel_language:
+ if channel_language != "all" and channel_language not in channel_parameters["language"] \
+ and "*" not in channel_parameters["language"]:
logger.info("%s -idioma no válido-" % basename_without_extension)
continue
diff --git a/plugin.video.alfa/channels/seodiv.json b/plugin.video.alfa/channels/seodiv.json
index 1dcceec1..71bd7772 100755
--- a/plugin.video.alfa/channels/seodiv.json
+++ b/plugin.video.alfa/channels/seodiv.json
@@ -1,12 +1,9 @@
{
"id": "seodiv",
"name": "Seodiv",
- "compatible": {
- "addon_version": "4.3"
- },
"active": true,
"adult": false,
- "language": "es",
+ "language": ["lat"],
"thumbnail": "https://s32.postimg.org/gh8lhbkb9/seodiv.png",
"banner": "https://s31.postimg.org/klwjzp7t7/seodiv_banner.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/seriecanal.json b/plugin.video.alfa/channels/seriecanal.json
index 8e14a0d0..88db8c97 100755
--- a/plugin.video.alfa/channels/seriecanal.json
+++ b/plugin.video.alfa/channels/seriecanal.json
@@ -3,7 +3,7 @@
"name": "Seriecanal",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast"],
"thumbnail": "http://i.imgur.com/EwMK8Yd.png",
"banner": "seriecanal.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/seriesadicto.json b/plugin.video.alfa/channels/seriesadicto.json
index 4039a308..4633e4dc 100755
--- a/plugin.video.alfa/channels/seriesadicto.json
+++ b/plugin.video.alfa/channels/seriesadicto.json
@@ -3,7 +3,7 @@
"name": "Seriesadicto",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast"],
"thumbnail": "seriesadicto.png",
"banner": "seriesadicto.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/seriesblanco.json b/plugin.video.alfa/channels/seriesblanco.json
index 4e1616fb..d9eb21b6 100755
--- a/plugin.video.alfa/channels/seriesblanco.json
+++ b/plugin.video.alfa/channels/seriesblanco.json
@@ -3,7 +3,7 @@
"name": "Seriesblanco",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "seriesblanco.png",
"banner": "seriesblanco.png",
"version": 1,
@@ -23,8 +23,7 @@
],
"categories": [
"tvshow",
- "vos",
- "latino"
+ "vos"
],
"settings": [
{
diff --git a/plugin.video.alfa/channels/seriesdanko.json b/plugin.video.alfa/channels/seriesdanko.json
index a8090bb9..076d2ce7 100755
--- a/plugin.video.alfa/channels/seriesdanko.json
+++ b/plugin.video.alfa/channels/seriesdanko.json
@@ -3,7 +3,7 @@
"name": "Seriesdanko",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "seriesdanko.png",
"banner": "seriesdanko.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/serieslan.json b/plugin.video.alfa/channels/serieslan.json
index 47e0f9dc..7927fbb8 100755
--- a/plugin.video.alfa/channels/serieslan.json
+++ b/plugin.video.alfa/channels/serieslan.json
@@ -3,7 +3,7 @@
"name": "SeriesLan",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["lat"],
"thumbnail": "http://i.imgur.com/s6CBxlw.png",
"banner": "http://i.imgur.com/c1YTgNT.png",
"version": 1,
@@ -14,7 +14,6 @@
}
],
"categories": [
- "tvshow",
- "latino"
+ "tvshow"
]
}
\ No newline at end of file
diff --git a/plugin.video.alfa/channels/serieslatino.json b/plugin.video.alfa/channels/serieslatino.json
index 5572fd74..e3718988 100755
--- a/plugin.video.alfa/channels/serieslatino.json
+++ b/plugin.video.alfa/channels/serieslatino.json
@@ -1,12 +1,9 @@
{
"id": "serieslatino",
"name": "SeriesLatino",
- "compatible": {
- "addon_version": "4.3"
- },
"active": true,
"adult": false,
- "language": "es",
+ "language": ["lat"],
"thumbnail": "https://s17.postimg.org/rpmc90y9r/serieslatino.png",
"banner": "https://s8.postimg.org/ka707waat/serieslatino_banner.png",
"version": 1,
@@ -33,7 +30,6 @@
}
],
"categories": [
- "latino",
"tvshow"
],
"settings": [
diff --git a/plugin.video.alfa/channels/seriesmeme.json b/plugin.video.alfa/channels/seriesmeme.json
index 8f0abc0e..07786a0c 100755
--- a/plugin.video.alfa/channels/seriesmeme.json
+++ b/plugin.video.alfa/channels/seriesmeme.json
@@ -3,7 +3,7 @@
"name": "SeriesMeme",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "seriesmeme.png",
"banner": "seriesmeme.png",
"version": 1,
@@ -14,7 +14,6 @@
}
],
"categories": [
- "tvshow",
- "latino"
+ "tvshow"
]
}
\ No newline at end of file
diff --git a/plugin.video.alfa/channels/seriespapaya.json b/plugin.video.alfa/channels/seriespapaya.json
index ccd7763f..fe12bc7a 100755
--- a/plugin.video.alfa/channels/seriespapaya.json
+++ b/plugin.video.alfa/channels/seriespapaya.json
@@ -3,7 +3,7 @@
"name": "SeriesPapaya",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "http://i.imgur.com/P1D92cf.png",
"banner": "http://i.imgur.com/OHHvi5z.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/seriesyonkis.json b/plugin.video.alfa/channels/seriesyonkis.json
index 54fde9a4..9a37397d 100755
--- a/plugin.video.alfa/channels/seriesyonkis.json
+++ b/plugin.video.alfa/channels/seriesyonkis.json
@@ -3,7 +3,7 @@
"name": "Seriesyonkis",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast"],
"thumbnail": "seriesyonkis.png",
"banner": "seriesyonkis.png",
"fanart": "seriesyonkis.jpg",
diff --git a/plugin.video.alfa/channels/serviporno.json b/plugin.video.alfa/channels/serviporno.json
index 9255e43f..19cccf00 100755
--- a/plugin.video.alfa/channels/serviporno.json
+++ b/plugin.video.alfa/channels/serviporno.json
@@ -3,7 +3,7 @@
"name": "Serviporno",
"active": true,
"adult": true,
- "language": "es",
+ "language": ["*"],
"thumbnail": "serviporno.png",
"banner": "serviporno.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/sipeliculas.json b/plugin.video.alfa/channels/sipeliculas.json
index c83ae8b4..62377c04 100755
--- a/plugin.video.alfa/channels/sipeliculas.json
+++ b/plugin.video.alfa/channels/sipeliculas.json
@@ -3,7 +3,7 @@
"name": "SiPeliculas",
"active": true,
"adult": false,
- "language": "es",
+ "language": "[lat]",
"banner": "https://s24.postimg.org/5wcznkxhv/sipeliculas.png",
"thumbnail": "https://s23.postimg.org/adrl2k5mz/sipeliculas.png",
"version": 1,
@@ -18,7 +18,6 @@
}
],
"categories": [
- "latino",
"movie"
],
"settings": [
diff --git a/plugin.video.alfa/channels/submityouflicks.json b/plugin.video.alfa/channels/submityouflicks.json
index c93a2fc7..bf6daf4f 100755
--- a/plugin.video.alfa/channels/submityouflicks.json
+++ b/plugin.video.alfa/channels/submityouflicks.json
@@ -3,7 +3,7 @@
"name": "Submit Your Flicks",
"active": true,
"adult": true,
- "language": "es",
+ "language": ["*"],
"banner": "submityouflicks.png",
"thumbnail": "submityouflicks.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/teledocumentales.json b/plugin.video.alfa/channels/teledocumentales.json
index d2cb95eb..2c390f3e 100755
--- a/plugin.video.alfa/channels/teledocumentales.json
+++ b/plugin.video.alfa/channels/teledocumentales.json
@@ -3,7 +3,7 @@
"name": "Teledocumentales",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"banner": "teledocumentales.png",
"thumbnail": "teledocumentales.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/torrentlocura.json b/plugin.video.alfa/channels/torrentlocura.json
index 6f6b7fc7..11ea8fd8 100755
--- a/plugin.video.alfa/channels/torrentlocura.json
+++ b/plugin.video.alfa/channels/torrentlocura.json
@@ -3,7 +3,7 @@
"name": "Torrentlocura",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"banner": "torrentlocura.png",
"thumbnail": "http://imgur.com/EWmLS3d.png",
"fanart": "http://imgur.com/V7QZLAL.jpg",
diff --git a/plugin.video.alfa/channels/tubehentai.json b/plugin.video.alfa/channels/tubehentai.json
index 7a724688..49bd6fc2 100755
--- a/plugin.video.alfa/channels/tubehentai.json
+++ b/plugin.video.alfa/channels/tubehentai.json
@@ -3,7 +3,7 @@
"name": "tubehentai",
"active": true,
"adult": true,
- "language": "es",
+ "language": ["*"],
"banner": "tubehentai.png",
"thumbnail": "tubehentai.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/tupornotv.json b/plugin.video.alfa/channels/tupornotv.json
index ba5e7769..4502963d 100755
--- a/plugin.video.alfa/channels/tupornotv.json
+++ b/plugin.video.alfa/channels/tupornotv.json
@@ -3,7 +3,7 @@
"name": "tuporno.tv",
"active": true,
"adult": true,
- "language": "es",
+ "language": ["*"],
"banner": "tupornotv.png",
"thumbnail": "tupornotv.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/tvmoviedb.json b/plugin.video.alfa/channels/tvmoviedb.json
index cc476ca8..dfff7b67 100755
--- a/plugin.video.alfa/channels/tvmoviedb.json
+++ b/plugin.video.alfa/channels/tvmoviedb.json
@@ -3,7 +3,7 @@
"name": "TvMovieDB",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["*"],
"thumbnail": "http://i.imgur.com/HA7fvgD.png",
"version": 1,
"changes": [
diff --git a/plugin.video.alfa/channels/tvseriesdk.json b/plugin.video.alfa/channels/tvseriesdk.json
index 142994b6..cddcc681 100644
--- a/plugin.video.alfa/channels/tvseriesdk.json
+++ b/plugin.video.alfa/channels/tvseriesdk.json
@@ -3,12 +3,11 @@
"name": "TVSeriesdk",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["lat"],
"thumbnail": "https://s13.postimg.org/jrvqmqfnb/tvseriesdk.png",
"banner": "https://s16.postimg.org/r6mbel0f9/tvseriesdk-banner.png",
"version": 1,
"categories": [
- "latino",
"tvshow"
],
"settings": [
diff --git a/plugin.video.alfa/channels/tvvip.json b/plugin.video.alfa/channels/tvvip.json
deleted file mode 100755
index cccf69ed..00000000
--- a/plugin.video.alfa/channels/tvvip.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "id": "tvvip",
- "name": "TV-VIP",
- "active": false,
- "adult": false,
- "language": "es",
- "banner": "http://i.imgur.com/wyRk5AG.png",
- "thumbnail": "http://i.imgur.com/gNHVlI4.png",
- "version": 1,
- "changes": [
- {
- "date": "15/03/2017",
- "description": "limpieza código"
- },
- {
- "date": "04/01/2017",
- "description": "Se desactiva el canal hasta posible arreglo."
- }
- ],
- "categories": [
- "movie",
- "tvshow",
- "documentary"
- ],
- "settings": [
- {
- "id": "include_in_global_search",
- "type": "bool",
- "label": "Incluir en busqueda global",
- "default": true,
- "enabled": true,
- "visible": true
- }
- ]
-}
\ No newline at end of file
diff --git a/plugin.video.alfa/channels/tvvip.py b/plugin.video.alfa/channels/tvvip.py
deleted file mode 100755
index 27eb31dc..00000000
--- a/plugin.video.alfa/channels/tvvip.py
+++ /dev/null
@@ -1,805 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import os
-import re
-import unicodedata
-import urllib
-
-from core import jsontools
-from core import scrapertools
-from core.item import Item
-from platformcode import config, logger
-
-host = "http://tv-vip.com"
-headers = [['User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0'],
- ['Accept', 'application/json, text/javascript, */*; q=0.01'],
- ['Accept-Language', 'es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3'],
- ['Accept-Encoding', 'gzip, deflate'],
- ['Connection', 'keep-alive'],
- ['DNT', '1'],
- ['Referer', 'http://tv-vip.com']]
-
-header_string = "|User-Agent=Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0" \
- "&Referer=http://tv-vip.com&Cookie="
-
-
-def mainlist(item):
- logger.info()
- item.viewmode = "movie"
- itemlist = []
-
- data = scrapertools.anti_cloudflare("http://tv-vip.com/json/playlist/home/index.json", host=host, headers=headers)
-
- head = header_string + get_cookie_value()
- itemlist.append(Item(channel=item.channel, title="Películas", action="submenu",
- thumbnail="http://tv-vip.com/json/playlist/peliculas/thumbnail.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/peliculas/background.jpg" + head, viewmode="movie"))
- itemlist.append(Item(channel=item.channel, title="Series", action="submenu",
- thumbnail="http://tv-vip.com/json/playlist/series/poster.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/series/background.jpg" + head, viewmode="movie"))
- itemlist.append(Item(channel=item.channel, title="Versión Original", action="entradasconlistas",
- url="http://tv-vip.com/json/playlist/version-original/index.json",
- thumbnail="http://tv-vip.com/json/playlist/version-original/thumbnail.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/version-original/background.jpg" + head,
- viewmode="movie_with_plot"))
- itemlist.append(Item(channel=item.channel, title="Documentales", action="entradasconlistas",
- url="http://tv-vip.com/json/playlist/documentales/index.json",
- thumbnail="http://tv-vip.com/json/playlist/documentales/thumbnail.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/documentales/background.jpg" + head,
- viewmode="movie_with_plot"))
- itemlist.append(Item(channel=item.channel, title="Películas Infantiles", action="entradasconlistas",
- url="http://tv-vip.com/json/playlist/peliculas-infantiles/index.json",
- thumbnail="http://tv-vip.com/json/playlist/peliculas-infantiles/thumbnail.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/peliculas-infantiles/background.jpg" + head,
- viewmode="movie_with_plot"))
- itemlist.append(Item(channel=item.channel, title="Series Infantiles", action="entradasconlistas",
- url="http://tv-vip.com/json/playlist/series-infantiles/index.json",
- thumbnail="http://tv-vip.com/json/playlist/series-infantiles/thumbnail.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/series-infantiles/background.jpg" + head,
- viewmode="movie_with_plot"))
- itemlist.append(Item(channel=item.channel, title="Buscar...", action="search",
- thumbnail="http://i.imgur.com/gNHVlI4.png", fanart="http://i.imgur.com/9loVksV.png"))
-
- return itemlist
-
-
-def search(item, texto):
- logger.info()
- texto = texto.replace(" ", "%20")
- if item.title == "Buscar...": item.extra = "local"
- item.url = "http://tv-vip.com/video-prod/s/search?q=%s&n=100" % texto
-
- try:
- return busqueda(item, texto)
- # 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 busqueda(item, texto):
- logger.info()
- itemlist = []
-
- data = scrapertools.anti_cloudflare(item.url, host=host, headers=headers)
- data = jsontools.load(data)
- head = header_string + get_cookie_value()
- for child in data["objectList"]:
- infolabels = {}
-
- infolabels['year'] = child['year']
- if child['tags']: infolabels['genre'] = ', '.join([x.strip() for x in child['tags']])
- infolabels['rating'] = child['rate'].replace(',', '.')
- infolabels['votes'] = child['rateCount']
- if child['cast']: infolabels['cast'] = child['cast'].split(",")
- infolabels['director'] = child['director']
-
- if 'playListChilds' not in child:
- infolabels['plot'] = child['description']
- type = "repo"
- fulltitle = unicodedata.normalize('NFD', unicode(child['name'], 'utf-8')) \
- .encode('ASCII', 'ignore').decode("utf-8")
- title = child['name']
- infolabels['duration'] = child['duration']
- if child['height'] < 720:
- quality = "[B] [SD][/B]"
- elif child['height'] < 1080:
- quality = "[B] [720p][/B]"
- elif child['height'] >= 1080:
- quality = "[B] [1080p][/B]"
- if child['name'] == "":
- title = child['id'].rsplit(".", 1)[0]
- else:
- title = child['name']
- if child['year']:
- title += " (" + child['year'] + ")"
- title += quality
- else:
- type = "playlist"
- infolabels['plot'] = "Contiene:\n" + "\n".join(child['playListChilds']) + "\n".join(child['repoChilds'])
- fulltitle = child['id']
- title = "[COLOR red][LISTA][/COLOR] " + child['id'].replace('-', ' ').capitalize() + " ([COLOR gold]" + \
- str(child['number']) + "[/COLOR])"
-
- # En caso de búsqueda global se filtran los resultados
- if item.extra != "local":
- if "+" in texto: texto = "|".join(texto.split("+"))
- if not re.search(r'(?i)' + texto, title, flags=re.DOTALL): continue
-
- url = "http://tv-vip.com/json/%s/%s/index.json" % (type, child["id"])
- # Fanart
- if child['hashBackground']:
- fanart = "http://tv-vip.com/json/%s/%s/background.jpg" % (type, child["id"])
- else:
- fanart = "http://tv-vip.com/json/%s/%s/thumbnail.jpg" % (type, child["id"])
- # Thumbnail
- if child['hasPoster']:
- thumbnail = "http://tv-vip.com/json/%s/%s/poster.jpg" % (type, child["id"])
- else:
- thumbnail = fanart
- thumbnail += head
- fanart += head
-
- if type == 'playlist':
- itemlist.insert(0, Item(channel=item.channel, action="entradasconlistas", title=bbcode_kodi2html(title),
- url=url, thumbnail=thumbnail, fanart=fanart, fulltitle=fulltitle,
- infoLabels=infolabels, viewmode="movie_with_plot", folder=True))
- else:
- itemlist.append(Item(channel=item.channel, action="findvideos", title=bbcode_kodi2html(title), url=url,
- thumbnail=thumbnail, fanart=fanart, fulltitle=fulltitle, contentTitle=fulltitle,
- context="05", infoLabels=infolabels, viewmode="movie_with_plot", folder=True))
-
- return itemlist
-
-
-def submenu(item):
- logger.info()
- itemlist = []
- data = scrapertools.anti_cloudflare("http://tv-vip.com/json/playlist/home/index.json", host=host, headers=headers)
- head = header_string + get_cookie_value()
- if item.title == "Series":
- itemlist.append(Item(channel=item.channel, title="Nuevos Capítulos", action="episodios",
- url="http://tv-vip.com/json/playlist/nuevos-capitulos/index.json",
- thumbnail="http://tv-vip.com/json/playlist/nuevos-capitulos/background.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/nuevos-capitulos/background.jpg" + head,
- viewmode="movie"))
- itemlist.append(Item(channel=item.channel, title="Más Vistas", action="series",
- url="http://tv-vip.com/json/playlist/top-series/index.json",
- thumbnail="http://tv-vip.com/json/playlist/top-series/thumbnail.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/top-series/background.jpg" + head,
- contentTitle="Series", viewmode="movie_with_plot"))
- itemlist.append(Item(channel=item.channel, title="Últimas Series", action="series",
- url="http://tv-vip.com/json/playlist/series/index.json",
- thumbnail=item.thumbnail, fanart=item.fanart, contentTitle="Series",
- viewmode="movie_with_plot"))
- itemlist.append(Item(channel=item.channel, title="Lista de Series A-Z", action="series",
- url="http://tv-vip.com/json/playlist/series/index.json", thumbnail=item.thumbnail,
- fanart=item.fanart, contentTitle="Series", viewmode="movie_with_plot"))
- else:
- itemlist.append(Item(channel=item.channel, title="Novedades", action="entradas",
- url="http://tv-vip.com/json/playlist/000-novedades/index.json",
- thumbnail="http://tv-vip.com/json/playlist/ultimas-peliculas/thumbnail.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/ultimas-peliculas/background.jpg" + head,
- viewmode="movie_with_plot"))
- itemlist.append(Item(channel=item.channel, title="Más vistas", action="entradas",
- url="http://tv-vip.com/json/playlist/peliculas-mas-vistas/index.json",
- thumbnail="http://tv-vip.com/json/playlist/peliculas-mas-vistas/thumbnail.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/peliculas-mas-vistas/background.jpg" + head,
- viewmode="movie_with_plot"))
- itemlist.append(Item(channel=item.channel, title="Categorías", action="cat",
- url="http://tv-vip.com/json/playlist/peliculas/index.json",
- thumbnail=item.thumbnail, fanart=item.fanart))
- itemlist.append(Item(channel=item.channel, title="Películas 3D", action="entradasconlistas",
- url="http://tv-vip.com/json/playlist/3D/index.json",
- thumbnail="http://tv-vip.com/json/playlist/3D/thumbnail.jpg" + head,
- fanart="http://tv-vip.com/json/playlist/3D/background.jpg" + head,
- viewmode="movie_with_plot"))
- return itemlist
-
-
-def cat(item):
- logger.info()
- itemlist = []
-
- data = scrapertools.anti_cloudflare(item.url, host=host, headers=headers)
- data = jsontools.load(data)
- head = header_string + get_cookie_value()
- exception = ["peliculas-mas-vistas", "ultimas-peliculas"]
- for child in data["sortedPlaylistChilds"]:
- if child["id"] not in exception:
- url = "http://tv-vip.com/json/playlist/%s/index.json" % child["id"]
- # Fanart
- if child['hashBackground']:
- fanart = "http://tv-vip.com/json/playlist/%s/background.jpg" % child["id"]
- else:
- fanart = "http://tv-vip.com/json/playlist/%s/thumbnail.jpg" % child["id"]
- # Thumbnail
- thumbnail = "http://tv-vip.com/json/playlist/%s/thumbnail.jpg" % child["id"]
- thumbnail += head
- fanart += head
- title = child['id'].replace('-', ' ').capitalize().replace("Manga", "Animación/Cine Oriental")
- title += " ([COLOR gold]" + str(child['number']) + "[/COLOR])"
- itemlist.append(
- Item(channel=item.channel, action="entradasconlistas", title=bbcode_kodi2html(title), url=url,
- thumbnail=thumbnail, fanart=fanart, folder=True))
-
- return itemlist
-
-
-def entradas(item):
- logger.info()
- itemlist = []
- if item.title == "Nuevos Capítulos":
- context = "5"
- else:
- context = "05"
- data = scrapertools.anti_cloudflare(item.url, host=host, headers=headers)
- data = jsontools.load(data)
- head = header_string + get_cookie_value()
- for child in data["sortedRepoChilds"]:
- infolabels = {}
-
- infolabels['plot'] = child['description']
- infolabels['year'] = child['year']
- if child['tags']: infolabels['genre'] = ', '.join([x.strip() for x in child['tags']])
- infolabels['rating'] = child['rate'].replace(',', '.')
- infolabels['votes'] = child['rateCount']
- infolabels['duration'] = child['duration']
- if child['cast']: infolabels['cast'] = child['cast'].split(",")
- infolabels['director'] = child['director']
- url = "http://tv-vip.com/json/repo/%s/index.json" % child["id"]
- # Fanart
- if child['hashBackground']:
- fanart = "http://tv-vip.com/json/repo/%s/background.jpg" % child["id"]
- else:
- fanart = "http://tv-vip.com/json/repo/%s/thumbnail.jpg" % child["id"]
- # Thumbnail
- if child['hasPoster']:
- thumbnail = "http://tv-vip.com/json/repo/%s/poster.jpg" % child["id"]
- else:
- thumbnail = fanart
- thumbnail += head
- fanart += head
-
- if child['height'] < 720:
- quality = "[B] [SD][/B]"
- elif child['height'] < 1080:
- quality = "[B] [720p][/B]"
- elif child['height'] >= 1080:
- quality = "[B] [1080p][/B]"
- fulltitle = unicodedata.normalize('NFD', unicode(child['name'], 'utf-8')).encode('ASCII', 'ignore') \
- .decode("utf-8")
- if child['name'] == "":
- title = child['id'].rsplit(".", 1)[0]
- else:
- title = child['name']
- if child['year']:
- title += " (" + child['year'] + ")"
- title += quality
-
- itemlist.append(Item(channel=item.channel, action="findvideos", server="", title=title, url=url,
- thumbnail=thumbnail, fanart=fanart, fulltitle=fulltitle, infoLabels=infolabels,
- contentTitle=fulltitle, context=context))
-
- return itemlist
-
-
-def entradasconlistas(item):
- logger.info()
- itemlist = []
-
- data = scrapertools.anti_cloudflare(item.url, host=host, headers=headers)
- data = jsontools.load(data)
- head = header_string + get_cookie_value()
- # Si hay alguna lista
- contentSerie = False
- contentList = False
- if data['playListChilds']:
- itemlist.append(Item(channel=item.channel, title="**LISTAS**", action="", text_color="red", text_bold=True,
- folder=False))
- for child in data['sortedPlaylistChilds']:
- infolabels = {}
-
- infolabels['plot'] = "Contiene:\n" + "\n".join(child['playListChilds']) + "\n".join(child['repoChilds'])
- if child['seasonNumber'] and not contentList and re.search(r'(?i)temporada', child['id']):
- infolabels['season'] = child['seasonNumber']
- contentSerie = True
- else:
- contentSerie = False
- contentList = True
- title = child['id'].replace('-', ' ').capitalize() + " ([COLOR gold]" + str(child['number']) + "[/COLOR])"
- url = "http://tv-vip.com/json/playlist/%s/index.json" % child["id"]
- thumbnail = "http://tv-vip.com/json/playlist/%s/thumbnail.jpg" % child["id"]
- if child['hashBackground']:
- fanart = "http://tv-vip.com/json/playlist/%s/background.jpg" % child["id"]
- else:
- fanart = "http://tv-vip.com/json/playlist/%s/thumbnail.jpg" % child["id"]
-
- thumbnail += head
- fanart += head
- itemlist.append(Item(channel=item.channel, action="entradasconlistas", title=bbcode_kodi2html(title),
- url=url, thumbnail=thumbnail, fanart=fanart, fulltitle=child['id'],
- infoLabels=infolabels, viewmode="movie_with_plot"))
- else:
- contentList = True
- if data["sortedRepoChilds"] and len(itemlist) > 0:
- itemlist.append(Item(channel=item.channel, title="**VÍDEOS**", action="", text_color="blue", text_bold=True,
- folder=False))
-
- for child in data["sortedRepoChilds"]:
- infolabels = {}
-
- infolabels['plot'] = child['description']
- infolabels['year'] = data['year']
- if child['tags']: infolabels['genre'] = ', '.join([x.strip() for x in child['tags']])
- infolabels['rating'] = child['rate'].replace(',', '.')
- infolabels['votes'] = child['rateCount']
- infolabels['duration'] = child['duration']
- if child['cast']: infolabels['cast'] = child['cast'].split(",")
- infolabels['director'] = child['director']
- url = "http://tv-vip.com/json/repo/%s/index.json" % child["id"]
- # Fanart
- if child['hashBackground']:
- fanart = "http://tv-vip.com/json/repo/%s/background.jpg" % child["id"]
- else:
- fanart = "http://tv-vip.com/json/repo/%s/thumbnail.jpg" % child["id"]
- # Thumbnail
- if child['hasPoster']:
- thumbnail = "http://tv-vip.com/json/repo/%s/poster.jpg" % child["id"]
- else:
- thumbnail = fanart
- thumbnail += head
- fanart += head
- if child['height'] < 720:
- quality = "[B] [SD][/B]"
- elif child['height'] < 1080:
- quality = "[B] [720p][/B]"
- elif child['height'] >= 1080:
- quality = "[B] [1080p][/B]"
- fulltitle = unicodedata.normalize('NFD', unicode(child['name'], 'utf-8')).encode('ASCII', 'ignore') \
- .decode("utf-8")
- if child['name'] == "":
- title = child['id'].rsplit(".", 1)[0]
- else:
- title = child['name']
- if child['year']:
- title += " (" + child['year'] + ")"
- title += quality
-
- itemlist.append(Item(channel=item.channel, action="findvideos", title=bbcode_kodi2html(title), url=url,
- thumbnail=thumbnail, fanart=fanart, fulltitle=fulltitle, infoLabels=infolabels,
- contentTitle=fulltitle, context="05", viewmode="movie_with_plot", folder=True))
-
- # Se añade item para añadir la lista de vídeos a la videoteca
- if data['sortedRepoChilds'] and len(itemlist) > 0 and contentList:
- if config.get_videolibrary_support():
- itemlist.append(Item(channel=item.channel, text_color="green", title="Añadir esta lista a la videoteca",
- url=item.url, action="listas"))
- elif contentSerie:
- if config.get_videolibrary_support():
- itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", url=item.url,
- action="series_library", fulltitle=data['name'], show=data['name'],
- text_color="green"))
-
- return itemlist
-
-
-def series(item):
- logger.info()
- itemlist = []
-
- data = scrapertools.anti_cloudflare(item.url, host=host, headers=headers)
- data = jsontools.load(data)
- head = header_string + get_cookie_value()
- exception = ["top-series", "nuevos-capitulos"]
- for child in data["sortedPlaylistChilds"]:
- if child["id"] not in exception:
- infolabels = {}
-
- infolabels['plot'] = child['description']
- infolabels['year'] = child['year']
- if child['tags']: infolabels['genre'] = ', '.join([x.strip() for x in child['tags']])
- infolabels['rating'] = child['rate'].replace(',', '.')
- infolabels['votes'] = child['rateCount']
- if child['cast']: infolabels['cast'] = child['cast'].split(",")
- infolabels['director'] = child['director']
- infolabels['mediatype'] = "episode"
- if child['seasonNumber']: infolabels['season'] = child['seasonNumber']
- url = "http://tv-vip.com/json/playlist/%s/index.json" % child["id"]
- # Fanart
- if child['hashBackground']:
- fanart = "http://tv-vip.com/json/playlist/%s/background.jpg" % child["id"]
- else:
- fanart = "http://tv-vip.com/json/playlist/%s/thumbnail.jpg" % child["id"]
- # Thumbnail
- if child['hasPoster']:
- thumbnail = "http://tv-vip.com/json/playlist/%s/poster.jpg" % child["id"]
- else:
- thumbnail = fanart
- thumbnail += head
- fanart += head
-
- if item.contentTitle == "Series":
- if child['name'] != "":
- fulltitle = unicodedata.normalize('NFD', unicode(child['name'].split(" Temporada")[0], 'utf-8')) \
- .encode('ASCII', 'ignore').decode("utf-8")
- fulltitle = fulltitle.replace('-', '')
- title = child['name'] + " (" + child['year'] + ")"
- else:
- title = fulltitle = child['id'].capitalize()
- if "Temporada" not in title:
- title += " [Temporadas: [COLOR gold]" + str(child['numberOfSeasons']) + "[/COLOR]]"
- elif item.title == "Más Vistas":
- title = title.replace("- Temporada", "--- Temporada")
- else:
- if data['name'] != "":
- fulltitle = unicodedata.normalize('NFD', unicode(data['name'], 'utf-8')).encode('ASCII', 'ignore') \
- .decode("utf-8")
- if child['seasonNumber']:
- title = data['name'] + " --- Temporada " + child['seasonNumber'] + \
- " [COLOR gold](" + str(child['number']) + ")[/COLOR]"
- else:
- title = child['name'] + " [COLOR gold](" + str(child['number']) + ")[/COLOR]"
- else:
- fulltitle = unicodedata.normalize('NFD', unicode(data['id'], 'utf-8')).encode('ASCII', 'ignore') \
- .decode("utf-8")
- if child['seasonNumber']:
- title = data['id'].capitalize() + " --- Temporada " + child['seasonNumber'] + \
- " [COLOR gold](" + str(child['number']) + ")[/COLOR]"
- else:
- title = data['id'].capitalize() + " [COLOR gold](" + str(child['number']) + ")[/COLOR]"
- if not child['playListChilds']:
- action = "episodios"
- else:
- action = "series"
- itemlist.append(Item(channel=item.channel, action=action, title=bbcode_kodi2html(title), url=url, server="",
- thumbnail=thumbnail, fanart=fanart, fulltitle=fulltitle, infoLabels=infolabels,
- contentTitle=fulltitle, context="25", viewmode="movie_with_plot", folder=True))
- if len(itemlist) == len(data["sortedPlaylistChilds"]) and item.contentTitle != "Series":
-
- itemlist.sort(key=lambda item: item.title, reverse=True)
- if config.get_videolibrary_support():
- itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", url=item.url,
- action="add_serie_to_library", show=data['name'],
- text_color="green", extra="series_library"))
-
- if item.title == "Últimas Series": return itemlist
- if item.title == "Lista de Series A-Z": itemlist.sort(key=lambda item: item.fulltitle)
-
- if data["sortedRepoChilds"] and len(itemlist) > 0:
- itemlist.append(Item(channel=item.channel, title="**VÍDEOS RELACIONADOS/MISMA TEMÁTICA**", text_color="blue",
- text_bold=True, action="", folder=False))
- for child in data["sortedRepoChilds"]:
- infolabels = {}
-
- if child['description']:
- infolabels['plot'] = data['description']
- else:
- infolabels['plot'] = child['description']
- infolabels['year'] = data['year']
- if not child['tags']:
- infolabels['genre'] = ', '.join([x.strip() for x in data['tags']])
- else:
- infolabels['genre'] = ', '.join([x.strip() for x in child['tags']])
- infolabels['rating'] = child['rate'].replace(',', '.')
- infolabels['duration'] = child['duration']
- if child['cast']: infolabels['cast'] = child['cast'].split(",")
- infolabels['director'] = child['director']
-
- url = "http://tv-vip.com/json/repo/%s/index.json" % child["id"]
- # Fanart
- if child['hashBackground']:
- fanart = "http://tv-vip.com/json/repo/%s/background.jpg" % child["id"]
- else:
- fanart = "http://tv-vip.com/json/repo/%s/thumbnail.jpg" % child["id"]
- # Thumbnail
- if child['hasPoster']:
- thumbnail = "http://tv-vip.com/json/repo/%s/poster.jpg" % child["id"]
- else:
- thumbnail = fanart
- thumbnail += head
- fanart += head
-
- if child['height'] < 720:
- quality = "[B] [SD][/B]"
- elif child['height'] < 1080:
- quality = "[B] [720p][/B]"
- elif child['height'] >= 1080:
- quality = "[B] [1080p][/B]"
- fulltitle = unicodedata.normalize('NFD', unicode(child['name'], 'utf-8')).encode('ASCII', 'ignore') \
- .decode("utf-8")
-
- if child['name'] == "":
- title = child['id'].rsplit(".", 1)[0]
- else:
- title = child['name']
- if child['year']:
- title += " (" + child['year'] + ")"
- title += quality
-
- itemlist.append(Item(channel=item.channel, action="findvideos", title=bbcode_kodi2html(title), url=url,
- server="", thumbnail=thumbnail, fanart=fanart, fulltitle=fulltitle, infoLabels=infolabels,
- contentTitle=fulltitle, context="25", viewmode="movie_with_plot", folder=True))
- if item.extra == "new":
- itemlist.sort(key=lambda item: item.title, reverse=True)
-
- return itemlist
-
-
-def episodios(item):
- logger.info()
- logger.info("categoriaaa es " + item.tostring())
- itemlist = []
- # Redirección para actualización de videoteca
- if item.extra == "series_library":
- itemlist = series_library(item)
- return itemlist
-
- data = scrapertools.anti_cloudflare(item.url, host=host, headers=headers)
- data = jsontools.load(data)
- head = header_string + get_cookie_value()
- # Se prueba un método u otro porque algunas series no están bien listadas
- if data["sortedRepoChilds"]:
- for child in data["sortedRepoChilds"]:
- if item.infoLabels:
- item.infoLabels['duration'] = str(child['duration'])
- item.infoLabels['season'] = str(data['seasonNumber'])
- item.infoLabels['episode'] = str(child['episode'])
- item.infoLabels['mediatype'] = "episode"
- contentTitle = item.fulltitle + "|" + str(data['seasonNumber']) + "|" + str(child['episode'])
- # En caso de venir del apartado nuevos capítulos se redirige a la función series para mostrar los demás
- if item.title == "Nuevos Capítulos":
- url = "http://tv-vip.com/json/playlist/%s/index.json" % child["season"]
- action = "series"
- extra = "new"
- else:
- url = "http://tv-vip.com/json/repo/%s/index.json" % child["id"]
- action = "findvideos"
- extra = ""
- if child['hasPoster']:
- thumbnail = "http://tv-vip.com/json/repo/%s/poster.jpg" % child["id"]
- else:
- thumbnail = "http://tv-vip.com/json/repo/%s/thumbnail.jpg" % child["id"]
- thumbnail += head
- try:
- title = fulltitle = child['name'].rsplit(" ", 1)[0] + " - " + child['name'].rsplit(" ", 1)[1]
- except:
- title = fulltitle = child['id']
- itemlist.append(item.clone(action=action, server="", title=title, url=url, thumbnail=thumbnail,
- fanart=item.fanart, fulltitle=fulltitle, contentTitle=contentTitle, context="35",
- viewmode="movie", extra=extra, show=item.fulltitle, folder=True))
- else:
- for child in data["repoChilds"]:
- url = "http://tv-vip.com/json/repo/%s/index.json" % child
- if data['hasPoster']:
- thumbnail = "http://tv-vip.com/json/repo/%s/poster.jpg" % child
- else:
- thumbnail = "http://tv-vip.com/json/repo/%s/thumbnail.jpg" % child
- thumbnail += head
- title = fulltitle = child.capitalize().replace('_', ' ')
- itemlist.append(item.clone(action="findvideos", server="", title=title, url=url, thumbnail=thumbnail,
- fanart=item.fanart, fulltitle=fulltitle, contentTitle=item.fulltitle,
- context="25", show=item.fulltitle, folder=True))
-
- # Opción de añadir a la videoteca en casos de series de una única temporada
- if len(itemlist) > 0 and not "---" in item.title and item.title != "Nuevos Capítulos":
- if config.get_videolibrary_support() and item.show == "":
- if "-" in item.title:
- show = item.title.split('-')[0]
- else:
- show = item.title.split('(')[0]
- itemlist.append(Item(channel=item.channel, title="Añadir esta serie a la videoteca", text_color="green",
- url=item.url, action="add_serie_to_library", show=show, extra="series_library"))
- return itemlist
-
-
-def series_library(item):
- logger.info()
- # Funcion unicamente para añadir/actualizar series a la libreria
- lista_episodios = []
- show = item.show.strip()
-
- data_serie = scrapertools.anti_cloudflare(item.url, host=host, headers=headers)
- data_serie = jsontools.load(data_serie)
- # Para series que en la web se listan divididas por temporadas
- if data_serie["sortedPlaylistChilds"]:
- for season_name in data_serie["sortedPlaylistChilds"]:
- url_season = "http://tv-vip.com/json/playlist/%s/index.json" % season_name['id']
- data = scrapertools.anti_cloudflare(url_season, host=host, headers=headers)
- data = jsontools.load(data)
-
- if data["sortedRepoChilds"]:
- for child in data["sortedRepoChilds"]:
- url = "http://tv-vip.com/json/repo/%s/index.json" % child["id"]
- fulltitle = child['name'].rsplit(" ", 1)[0] + " - " + child['name'].rsplit(" ", 1)[1]
- try:
- check_filename = scrapertools.get_season_and_episode(fulltitle)
- except:
- fulltitle += " " + str(data['seasonNumber']) + "x00"
- lista_episodios.append(Item(channel=item.channel, action="findvideos", server="",
- title=fulltitle, extra=url, url=item.url, fulltitle=fulltitle,
- contentTitle=fulltitle, show=show))
- else:
- for child in data["repoChilds"]:
- url = "http://tv-vip.com/json/repo/%s/index.json" % child
- fulltitle = child.capitalize().replace('_', ' ')
- try:
- check_filename = scrapertools.get_season_and_episode(fulltitle)
- except:
- fulltitle += " " + str(data['seasonNumber']) + "x00"
- lista_episodios.append(Item(channel=item.channel, action="findvideos", server="",
- title=fulltitle, extra=url, url=item.url, contentTitle=fulltitle,
- fulltitle=fulltitle, show=show))
- # Para series directas de una sola temporada
- else:
- data = data_serie
- if data["sortedRepoChilds"]:
- for child in data["sortedRepoChilds"]:
- url = "http://tv-vip.com/json/repo/%s/index.json" % child["id"]
- fulltitle = child['name'].rsplit(" ", 1)[0] + " - " + child['name'].rsplit(" ", 1)[1]
- try:
- check_filename = scrapertools.get_season_and_episode(fulltitle)
- except:
- fulltitle += " 1x00"
- lista_episodios.append(Item(channel=item.channel, action="findvideos", server="", title=fulltitle,
- contentTitle=fulltitle, url=item.url, extra=url, fulltitle=fulltitle,
- show=show))
- else:
- for child in data["repoChilds"]:
- url = "http://tv-vip.com/json/repo/%s/index.json" % child
- fulltitle = child.capitalize().replace('_', ' ')
- try:
- check_filename = scrapertools.get_season_and_episode(fulltitle)
- except:
- fulltitle += " 1x00"
- lista_episodios.append(Item(channel=item.channel, action="findvideos", server="", title=fulltitle,
- contentTitle=fulltitle, url=item.url, extra=url, fulltitle=fulltitle,
- show=show))
-
- return lista_episodios
-
-
-def findvideos(item):
- logger.info()
- itemlist = []
-
- # En caso de llamarse a la función desde una serie de la videoteca
- if item.extra.startswith("http"): item.url = item.extra
- data = scrapertools.anti_cloudflare(item.url, host=host, headers=headers)
- data = jsontools.load(data)
- id = urllib.quote(data['id'])
- for child in data["profiles"].keys():
- videopath = urllib.quote(data["profiles"][child]['videoUri'])
- for i in range(0, len(data["profiles"][child]['servers'])):
- url = data["profiles"][child]['servers'][i]['url'] + videopath
- size = " " + data["profiles"][child]["sizeHuman"]
- resolution = " [" + (data["profiles"][child]['videoResolution']) + "]"
- title = "Ver vídeo en " + resolution.replace('1920x1080', 'HD-1080p')
- if i == 0:
- title += size + " [COLOR purple]Mirror " + str(i + 1) + "[/COLOR]"
- else:
- title += size + " [COLOR green]Mirror " + str(i + 1) + "[/COLOR]"
- # Para poner enlaces de mayor calidad al comienzo de la lista
- if data["profiles"][child]["profileId"] == "default":
- itemlist.insert(i, item.clone(action="play", server="directo", title=bbcode_kodi2html(title), url=url,
- contentTitle=item.fulltitle, viewmode="list", extra=id, folder=False))
- else:
- itemlist.append(item.clone(action="play", server="directo", title=bbcode_kodi2html(title), url=url,
- contentTitle=item.fulltitle, viewmode="list", extra=id, folder=False))
-
- itemlist.append(item.clone(channel="trailertools", action="buscartrailer", title="Buscar Tráiler",
- text_color="magenta"))
- if len(itemlist) > 0 and item.extra == "":
- if config.get_videolibrary_support():
- itemlist.append(Item(channel=item.channel, title="Añadir enlaces a la videoteca", text_color="green",
- contentTitle=item.fulltitle, url=item.url, action="add_pelicula_to_library",
- infoLabels={'title': item.fulltitle}, extra="findvideos", fulltitle=item.fulltitle))
-
- return itemlist
-
-
-def play(item):
- import time
- import requests
- logger.info()
- itemlist = []
-
- cookie = get_cookie_value()
- headers_play = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
- 'Accept': 'application/json, text/javascript, */*; q=0.01',
- 'Accept-Language': 'es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3',
- 'Accept-Encoding': 'gzip, deflate',
- 'Connection': 'keep-alive',
- 'DNT': '1',
- 'Referer': 'http://tv-vip.com/film/' + item.extra + '/',
- 'Cookie': cookie}
-
- head = "|User-Agent=" + headers_play['User-Agent'] + "&Referer=" + headers_play['Referer'] + "&Cookie=" + \
- headers_play['Cookie']
- uri = scrapertools.find_single_match(item.url, '(/transcoder[\w\W]+)')
- uri_request = "http://tv-vip.com/video-prod/s/uri?uri=%s&_=%s" % (uri, int(time.time()))
-
- data = requests.get(uri_request, headers=headers_play)
- data = jsontools.load(data.text)
- url = item.url.replace("/transcoder/", "/s/transcoder/") + "?tt=" + str(data['tt']) + \
- "&mm=" + data['mm'] + "&bb=" + data['bb'] + head
- itemlist.append(item.clone(action="play", server="directo", url=url, folder=False))
- return itemlist
-
-
-def listas(item):
- logger.info()
- # Para añadir listas a la videoteca en carpeta CINE
- itemlist = []
- data = scrapertools.anti_cloudflare(item.url, host=host, headers=headers)
- data = jsontools.load(data)
- head = header_string + get_cookie_value()
- for child in data["sortedRepoChilds"]:
- infolabels = {}
-
- # Fanart
- if child['hashBackground']:
- fanart = "http://tv-vip.com/json/repo/%s/background.jpg" % child["id"]
- else:
- fanart = "http://tv-vip.com/json/repo/%s/thumbnail.jpg" % child["id"]
- # Thumbnail
- if child['hasPoster']:
- thumbnail = "http://tv-vip.com/json/repo/%s/poster.jpg" % child["id"]
- else:
- thumbnail = fanart
- thumbnail += head
- fanart += head
-
- url = "http://tv-vip.com/json/repo/%s/index.json" % child["id"]
- if child['name'] == "":
- title = scrapertools.slugify(child['id'].rsplit(".", 1)[0])
- else:
- title = scrapertools.slugify(child['name'])
- title = title.replace('-', ' ').replace('_', ' ').capitalize()
- infolabels['title'] = title
- try:
- from core import videolibrarytools
- new_item = item.clone(title=title, url=url, fulltitle=title, fanart=fanart, extra="findvideos",
- thumbnail=thumbnail, infoLabels=infolabels, category="Cine")
- videolibrarytools.add_movie(new_item)
- error = False
- except:
- error = True
- import traceback
- logger.error(traceback.format_exc())
-
- if not error:
- itemlist.append(Item(channel=item.channel, title='Lista añadida correctamente a la videoteca',
- action="", folder=False))
- else:
- itemlist.append(Item(channel=item.channel, title='ERROR. Han ocurrido uno o varios errores en el proceso',
- action="", folder=False))
-
- return itemlist
-
-
-def get_cookie_value():
- cookies = os.path.join(config.get_data_path(), 'cookies', 'tv-vip.com.dat')
- cookiedatafile = open(cookies, 'r')
- cookiedata = cookiedatafile.read()
- cookiedatafile.close()
- cfduid = scrapertools.find_single_match(cookiedata, "tv-vip.*?__cfduid\s+([A-Za-z0-9\+\=]+)")
- cfduid = "__cfduid=" + cfduid
- return cfduid
-
-
-def bbcode_kodi2html(text):
- if config.get_platform().startswith("plex") or config.get_platform().startswith("mediaserver"):
- import re
- text = re.sub(r'\[COLOR\s([^\]]+)\]',
- r'
',
- text)
- text = text.replace('[/COLOR]', '') \
- .replace('[CR]', '
') \
- .replace('[B]', '
') \
- .replace('[/B]', '') \
- .replace('"color: white"', '"color: auto"')
-
- return text
diff --git a/plugin.video.alfa/channels/ultrapeliculashd.json b/plugin.video.alfa/channels/ultrapeliculashd.json
index 24a4c8b6..e9970d58 100755
--- a/plugin.video.alfa/channels/ultrapeliculashd.json
+++ b/plugin.video.alfa/channels/ultrapeliculashd.json
@@ -1,7 +1,7 @@
{
"id": "ultrapeliculashd",
"name": "UltraPeliculasHD",
- "language": "es",
+ "language": ["lat"],
"active": true,
"adult": false,
"banner": "https://s9.postimg.org/5yxsq205r/ultrapeliculashd_banner.png",
@@ -18,7 +18,6 @@
}
],
"categories": [
- "latino",
"movie"
],
"settings": [
diff --git a/plugin.video.alfa/channels/unsoloclic.json b/plugin.video.alfa/channels/unsoloclic.json
index c41c0fea..2494c67a 100755
--- a/plugin.video.alfa/channels/unsoloclic.json
+++ b/plugin.video.alfa/channels/unsoloclic.json
@@ -3,7 +3,7 @@
"name": "Unsoloclic",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"banner": "unsoloclic.png",
"thumbnail": "unsoloclic.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/vepelis.json b/plugin.video.alfa/channels/vepelis.json
index be41cc37..535de3d5 100755
--- a/plugin.video.alfa/channels/vepelis.json
+++ b/plugin.video.alfa/channels/vepelis.json
@@ -3,7 +3,7 @@
"name": "VePelis",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"banner": "vepelis.png",
"thumbnail": "vepelis.png",
"version": 1,
@@ -18,7 +18,6 @@
}
],
"categories": [
- "latino",
"movie"
],
"settings": [
diff --git a/plugin.video.alfa/channels/ver-peliculas.json b/plugin.video.alfa/channels/ver-peliculas.json
index ba3889f4..994e7b40 100644
--- a/plugin.video.alfa/channels/ver-peliculas.json
+++ b/plugin.video.alfa/channels/ver-peliculas.json
@@ -5,11 +5,10 @@
"name": "Ver-peliculas",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"version": 1,
"categories": [
- "movie",
- "latino"
+ "movie"
],
"settings": [
{
diff --git a/plugin.video.alfa/channels/vernovelasonline.json b/plugin.video.alfa/channels/vernovelasonline.json
index 617a9a61..f861a05c 100644
--- a/plugin.video.alfa/channels/vernovelasonline.json
+++ b/plugin.video.alfa/channels/vernovelasonline.json
@@ -3,7 +3,7 @@
"name": "Ver Novelas Online",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "https://s16.postimg.org/g4lzydrmd/vernovelasonline1.png",
"banner": "https://s16.postimg.org/w44nhxno5/vernovelasonline2.png",
"version": 1,
@@ -14,8 +14,7 @@
}
],
"categories": [
- "tvshow",
- "latino"
+ "tvshow"
],
"settings": [
{
diff --git a/plugin.video.alfa/channels/verpeliculasnuevas.json b/plugin.video.alfa/channels/verpeliculasnuevas.json
index cd9b7b88..b2d502c7 100755
--- a/plugin.video.alfa/channels/verpeliculasnuevas.json
+++ b/plugin.video.alfa/channels/verpeliculasnuevas.json
@@ -3,10 +3,7 @@
"name": "VerPeliculasNuevas",
"active": true,
"adult": false,
- "language": "es",
- "compatible": {
- "addon_version": "4.3"
- },
+ "language": ["cast", "lat"],
"banner": "https://s23.postimg.org/4uyyz6w4b/verpeliculasnuevas_banner.png",
"thumbnail": "https://s27.postimg.org/atgs5erab/verpeliculasnuevas.png",
"version": 1,
@@ -33,7 +30,6 @@
}
],
"categories": [
- "latino",
"movie"
],
"settings": [
diff --git a/plugin.video.alfa/channels/verpelis.json b/plugin.video.alfa/channels/verpelis.json
index 51de7929..4ce5372b 100644
--- a/plugin.video.alfa/channels/verpelis.json
+++ b/plugin.video.alfa/channels/verpelis.json
@@ -3,7 +3,7 @@
"name": "Ver-pelis",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["cast", "lat"],
"thumbnail": "http://imgur.com/lmYQgOu.png",
"version": 1,
"changes": [
diff --git a/plugin.video.alfa/channels/verseriesonlinetv.json b/plugin.video.alfa/channels/verseriesonlinetv.json
index d8b5201c..620f28d9 100755
--- a/plugin.video.alfa/channels/verseriesonlinetv.json
+++ b/plugin.video.alfa/channels/verseriesonlinetv.json
@@ -3,7 +3,7 @@
"name": "Veriesonlinetv",
"active": true,
"adult": false,
- "language": "es",
+ "language": ["lat"],
"banner": "verseriesonlinetv.png",
"thumbnail": "http://s6.postimg.org/gl0ok4t01/verserieslogo.png",
"version": 1,
diff --git a/plugin.video.alfa/channels/verseriesynovelas.json b/plugin.video.alfa/channels/verseriesynovelas.json
deleted file mode 100755
index 5ee0e6cb..00000000
--- a/plugin.video.alfa/channels/verseriesynovelas.json
+++ /dev/null
@@ -1,89 +0,0 @@
-{
- "id": "verseriesynovelas",
- "name": "Ver Series y Novelas",
- "active": false,
- "adult": false,
- "language": "es",
- "banner": "verseriesynovelas.png",
- "thumbnail": "http://i.imgur.com/ZhQknRE.png",
- "version": 1,
- "changes": [
- {
- "date": "17/05/2017",
- "description": "Canal desactivado por cambio de dominio, a la espera de si lo arreglan"
- },
- {
- "date": "15/03/2017",
- "description": "limpieza código"
- },
- {
- "date": "16/02/2017",
- "description": "Ligeros cambios para mejorar la carga de enlaces"
- },
- {
- "date": "11/10/2016",
- "description": "Reparado por cambios en la web, ahora necesita registro"
- }
- ],
- "categories": [
- "latino",
- "vos",
- "tvshow"
- ],
- "settings": [
- {
- "id": "include_in_global_search",
- "type": "bool",
- "label": "Incluir en busqueda global",
- "default": true,
- "enabled": true,
- "visible": true
- },
- {
- "id": "include_in_newest_series",
- "type": "bool",
- "label": "Incluir en Novedades - Series",
- "default": true,
- "enabled": true,
- "visible": true
- },
- {
- "id": "modo_grafico",
- "type": "bool",
- "label": "Buscar información extra",
- "default": true,
- "enabled": true,
- "visible": true
- },
- {
- "id": "perfil",
- "type": "list",
- "label": "Perfil de color",
- "default": 2,
- "enabled": true,
- "visible": true,
- "lvalues": [
- "Perfil 3",
- "Perfil 2",
- "Perfil 1"
- ]
- },
- {
- "id": "verseriesynovelasuser",
- "type": "text",
- "label": "@30014",
- "default": "",
- "enabled": true,
- "visible": true
- },
- {
- "id": "verseriesynovelaspassword",
- "label": "@30015",
- "type": "text",
- "default": "",
- "enabled": "!eq(-1,'')",
- "hidden": true,
- "visible": true
- }
- ]
-}
\ No newline at end of file
diff --git a/plugin.video.alfa/channels/verseriesynovelas.py b/plugin.video.alfa/channels/verseriesynovelas.py
deleted file mode 100755
index b9664db5..00000000
--- a/plugin.video.alfa/channels/verseriesynovelas.py
+++ /dev/null
@@ -1,393 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-
-from core import httptools
-from core import scrapertools
-from core import servertools
-from core.item import Item
-from platformcode import config, logger
-
-# Configuracion del canal
-__modo_grafico__ = config.get_setting('modo_grafico', 'verseriesynovelas')
-__perfil__ = config.get_setting('perfil', 'verseriesynovelas')
-
-# Fijar perfil de color
-perfil = [['0xFFFFE6CC', '0xFFFFCE9C', '0xFF994D00'],
- ['0xFFA5F6AF', '0xFF5FDA6D', '0xFF11811E'],
- ['0xFF58D3F7', '0xFF2E9AFE', '0xFF2E64FE']]
-color1, color2, color3 = perfil[__perfil__]
-
-
-def login(check_login=True):
- logger.info()
-
- try:
- user = config.get_setting("verseriesynovelasuser", "verseriesynovelas")
- password = config.get_setting("verseriesynovelaspassword", "verseriesynovelas")
- if user == "" and password == "":
- return False, "Para ver los enlaces de este canal es necesario registrarse en www.verseriesynovelas.tv"
- elif user == "" or password == "":
- return False, "Usuario o contraseña en blanco. Revisa tus credenciales"
- if check_login:
- data = httptools.downloadpage("http://www.verseriesynovelas.tv/").data
- if user in data:
- return True, ""
-
- post = "log=%s&pwd=%s&redirect_to=http://www.verseriesynovelas.tv/wp-admin/&action=login" % (user, password)
- data = httptools.downloadpage("http://www.verseriesynovelas.tv/iniciar-sesion", post=post).data
- if "La contraseña que has introducido" in data:
- logger.error("Error en el login")
- return False, "Contraseña errónea. Comprueba tus credenciales"
- elif "Nombre de usuario no válido" in data:
- logger.error("Error en el login")
- return False, "Nombre de usuario no válido. Comprueba tus credenciales"
- else:
- logger.info("Login correcto")
- return True, ""
- except:
- import traceback
- logger.error(traceback.format_exc())
- return False, "Error durante el login. Comprueba tus credenciales"
-
-
-def mainlist(item):
- logger.info()
- itemlist = []
- item.text_color = color1
-
- logueado, error_message = login()
-
- if not logueado:
- itemlist.append(item.clone(title=error_message, action="", text_color="darkorange"))
- else:
- itemlist.append(
- item.clone(title="Nuevos Capítulos", action="novedades", fanart="http://i.imgur.com/9loVksV.png",
- url="http://www.verseriesynovelas.tv/archivos/nuevo"))
- itemlist.append(item.clone(title="Últimas Series", action="ultimas", fanart="http://i.imgur.com/9loVksV.png",
- url="http://www.verseriesynovelas.tv/"))
- itemlist.append(
- item.clone(title="Lista de Series A-Z", action="indices", fanart="http://i.imgur.com/9loVksV.png",
- url="http://www.verseriesynovelas.tv/"))
- itemlist.append(item.clone(title="Categorías", action="indices", fanart="http://i.imgur.com/9loVksV.png",
- url="http://www.verseriesynovelas.tv/"))
- itemlist.append(item.clone(title="", action=""))
- itemlist.append(item.clone(title="Buscar...", action="search", fanart="http://i.imgur.com/9loVksV.png"))
- itemlist.append(item.clone(title="Configurar canal...", action="configuracion", text_color="gold", folder=False))
-
- return itemlist
-
-
-def configuracion(item):
- from platformcode import platformtools
- ret = platformtools.show_channel_settings()
- platformtools.itemlist_refresh()
- return ret
-
-
-def indices(item):
- logger.info()
-
- itemlist = []
- data = httptools.downloadpage(item.url).data
- data = data.replace("\n", "").replace("\t", "")
-
- if "Categorías" in item.title:
- bloque = scrapertools.find_single_match(data, '
Seleccion tu categoria(.*?)')
- matches = scrapertools.find_multiple_matches(bloque, '
(.*?)')
- for url, title in matches:
- itemlist.append(item.clone(action="ultimas", title=title, url=url))
- else:
- bloque = scrapertools.find_single_match(data, '')
- matches = scrapertools.find_multiple_matches(bloque, '(.*?)')
- for url, title in matches:
- itemlist.append(item.clone(action="ultimas", title=title, url=url))
-
- return itemlist
-
-
-def search(item, texto):
- logger.info()
- item.url = "http://www.verseriesynovelas.tv/archivos/h1/?s=" + texto
- if "Buscar..." in item.title:
- return ultimas(item, texto)
- else:
- try:
- return busqueda(item, texto)
- except:
- import sys
- for line in sys.exc_info():
- logger.error("%s" % line)
- return []
-
-
-def busqueda(item, texto=""):
- logger.info()
- itemlist = []
- item.text_color = color2
-
- data = httptools.downloadpage(item.url).data
- data = data.replace("\n", "").replace("\t", "")
-
- bloque = scrapertools.find_single_match(data, '(.*?)')
- bloque = scrapertools.find_multiple_matches(bloque, '- ')
- for match in bloque:
- patron = '([^"]+)".*?
(.*?)'
- matches = scrapertools.find_multiple_matches(match, patron)
- for scrapedurl, scrapedthumbnail, scrapedtitle in matches:
- # fix para el buscador para que no muestre entradas con texto que no es correcto
- if unicode(texto, "utf8").lower().encode("utf8") not in \
- unicode(scrapedtitle, "utf8").lower().encode("utf8"):
- continue
-
- scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle).replace(" online", "")
- titleinfo = re.sub(r'(?i)((primera|segunda|tercera|cuarta|quinta|sexta) temporada)', "Temporada",
- scrapedtitle)
- titleinfo = titleinfo.split("Temporada")[0].strip()
- titleinfo = re.sub(r'(\(\d{4}\))|(\(\d{4}\s*-\s*\d{4}\))', '', titleinfo)
-
- itemlist.append(item.clone(action="episodios", title=scrapedtitle, url=scrapedurl,
- thumbnail=scrapedthumbnail, fulltitle=scrapedtitle, show=titleinfo,
- contentType="tvshow", contentTitle=titleinfo))
- # Paginación
- next_page = scrapertools.find_single_match(data, '')
- if next_page != "":
- itemlist.append(item.clone(title=">> Siguiente", url=next_page))
-
- return itemlist
-
-
-def newest(categoria):
- logger.info()
- itemlist = []
- item = Item()
- try:
- if categoria == 'series':
- item.channel = "verseriesynovelas"
- item.extra = "newest"
- item.url = "http://www.verseriesynovelas.tv/archivos/nuevo"
- item.action = "novedades"
- itemlist = novedades(item)
-
- if itemlist[-1].action == "novedades":
- 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
-
-
-def novedades(item):
- logger.info()
- itemlist = []
- item.text_color = color2
-
- data = httptools.downloadpage(item.url).data
- data = data.replace("\n", "").replace("\t", "")
-
- bloque = scrapertools.find_single_match(data, '')
- bloque = scrapertools.find_multiple_matches(bloque, ' ')
- for match in bloque:
- patron = '([^"]+)".*?
')
- if next_page != "":
- itemlist.append(item.clone(title=">> Siguiente", url=next_page, text_color=color3))
-
- return itemlist
-
-
-def ultimas(item, texto=""):
- logger.info()
- itemlist = []
- item.text_color = color2
-
- data = httptools.downloadpage(item.url).data
- data = data.replace("\n", "").replace("\t", "")
-
- bloque = scrapertools.find_single_match(data, '(.*?)')
- bloque = scrapertools.find_multiple_matches(bloque, '- ')
- for match in bloque:
- patron = '([^"]+)".*?
(.*?)'
- matches = scrapertools.find_multiple_matches(match, patron)
- for scrapedurl, scrapedthumbnail, scrapedtitle in matches:
- # fix para el buscador para que no muestre entradas con texto que no es correcto
- if unicode(texto, "utf8").lower().encode("utf8") not in \
- unicode(scrapedtitle, "utf8").lower().encode("utf8"):
- continue
-
- scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle).replace(" online", "")
- titleinfo = re.sub(r'(?i)((primera|segunda|tercera|cuarta|quinta|sexta) temporada)', "Temporada",
- scrapedtitle)
- titleinfo = titleinfo.split("Temporada")[0].strip()
- titleinfo = re.sub(r'(\(\d{4}\))|(\(\d{4}\s*-\s*\d{4}\))', '', titleinfo)
-
- itemlist.append(item.clone(action="episodios", title=scrapedtitle, url=scrapedurl,
- thumbnail=scrapedthumbnail, fulltitle=titleinfo,
- contentTitle=titleinfo, context=["buscar_trailer"], show=titleinfo,
- contentType="tvshow"))
-
- try:
- from core import tmdb
- tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
- except:
- pass
-
- # Paginación
- next_page = scrapertools.find_single_match(data, '')
- if next_page != "":
- itemlist.append(item.clone(title=">> Siguiente", url=next_page, text_color=color3))
-
- return itemlist
-
-
-def episodios(item):
- logger.info()
- itemlist = []
-
- data = httptools.downloadpage(item.url).data
- data = data.replace("\n", "").replace("\t", "")
-
- plot = scrapertools.find_single_match(data, '(.*?)
')
- item.plot = scrapertools.htmlclean(plot)
- bloque = scrapertools.find_multiple_matches(data, '')
- for match in bloque:
- matches = scrapertools.find_multiple_matches(match, '.*?href="([^"]+)".*?title="([^"]+)"')
- for scrapedurl, scrapedtitle in matches:
- try:
- season, episode = scrapertools.find_single_match(scrapedtitle, '(\d+)(?:×|x)(\d+)')
- item.infoLabels['season'] = season
- item.infoLabels['episode'] = episode
- contentType = "episode"
- except:
- try:
- episode = scrapertools.find_single_match(scrapedtitle, '(?i)(?:Capitulo|Capítulo|Episodio)\s*(\d+)')
- item.infoLabels['season'] = "1"
- item.infoLabels['episode'] = episode
- contentType = "episode"
- except:
- contentType = "tvshow"
-
- scrapedtitle = scrapertools.decodeHtmlentities(scrapedtitle) + " "
- scrapedtitle = scrapedtitle.replace('Temporada', '')
- if "ES.png" in match:
- scrapedtitle += "[CAST]"
- if "SUB.png" in match:
- scrapedtitle += "[VOSE]"
- if "LA.png" in match:
- scrapedtitle += "[LAT]"
- if "EN.png" in match:
- scrapedtitle += "[V.O]"
-
- itemlist.append(item.clone(action="findvideos", title=scrapedtitle, url=scrapedurl,
- fulltitle=scrapedtitle, contentType=contentType))
-
- itemlist.reverse()
- if itemlist and item.extra != "episodios":
- try:
- from core import tmdb
- tmdb.set_infoLabels_itemlist(itemlist, __modo_grafico__)
- except:
- pass
- itemlist.append(item.clone(channel="trailertools", title="Buscar Tráiler", action="buscartrailer", context="",
- text_color="magenta"))
- if item.category != "" and config.get_videolibrary_support():
- itemlist.append(Item(channel=item.channel, title="Añadir esta temporada a la videoteca", url=item.url,
- action="add_serie_to_library", extra="episodios", text_color="green", show=item.show))
-
- return itemlist
-
-
-def findvideos(item):
- logger.info()
- itemlist = []
- item.text_color = color3
-
- if item.extra == "newest" and item.extra != "episodios":
- try:
- from core import tmdb
- tmdb.set_infoLabels_item(item, __modo_grafico__)
- except:
- pass
-
- data = httptools.downloadpage(item.url).data
- if "valida el captcha" in data:
- logueado, error = login(check_login=False)
- data = httptools.downloadpage(item.url).data
- data = re.sub(r"\n|\r|\t|\s{2}| ", "", data)
-
- bloque = scrapertools.find_multiple_matches(data, ' | | (.*?)')
- for match in bloque:
- patron = 'data-th="Calidad">(.*?)<.*?' \
- '"Servidor".*?src="http://www.google.com/s2/favicons\?domain=(.*?)\.' \
- '.*? |
-
+
diff --git a/plugin.video.alfa/servers/fileserve.json b/plugin.video.alfa/servers/fileserve.json
deleted file mode 100755
index 9138b3a1..00000000
--- a/plugin.video.alfa/servers/fileserve.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "active": false,
- "changes": [
- {
- "date": "25/03/2016",
- "description": "Versión incial"
- }
- ],
- "find_videos": {
- "ignore_urls": [],
- "patterns": [
- {
- "pattern": "http://www.fileserve.com/file/([A-Z0-9a-z]{7}])",
- "url": "http://www.fileserve.com/file/\\1"
- }
- ]
- },
- "free": false,
- "id": "fileserve",
- "name": "fileserve",
- "settings": [
- {
- "default": false,
- "enabled": true,
- "id": "black_list",
- "label": "Incluir en lista negra",
- "type": "bool",
- "visible": true
- },
- {
- "default": 0,
- "enabled": true,
- "id": "favorites_servers_list",
- "label": "Incluir en lista de favoritos",
- "lvalues": [
- "No",
- "1",
- "2",
- "3",
- "4",
- "5"
- ],
- "type": "list",
- "visible": false
- }
- ],
- "version": 1
-}
\ No newline at end of file
diff --git a/plugin.video.alfa/servers/fileserve.py b/plugin.video.alfa/servers/fileserve.py
deleted file mode 100755
index 90d89d08..00000000
--- a/plugin.video.alfa/servers/fileserve.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import re
-
-from core import scrapertools
-from platformcode import logger
-
-
-def test_video_exists(page_url):
- logger.info("(page_url='%s')" % page_url)
-
- # Existe: http://www.fileserve.com/file/E5Y5R5E
- # No existe:
- data = scrapertools.cache_page(page_url)
- patron = '[^<]+  ([^<]+)<'
- matches = re.compile(patron, re.DOTALL).findall(data)
-
- if len(matches) > 0:
- return True, ""
- else:
- patron = ' (File not available)'
- matches = re.compile(patron, re.DOTALL).findall(data)
- if len(matches) > 0:
- return False, "El archivo ya no está disponible en fileserve o ha sido borrado"
-
- return True, ""
-
-
-def get_video_url(page_url, premium=False, user="", password="", video_password=""):
- logger.info("(page_url='%s')" % page_url)
-
- video_urls = []
-
- if premium:
- # Accede a la home para precargar la cookie
- data = scrapertools.cache_page("http://fileserve.com/index.php")
-
- # Hace el login
- url = "http://fileserve.com/login.php"
- post = "loginUserName=%s&loginUserPassword=%s&autoLogin=on&ppp=102&loginFormSubmit=Login" % (user, password)
- data = scrapertools.cache_page(url, post=post)
-
- location = scrapertools.get_header_from_response(page_url, header_to_get="location")
- logger.info("location=" + location)
-
- if location.startswith("http"):
- extension = location[-4:]
- video_urls.append(["%s (Premium) [fileserve]" % extension, location])
-
- for video_url in video_urls:
- logger.info("%s - %s" % (video_url[0], video_url[1]))
-
- return video_urls
|