(.*?)
' + patron = '([^<]+)<\/p>'
matches = re.compile(patron, re.DOTALL).findall(data)
for scrapedurl, scrapedthumb, scrapedtitle, year, lang_data, scrapedplot in matches:
diff --git a/plugin.video.alfa/channels/dramasjc.json b/plugin.video.alfa/channels/dramasjc.json
new file mode 100644
index 00000000..b44033a6
--- /dev/null
+++ b/plugin.video.alfa/channels/dramasjc.json
@@ -0,0 +1,46 @@
+{
+ "id": "dramasjc",
+ "name": "DramasJC",
+ "active": true,
+ "adult": false,
+ "language": [],
+ "thumbnail": "https://www.dramasjc.com/wp-content/uploads/2018/03/logo.png",
+ "banner": "",
+ "version": 1,
+ "categories": [
+ "tvshow",
+ "movie",
+ "vos"
+ ],
+ "settings": [
+ {
+ "id": "include_in_global_search",
+ "type": "bool",
+ "label": "Incluir en busqueda global",
+ "default": false,
+ "enabled": false,
+ "visible": false
+ },
+ {
+ "id": "filter_languages",
+ "type": "list",
+ "label": "Mostrar enlaces en idioma...",
+ "default": 0,
+ "enabled": true,
+ "visible": true,
+ "lvalues": [
+ "No filtrar",
+ "VOSE",
+ "VO"
+ ]
+ },
+ {
+ "id": "include_in_newest_peliculas",
+ "type": "bool",
+ "label": "Incluir en Novedades - Peliculas",
+ "default": true,
+ "enabled": true,
+ "visible": true
+ }
+ ]
+}
diff --git a/plugin.video.alfa/channels/dramasjc.py b/plugin.video.alfa/channels/dramasjc.py
new file mode 100644
index 00000000..e7be6375
--- /dev/null
+++ b/plugin.video.alfa/channels/dramasjc.py
@@ -0,0 +1,281 @@
+# -*- coding: utf-8 -*-
+# -*- Channel DramasJC -*-
+# -*- Created for Alfa-addon -*-
+# -*- By the Alfa Develop Group -*-
+
+import re
+import urllib
+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
+from channels import filtertools
+
+
+host = 'https://www.dramasjc.com/'
+
+IDIOMAS = {'VOSE': 'VOSE', 'VO':'VO'}
+list_language = IDIOMAS.values()
+list_quality = []
+list_servers = ['okru', 'mailru', 'openload']
+
+def mainlist(item):
+ logger.info()
+
+ autoplay.init(item.channel, list_servers, list_quality)
+
+ itemlist = list()
+ itemlist.append(Item(channel=item.channel, title="Doramas", action="menu_doramas",
+ thumbnail=get_thumb('doramas', auto=True)))
+
+ itemlist.append(Item(channel=item.channel, title="Películas", action="list_all", url=host+'peliculas/',
+ type='movie', thumbnail=get_thumb('movies', auto=True)))
+
+ itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host+'?s=',
+ thumbnail=get_thumb('search', auto=True)))
+
+ autoplay.show_option(item.channel, itemlist)
+
+ return itemlist
+
+
+def menu_doramas(item):
+ logger.info()
+
+ itemlist = []
+
+ itemlist.append(Item(channel=item.channel, title="Todos", action="list_all", url=host + 'series',
+ thumbnail=get_thumb('all', auto=True)))
+ itemlist.append(Item(channel=item.channel, title="Generos", action="section",
+ thumbnail=get_thumb('genres', auto=True)))
+
+ return itemlist
+
+def get_source(url):
+ logger.info()
+ data = httptools.downloadpage(url).data
+ data = re.sub(r'\n|\r|\t| |
|\s{2,}', "", data)
+ return data
+
+
+def list_all(item):
+ logger.info()
+ itemlist = []
+
+ data = get_source(item.url)
+ full_data = data
+ data = scrapertools.find_single_match(data, '
- .*?(?:
|\s{2,}', "", data) + return data + + +def get_language(lang_data): + logger.info() + language = [] + lang_list = scrapertools.find_multiple_matches(lang_data, '/flags/(.*?).png\)') + for lang in lang_list: + if lang == 'en': + lang = 'vose' + if lang not in language: + language.append(lang) + return language + +def section(item): + logger.info() + itemlist=[] + duplicados=[] + full_data = get_source(host+'/'+item.type) + if 'Genero' in item.title: + data = scrapertools.find_single_match(full_data, 'Generos(.*?)') + elif 'Año' in item.title: + data = scrapertools.find_single_match(full_data, '
Busqueda por Año
(.*?)') + patron = '([^<]+)<' + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedtitle in matches: + title = scrapedtitle + plot='' + title = scrapedtitle + url = scrapedurl + if title not in duplicados and title.lower() != 'proximamente': + itemlist.append(Item(channel=item.channel, url=url, title=title, plot=plot, action='list_all', + type=item.type)) + duplicados.append(title) + + return itemlist + +def list_all(item): + logger.info() + itemlist = [] + + data = get_source(item.url) + if item.type == 'movies': + patron = '([^<]+)
' + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedthumb, scrapedtitle, type, year, lang_data, scrapedplot in matches: + + title = scrapedtitle + url = scrapedurl + thumbnail = scrapedthumb + plot = scrapedplot + language = get_language(lang_data) + if language: + action = 'findvideos' + else: + action = 'seasons' + + new_item=Item(channel=item.channel, title=title, url=url, thumbnail=thumbnail, plot=plot, + action=action, type=type, language=language, infoLabels={'year':year}) + if new_item.action == 'findvideos': + new_item.contentTitle = new_item.title + else: + new_item.contentSerieName = new_item.title + + itemlist.append(new_item) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + return itemlist +def newest(categoria): + logger.info() + itemlist = [] + item = Item() + try: + if categoria in ['peliculas']: + item.url = host + 'movies/' + elif categoria == 'infantiles': + item.url = host + 'genero/animacion/' + elif categoria == 'terror': + item.url = host + 'genero/terror/' + elif categoria == 'anime': + item.url = host + 'genero/anime/' + item.type='movies' + itemlist = list_all(item) + if itemlist[-1].title == 'Siguiente >>': + itemlist.pop() + except: + import sys + for line in sys.exc_info(): + logger.error("{0}".format(line)) + return [] + + return itemlist diff --git a/plugin.video.alfa/channels/peliculonhd.json b/plugin.video.alfa/channels/peliculonhd.json new file mode 100644 index 00000000..ca50749f --- /dev/null +++ b/plugin.video.alfa/channels/peliculonhd.json @@ -0,0 +1,88 @@ +{ +"id": "peliculonhd", + "name": "PeliculonHD", + "active": true, + "adult": false, + "language": ["lat", "cast"], + "thumbnail": "https://peliculonhd.com/wp-content/uploads/2018/09/peliculonnewlogo3-.png", + "banner": "", + "categories": [ + "movie", + "tvshow", + "vos", + "direct" + ], + "settings": [ + { + "id": "include_in_global_search", + "type": "bool", + "label": "Incluir en busqueda global", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "Latino", + "Castellano", + "VOSE" + ] + }, + { + "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 + }, + { + "id": "include_in_newest_documentales", + "type": "bool", + "label": "Incluir en Novedades - Documentales", + "default": true, + "enabled": true, + "visible": true + }, + { + "id": "comprueba_enlaces", + "type": "bool", + "label": "Verificar si los enlaces existen", + "default": false, + "enabled": true, + "visible": true + }, + { + "id": "comprueba_enlaces_num", + "type": "list", + "label": "Número de enlaces a verificar", + "default": 1, + "enabled": true, + "visible": "eq(-1,true)", + "lvalues": [ "5", "10", "15", "20" ] + } + ] +} diff --git a/plugin.video.alfa/channels/peliculonhd.py b/plugin.video.alfa/channels/peliculonhd.py new file mode 100644 index 00000000..7c85a26b --- /dev/null +++ b/plugin.video.alfa/channels/peliculonhd.py @@ -0,0 +1,405 @@ +# -*- coding: utf-8 -*- +# -*- Channel PeliculonHD -*- +# -*- Created for Alfa-addon -*- +# -*- By the Alfa Develop Group -*- + +import re +import urllib +import base64 + +from channelselector import get_thumb +from core import httptools +from core import jsontools +from core import scrapertools +from core import servertools +from core import tmdb +from lib import jsunpack +from core.item import Item +from channels import filtertools +from channels import autoplay +from platformcode import config, logger + + +IDIOMAS = {'mx': 'Latino', 'dk':'Latino', 'es': 'Castellano', 'en': 'VOSE', 'gb':'VOSE'} +list_language = IDIOMAS.values() + +list_quality = [] + +list_servers = [ + 'directo', + 'openload', + 'rapidvideo', + 'jawcloud', + 'cloudvideo', + 'upvid', + 'vevio', + 'gamovideo' +] + +__comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'peliculonhd') +__comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'peliculonhd') + +host = 'https://peliculonhd.com/' + +def mainlist(item): + logger.info() + + autoplay.init(item.channel, list_servers, list_quality) + + itemlist = [] + + itemlist.append(Item(channel=item.channel, title='Peliculas', action='menu_movies', + thumbnail= get_thumb('movies', auto=True))) + itemlist.append(Item(channel=item.channel, title='Series', url=host+'serie', action='list_all', type='tv', + thumbnail= get_thumb('tvshows', auto=True))) + itemlist.append( + item.clone(title="Buscar", action="search", url=host + '?s=', thumbnail=get_thumb("search", auto=True), + extra='movie')) + + autoplay.show_option(item.channel, itemlist) + + return itemlist + +def menu_movies(item): + logger.info() + + itemlist=[] + + itemlist.append(Item(channel=item.channel, title='Todas', url=host + 'ver', action='list_all', + thumbnail=get_thumb('all', auto=True), type='movie')) + itemlist.append(Item(channel=item.channel, title='Genero', action='section', + thumbnail=get_thumb('genres', auto=True), type='movie')) + itemlist.append(Item(channel=item.channel, title='Por Año', action='section', + thumbnail=get_thumb('year', auto=True), type='movie')) + + return itemlist + +def get_source(url, referer=None): + logger.info() + if referer is not None: + data = httptools.downloadpage(url).data + else: + data = httptools.downloadpage(url, headers={'Referer':referer}).data + data = re.sub(r'\n|\r|\t| ||\s{2,}', "", data) + return data + + +def get_language(lang_data): + logger.info() + language = [] + lang_list = scrapertools.find_multiple_matches(lang_data, '/flags/(.*?).png\)') + for lang in lang_list: + if lang == 'en': + lang = 'vose' + if lang not in language: + language.append(lang) + return language + +def section(item): + logger.info() + itemlist=[] + duplicados=[] + full_data = get_source(host+'/'+item.type) + if 'Genero' in item.title: + data = scrapertools.find_single_match(full_data, 'Genero(.*?)') + elif 'Año' in item.title: + data = scrapertools.find_single_match(full_data, 'Año(.*?)') + patron = '([^<]+)<' + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedtitle in matches: + title = scrapedtitle + plot='' + title = scrapedtitle + url = host+scrapedurl + if title not in duplicados and title.lower() != 'proximamente': + itemlist.append(Item(channel=item.channel, url=url, title=title, plot=plot, action='list_all', + type=item.type)) + duplicados.append(title) + + return itemlist + + +def list_all(item): + logger.info() + itemlist = [] + + data = get_source(item.url) + + if item.type == 'movie': + patron = '
([^<]+)
' + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedthumb, scrapedtitle, type, year, lang_data, scrapedplot in matches: + + title = scrapedtitle + url = scrapedurl + thumbnail = scrapedthumb + plot = scrapedplot + language = get_language(lang_data) + type = re.sub('shows|s', '', type) + if language: + action = 'findvideos' + else: + action = 'seasons' + + new_item=Item(channel=item.channel, title=title, url=url, thumbnail=thumbnail, plot=plot, + action=action, type=type, language=language, infoLabels={'year':year}) + if new_item.action == 'findvideos': + new_item.contentTitle = new_item.title + else: + new_item.contentSerieName = new_item.title + + itemlist.append(new_item) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + return itemlist + +def newest(categoria): + logger.info() + itemlist = [] + item = Item() + try: + if categoria in ['peliculas']: + item.url = host + 'ver/' + elif categoria == 'infantiles': + item.url = host + 'genero/animacion/' + elif categoria == 'terror': + item.url = host + 'genero/terror/' + elif categoria == 'documentales': + item.url = host + 'genero/terror/' + item.type='movie' + itemlist = list_all(item) + if itemlist[-1].title == 'Siguiente >>': + itemlist.pop() + except: + import sys + for line in sys.exc_info(): + logger.error("{0}".format(line)) + return [] + + return itemlist diff --git a/plugin.video.alfa/channels/pelisfox.json b/plugin.video.alfa/channels/pelisfox.json old mode 100755 new mode 100644 index fabef068..4f611ebc --- a/plugin.video.alfa/channels/pelisfox.json +++ b/plugin.video.alfa/channels/pelisfox.json @@ -1,14 +1,14 @@ { "id": "pelisfox", - "name": "pelisfox", + "name": "Pelisfox", "active": true, "adult": false, "language": ["lat"], "thumbnail": "https://s14.postimg.cc/c43etc1lt/pelisfox.png", "banner": "https://s30.postimg.cc/p6twg905d/pelisfox-banner.png", "categories": [ - "direct", - "movie" + "movie", + "vos" ], "settings": [ { @@ -50,6 +50,19 @@ "default": true, "enabled": true, "visible": true + }, + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "LAT", + "VOSE" + ] } ] } diff --git a/plugin.video.alfa/channels/pelisfox.py b/plugin.video.alfa/channels/pelisfox.py index 1d367c53..07e10e4c 100644 --- a/plugin.video.alfa/channels/pelisfox.py +++ b/plugin.video.alfa/channels/pelisfox.py @@ -10,15 +10,17 @@ from core import tmdb from core import jsontools from core.item import Item from platformcode import config, logger +from channels import filtertools +from channels import autoplay +from channelselector import get_thumb -tgenero = {"Drama": "https://s16.postimg.cc/94sia332d/drama.png", - u"Accción": "https://s3.postimg.cc/y6o9puflv/accion.png", - u"Animación": "https://s13.postimg.cc/5on877l87/animacion.png", - u"Ciencia Ficción": "https://s9.postimg.cc/diu70s7j3/cienciaficcion.png", - "Terror": "https://s7.postimg.cc/yi0gij3gb/terror.png", - } -audio = {'LAT': '[COLOR limegreen]LATINO[/COLOR]', 'SUB': '[COLOR red]Subtitulado[/COLOR]'} + +IDIOMAS = {'latino': 'LAT', 'subtitulado': 'VOSE'} +list_language = IDIOMAS.values() +list_quality = ['CAM', '360p', '480p', '720p', '1080p'] +list_servers = ['vidlox', 'fembed', 'vidcolud', 'streamango', 'openload'] + host = 'http://pelisfox.tv' @@ -26,46 +28,44 @@ host = 'http://pelisfox.tv' def mainlist(item): logger.info() + autoplay.init(item.channel, list_servers, list_quality) itemlist = [] itemlist.append(item.clone(title="Ultimas", action="lista", - thumbnail='https://s22.postimg.cc/cb7nmhwv5/ultimas.png', - fanart='https://s22.postimg.cc/cb7nmhwv5/ultimas.png', + thumbnail=get_thumb('last', auto=True), url=host + '/estrenos/' )) itemlist.append(item.clone(title="Generos", action="seccion", url=host, - thumbnail='https://s3.postimg.cc/5s9jg2wtf/generos.png', - fanart='https://s3.postimg.cc/5s9jg2wtf/generos.png', + thumbnail=get_thumb('genres', auto=True), seccion='generos' )) itemlist.append(item.clone(title="Por Año", action="seccion", url=host + '/peliculas/2017/', - thumbnail='https://s8.postimg.cc/7eoedwfg5/pora_o.png', - fanart='https://s8.postimg.cc/7eoedwfg5/pora_o.png', + thumbnail=get_thumb('year', auto=True), seccion='anios' )) itemlist.append(item.clone(title="Por Actor", action="seccion", url=host + '/actores/', - thumbnail='https://s17.postimg.cc/w25je5zun/poractor.png', - fanart='https://s17.postimg.cc/w25je5zun/poractor.png', + thumbnail=get_thumb('actors', auto=True), seccion='actor' )) itemlist.append(item.clone(title="Buscar", action="search", url=host + '/api/elastic/suggest?query=', - thumbnail='https://s30.postimg.cc/pei7txpa9/buscar.png', - fanart='https://s30.postimg.cc/pei7txpa9/buscar.png' + thumbnail=get_thumb('search', auto=True) )) + autoplay.show_option(item.channel, itemlist) + return itemlist @@ -140,8 +140,6 @@ def seccion(item): for scrapedurl, scrapedtitle in matches: title = scrapedtitle.decode('utf-8') thumbnail = '' - if item.seccion == 'generos': - thumbnail = tgenero[title] fanart = '' url = host + scrapedurl @@ -222,63 +220,37 @@ def search(item, texto): def findvideos(item): logger.info() itemlist = [] - templist = [] - video_list = [] data = httptools.downloadpage(item.url).data - data = re.sub(r'"|\n|\r|\t| ||\s{2,}', "", data) + data = re.sub(r'\n|\r|\t| |
|\s{2,}', "", data) + links = scrapertools.find_single_match(data, '") + dec_data = jsunpack.unpack(enc_data) + sources = 'file:"([^"]+)",label:"([^"]+)"' + matches = re.compile(sources, re.DOTALL).findall(dec_data) + for url, quality in matches: + video_url = url + video_urls.append(['tiwi.kiwi [%s]' % quality, video_url]) + return video_urls \ No newline at end of file diff --git a/plugin.video.alfa/servers/vidcloud.json b/plugin.video.alfa/servers/vidcloud.json new file mode 100644 index 00000000..428fe7cd --- /dev/null +++ b/plugin.video.alfa/servers/vidcloud.json @@ -0,0 +1,42 @@ +{ + "active": true, + "find_videos": { + "ignore_urls": [], + "patterns": [ + { + "pattern": "https://vidcloud.co/embed/([a-z0-9]+)", + "url": "https://vidcloud.co/player?fid=\\1&page=embed" + } + ] + }, + "free": true, + "id": "vidcloud", + "name": "vidcloud", + "settings": [ + { + "default": false, + "enabled": true, + "id": "black_list", + "label": "@60654", + "type": "bool", + "visible": true + }, + { + "default": 0, + "enabled": true, + "id": "favorites_servers_list", + "label": "@60655", + "lvalues": [ + "No", + "1", + "2", + "3", + "4", + "5" + ], + "type": "list", + "visible": false + } + ], + "thumbnail": "https://i.postimg.cc/xjpwG0rK/0a-RVDzlb-400x400.jpg" +} diff --git a/plugin.video.alfa/servers/vidcloud.py b/plugin.video.alfa/servers/vidcloud.py new file mode 100644 index 00000000..17f4d20d --- /dev/null +++ b/plugin.video.alfa/servers/vidcloud.py @@ -0,0 +1,29 @@ +# Conector vidcloud By Alfa development Group +# -------------------------------------------------------- + +import re +from core import httptools +from core import scrapertools +from lib import jsunpack +from platformcode import logger + + +def test_video_exists(page_url): + logger.info("(page_url='%s')" % page_url) + data = httptools.downloadpage(page_url) + if data.code == 404: + return False, "[Cloud] El archivo no existe o ha sido borrado" + return True, "" + + +def get_video_url(page_url, premium=False, user="", password="", video_password=""): + logger.info("url=" + page_url) + video_urls = [] + data = httptools.downloadpage(page_url).data + data = data.replace('\\\\', '\\').replace('\\','') + patron = '"file":"([^"]+)"' + matches = re.compile(patron, re.DOTALL).findall(data) + + for url in matches: + video_urls.append(['vidcloud', url]) + return video_urls