diff --git a/plugin.video.alfa/addon.xml b/plugin.video.alfa/addon.xml index 70f00b92..9f4ebb95 100755 --- a/plugin.video.alfa/addon.xml +++ b/plugin.video.alfa/addon.xml @@ -1,5 +1,5 @@ - + @@ -19,13 +19,15 @@ [B]Estos son los cambios para esta versión:[/B] [COLOR green][B]Arreglos[/B][/COLOR] - ¤ allcalidad ¤ canalpelis ¤ ciberpeliculashd - ¤ pelisplay ¤ doramasmp4 ¤ Newpct1 - ¤ AnimeBoom ¤ AnimeID ¤ abtoon - ¤ mixtoon ¤ Animeflv - + ¤ maxipelis24 ¤ cuevana3 ¤ pelisplusco + ¤ mejortorrent ¤ newpct1 + [COLOR green][B]Novedades[/B][/COLOR] - ¤ Mirapeliculas + ¤ Mundopelis ¤ thevideobee ¤ tusfiles + ¤ vup + + ¤ Agradecimientos a @mac12m99 y @chivmalev por colaborar con ésta versión + Navega con Kodi por páginas web para ver sus videos de manera fácil. Browse web pages using Kodi diff --git a/plugin.video.alfa/channels/animeid.py b/plugin.video.alfa/channels/animeid.py index d96e3f7d..b58be2ee 100755 --- a/plugin.video.alfa/channels/animeid.py +++ b/plugin.video.alfa/channels/animeid.py @@ -9,15 +9,16 @@ from core import scrapertools from core import servertools from core.item import Item from platformcode import config, logger -from channels import renumbertools,autoplay +from channels import renumbertools, autoplay CHANNEL_HOST = "https://www.animeid.tv/" -IDIOMAS = {'Latino':'LAT', 'VOSE': 'VOSE'} +IDIOMAS = {'Latino': 'LAT', 'VOSE': 'VOSE'} list_language = IDIOMAS.values() list_quality = [] list_servers = ['animeid'] + def mainlist(item): logger.info() autoplay.init(item.channel, list_servers, list_quality) @@ -69,7 +70,7 @@ def search(item, texto): ["User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:19.0) Gecko/20100101 Firefox/19.0"]) headers.append(["Referer", CHANNEL_HOST]) headers.append(["X-Requested-With", "XMLHttpRequest"]) - data = scrapertools.cache_page(item.url, headers=headers) + data = httptools.downloadpage(item.url, headers=headers).data data = data.replace("\\", "") patron = '{"id":"([^"]+)","text":"([^"]+)","date":"[^"]*","image":"([^"]+)","link":"([^"]+)"}' matches = re.compile(patron, re.DOTALL).findall(data) @@ -84,7 +85,7 @@ def search(item, texto): context.extend(context2) itemlist.append( Item(channel=item.channel, action="episodios", title=title, url=url, thumbnail=thumbnail, plot=plot, - context=context,show=title, viewmode="movie_with_plot")) + context=context, show=title, viewmode="movie_with_plot")) return itemlist @@ -110,7 +111,7 @@ def novedades_series(item): context2 = autoplay.context context.extend(context2) itemlist.append(Item(channel=item.channel, action="episodios", title=scrapedtitle, url=scrapedurl, - context=context,show=title, viewmode="movie_with_plot")) + context=context, show=title, viewmode="movie_with_plot")) return itemlist @@ -118,7 +119,7 @@ def novedades_episodios(item): logger.info() data = httptools.downloadpage(item.url).data data = scrapertools.find_single_match(data, '
(.*?)
') - patronvideos = '(?s)[^<]+
([^<]+).*?src="([^"]+)"[\s\S]+?

(.+?)

' + patronvideos = '(?s)
[^<]+
([^<]+).*?src="([^"]+)"[\s\S]+?

(.+?)

' matches = re.compile(patronvideos, re.DOTALL).findall(data) itemlist = [] for url, title, thumbnail, plot in matches: @@ -204,13 +205,13 @@ def episodios(item, final=True): data = httptools.downloadpage(item.url).data data_id = scrapertools.find_single_match(data, 'data-id="([^"]+)') CHANNEL_HEADERS = [ - ["Host", "m.animeid.tv"], - ["X-Requested-With", "XMLHttpRequest"] + ["Host", "m.animeid.tv"], + ["X-Requested-With", "XMLHttpRequest"] ] page = 0 while True: page += 1 - u = "https://m.animeid.tv/ajax/caps?id=%s&ord=DESC&pag=%s" %(data_id, page) + u = "https://m.animeid.tv/ajax/caps?id=%s&ord=DESC&pag=%s" % (data_id, page) data = httptools.downloadpage(u, headers=CHANNEL_HEADERS).data # Cuando ya no hay datos devuelve: "list":[] if '"list":[]' in data: @@ -218,21 +219,25 @@ def episodios(item, final=True): dict_data = jsontools.load(data) list = dict_data['list'][::-1] for dict in list: - season, episode = renumbertools.numbered_for_tratk(item.channel, item.contentSerieName, 1, int(dict["numero"])) - title = "%sx%s - %s" % (season, str(episode).zfill(2),dict["date"]) - itemlist.append(Item(action = "findvideos", - channel = item.channel, - title = title, - url = CHANNEL_HOST + dict['href'], - thumbnail = item.thumbnail, - show = item.show, - viewmode = "movie_with_plot" - )) + season, episode = renumbertools.numbered_for_tratk(item.channel, item.contentSerieName, 1, + int(dict["numero"])) + title = "%sx%s - %s" % (season, str(episode).zfill(2), dict["date"]) + itemlist.append(Item(action="findvideos", + channel=item.channel, + title=title, + url=CHANNEL_HOST + dict['href'], + thumbnail=item.thumbnail, + show=item.show, + viewmode="movie_with_plot" + )) if config.get_videolibrary_support(): - 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=item.show)) - itemlist.append(Item(channel=item.channel, title="[COLOR white]Descargar todos los episodios de la serie[/COLOR]", url=item.url, - action="download_all_episodes", extra="episodios", show=item.show)) + 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=item.show)) + itemlist.append( + Item(channel=item.channel, title="[COLOR white]Descargar todos los episodios de la serie[/COLOR]", + url=item.url, + action="download_all_episodes", extra="episodios", show=item.show)) return itemlist @@ -270,8 +275,8 @@ def findvideos(item): itemlist.append(Item(channel=item.channel, action="findvideos", title="Siguiente: " + title_siguiente, url=CHANNEL_HOST + url_siguiente, thumbnail=item.thumbnail, plot=item.plot, show=item.show, fanart=item.thumbnail, folder=True)) - + # Requerido para AutoPlay autoplay.start(itemlist, item) - + return itemlist diff --git a/plugin.video.alfa/channels/asialiveaction.py b/plugin.video.alfa/channels/asialiveaction.py index 75c37dec..ad2d930b 100644 --- a/plugin.video.alfa/channels/asialiveaction.py +++ b/plugin.video.alfa/channels/asialiveaction.py @@ -25,14 +25,14 @@ def mainlist(item): autoplay.init(item.channel, list_servers, list_quality) itemlist = list() itemlist.append(Item(channel=item.channel, action="lista", title="Peliculas", - url=urlparse.urljoin(host, "p/peliculas.html"), type='pl', first=0)) - itemlist.append(Item(channel=item.channel, action="lista", title="Series", - url=urlparse.urljoin(host, "p/series.html"), type='sr', first=0)) + url=urlparse.urljoin(host, "/category/pelicula"), type='pl', pag=1)) + #itemlist.append(Item(channel=item.channel, action="lista", title="Series", + # url=urlparse.urljoin(host, "/category/serie"), type='sr', pag=1)) itemlist.append(Item(channel=item.channel, action="category", title="Géneros", url=host, cat='genre')) itemlist.append(Item(channel=item.channel, action="category", title="Calidad", url=host, cat='quality')) itemlist.append(Item(channel=item.channel, action="category", title="Orden Alfabético", url=host, cat='abc')) itemlist.append(Item(channel=item.channel, action="category", title="Año de Estreno", url=host, cat='year')) - itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host+"/search?q=")) + #itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host+"/search?q=")) autoplay.show_option(item.channel, itemlist) return itemlist @@ -43,18 +43,18 @@ def category(item): data = httptools.downloadpage(host).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) if item.cat == 'abc': - data = scrapertools.find_single_match(data, 'Orden Alfabético.*?') + data = scrapertools.find_single_match(data, '
(.+?)
') elif item.cat == 'genre': - data = scrapertools.find_single_match(data, 'Géneros.*?') + data = scrapertools.find_single_match(data, 'Géneros<\/a>') + data = scrapertools.find_single_match(data, 'Año<\/a>') - patron = "([^<]+)" + data = scrapertools.find_single_match(data, 'Calidad<\/a>") - - patron = '.*?
(.*?)' - patron += '(.*?)
([^<]+)
' + + patron = '
' + patron += '<.*?>' #scrapedurl + patron += '.*?' #scrapedthumbnail + patron += '

([^"]+)<\/h3>' #scrapedtitle + patron += '([^"]+)<\/span>.+?' #scrapedyear + patron += '([^"]+)<\/a>' #scrapedtype matches = scrapertools.find_multiple_matches(data, patron) - first = int(item.first) - last = first + 19 - if last > len(matches): - last = len(matches) - next = False + for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear, scrapedtype in matches: + title="%s - %s" % (scrapedtitle,scrapedyear) - for scrapedtype, scrapedyear, scrapedthumbnail, scrapedquality, scrapedtitle, scrapedurl in matches[first:last]: - year = scrapertools.find_single_match(scrapedyear, '(\d{4})') + new_item = Item(channel=item.channel, title=title, url=scrapedurl, thumbnail=scrapedthumbnail, + type=scrapedtype, infoLabels={'year':scrapedyear}) - if not year: - class_year = scrapertools.find_single_match(scrapedyear, 'class="([^\"]+)"') - year = scrapertools.find_single_match(css_data, "\." + class_year + ":after {content:'(\d{4})';}") - if not year: - year = scrapertools.find_single_match(data, "headline'>(\d{4})

") - - qual = "" - if scrapedquality: - patron_qualities='' - qualities = scrapertools.find_multiple_matches(scrapedquality, patron_qualities) - - for quality in qualities: - patron_desc = "\." + quality + ":after {content:'([^\']+)';}" - quality_desc = scrapertools.find_single_match(css_data, patron_desc) - - qual = qual+ "[" + quality_desc + "] " - - title="%s [%s] %s" % (scrapedtitle,year,qual) - - new_item = Item(channel=item.channel, title=title, url=host+scrapedurl, thumbnail=scrapedthumbnail, - type=scrapedtype, infoLabels={'year':year}) - - if scrapedtype.strip() == 'sr': + if scrapedtype == 'sr': new_item.contentSerieName = scrapedtitle new_item.action = 'episodios' else: new_item.contentTitle = scrapedtitle new_item.action = 'findvideos' - - if scrapedtype == item.type or item.type == 'cat': - itemlist.append(new_item) + + itemlist.append(new_item) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) #pagination - url_next_page = item.url - first = last - if next: - itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, action='lista', first=first)) - + pag = item.pag + 1 + url_next_page = item.url+"/page/"+str(pag)+"/" + if len(itemlist)>19: + itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, action='lista', pag=pag)) return itemlist diff --git a/plugin.video.alfa/channels/autoplay.py b/plugin.video.alfa/channels/autoplay.py index 31f2275a..79c764b7 100644 --- a/plugin.video.alfa/channels/autoplay.py +++ b/plugin.video.alfa/channels/autoplay.py @@ -9,6 +9,7 @@ from platformcode import config, logger from platformcode import platformtools from platformcode import launcher from time import sleep +from platformcode.config import get_setting __channel__ = "autoplay" @@ -117,7 +118,7 @@ def start(itemlist, item): # Obtiene los ajustes des autoplay para este canal settings_node = channel_node.get('settings', {}) - if settings_node['active']: + if get_setting('autoplay') or settings_node['active']: url_list_valid = [] autoplay_list = [] autoplay_b = [] @@ -142,7 +143,7 @@ def start(itemlist, item): # 2: Solo servidores # 3: Solo calidades # 4: No ordenar - if settings_node['custom_servers'] and settings_node['custom_quality']: + if (settings_node['custom_servers'] and settings_node['custom_quality']) or get_setting('autoplay'): priority = settings_node['priority'] # 0: Servidores y calidades o 1: Calidades y servidores elif settings_node['custom_servers']: priority = 2 # Solo servidores @@ -391,14 +392,15 @@ def init(channel, list_servers, list_quality, reset=False): # Se comprueba que no haya calidades ni servidores duplicados if 'default' not in list_quality: list_quality.append('default') - list_servers = list(set(list_servers)) - list_quality = list(set(list_quality)) + # list_servers = list(set(list_servers)) + # list_quality = list(set(list_quality)) # Creamos el nodo del canal y lo añadimos channel_node = {"servers": list_servers, "quality": list_quality, "settings": { "active": False, + "plan_b": True, "custom_servers": False, "custom_quality": False, "priority": 0}} @@ -455,7 +457,7 @@ def check_value(channel, itemlist): for item in itemlist: if item.server.lower() not in server_list and item.server !='': - server_list.append(item.server) + server_list.append(item.server.lower()) change = True if item.quality not in quality_list and item.quality !='': quality_list.append(item.quality) @@ -672,7 +674,7 @@ def is_active(channel): # Obtiene los ajustes des autoplay para este canal settings_node = channel_node.get('settings', {}) - return settings_node.get('active', False) + return settings_node.get('active', False) or get_setting('autoplay') def reset(item, dict): diff --git a/plugin.video.alfa/channels/beeg.py b/plugin.video.alfa/channels/beeg.py index f3b68b14..36e3f020 100755 --- a/plugin.video.alfa/channels/beeg.py +++ b/plugin.video.alfa/channels/beeg.py @@ -3,7 +3,7 @@ import re import urllib -from core import jsontools as json +from core import jsontools as json, httptools from core import scrapertools from core.item import Item from platformcode import logger @@ -12,6 +12,7 @@ url_api = "" beeg_salt = "" Host = "https://beeg.com" + def get_api_url(): global url_api global beeg_salt @@ -53,7 +54,7 @@ def mainlist(item): itemlist = [] itemlist.append(Item(channel=item.channel, action="videos", title="Útimos videos", url=url_api + "/index/main/0/pc", viewmode="movie")) - #itemlist.append(Item(channel=item.channel, action="listcategorias", title="Listado categorias Populares", + # itemlist.append(Item(channel=item.channel, action="listcategorias", title="Listado categorias Populares", # url=url_api + "/index/main/0/pc", extra="popular")) itemlist.append(Item(channel=item.channel, action="listcategorias", title="Listado categorias completo", url=url_api + "/index/main/0/pc", extra="nonpopular")) @@ -65,7 +66,7 @@ def mainlist(item): def videos(item): logger.info() itemlist = [] - data = scrapertools.cache_page(item.url) + data = httptools.downloadpage(item.url).data JSONData = json.load(data) for Video in JSONData["videos"]: @@ -90,14 +91,14 @@ def videos(item): def listcategorias(item): logger.info() itemlist = [] - data = scrapertools.cache_page(item.url) + data = httptools.downloadpage(item.url).data JSONData = json.load(data) - #for Tag in JSONData["tags"][item.extra]: + # for Tag in JSONData["tags"][item.extra]: for Tag in JSONData["tags"]: url = url_api + "/index/tag/0/pc?tag=" + Tag["tag"] title = '%s - %s' % (str(Tag["tag"]), str(Tag["videos"])) - #title = title[:1].upper() + title[1:] + # title = title[:1].upper() + title[1:] itemlist.append( Item(channel=item.channel, action="videos", title=title, url=url, folder=True, viewmode="movie")) @@ -109,7 +110,7 @@ def search(item, texto): texto = texto.replace(" ", "+") item.url = item.url % (texto) - + try: return videos(item) # Se captura la excepción, para no interrumpir al buscador global si un canal falla @@ -136,7 +137,8 @@ def play(item): viedokey = re.compile("key=(.*?)%2Cend=", re.DOTALL).findall(url)[0] url = url.replace(viedokey, decode(viedokey)) - if not url.startswith("https:"): url = "https:" + url + if not url.startswith("https:"): + url = "https:" + url title = videourl itemlist.append(["%s %s [directo]" % (title, url[-4:]), url]) diff --git a/plugin.video.alfa/channels/canalpelis.py b/plugin.video.alfa/channels/canalpelis.py index fa550301..d827b70f 100644 --- a/plugin.video.alfa/channels/canalpelis.py +++ b/plugin.video.alfa/channels/canalpelis.py @@ -40,7 +40,6 @@ else: headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'], ['Referer', host]] - parameters = channeltools.get_channel_parameters(__channel__) fanart_host = parameters['fanart'] thumbnail_host = parameters['thumbnail'] @@ -105,7 +104,6 @@ def sub_search(item): matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedthumbnail, scrapedtitle, tipo, year in matches: - itemlist.append(item.clone(title=scrapedtitle, url=scrapedurl, contentTitle=scrapedtitle, action="findvideos", infoLabels={"year": year}, thumbnail=scrapedthumbnail, text_color=color3, page=0)) @@ -167,7 +165,6 @@ def peliculas(item): for scrapedthumbnail, scrapedtitle, rating, quality, scrapedurl, year in matches[item.page:item.page + 30]: if 'Próximamente' not in quality and '-XXX.jpg' not in scrapedthumbnail: - scrapedtitle = scrapedtitle.replace('Ver ', '').strip() contentTitle = scrapedtitle.partition(':')[0].partition(',')[0] title = "%s [COLOR green][%s][/COLOR] [COLOR yellow][%s][/COLOR]" % ( @@ -212,7 +209,7 @@ def generos(item): logger.info() itemlist = [] - data = scrapertools.cache_page(item.url) + data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) patron = '
  • ([^<]+) ([^<]+)
  • ' @@ -231,14 +228,13 @@ def year_release(item): logger.info() itemlist = [] - data = scrapertools.cache_page(item.url) + data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) # logger.info(data) patron = '
  • ([^<]+)
  • ' # url, title matches = re.compile(patron, re.DOTALL).findall(data) 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')) @@ -365,7 +361,7 @@ def episodios(item): if i.infoLabels['title']: # Si el capitulo tiene nombre propio añadirselo al titulo del item i.title = "%sx%s %s" % (i.infoLabels['season'], i.infoLabels[ - 'episode'], i.infoLabels['title']) + 'episode'], i.infoLabels['title']) if i.infoLabels.has_key('poster_path'): # Si el capitulo tiene imagen propia remplazar al poster i.thumbnail = i.infoLabels['poster_path'] diff --git a/plugin.video.alfa/channels/cine24h.py b/plugin.video.alfa/channels/cine24h.py index 566bbb7f..5c328ea5 100644 --- a/plugin.video.alfa/channels/cine24h.py +++ b/plugin.video.alfa/channels/cine24h.py @@ -41,7 +41,6 @@ else: headers = [['User-Agent', 'Mozilla/50.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0'], ['Referer', host]] - parameters = channeltools.get_channel_parameters(__channel__) fanart_host = parameters['fanart'] thumbnail_host = parameters['thumbnail'] @@ -121,10 +120,10 @@ def peliculas(item): data = re.sub(r"\n|\r|\t|\(.*?\)|\s{2}| ", "", data) data = scrapertools.decodeHtmlentities(data) patron = '
    .*?' # url - patron += '", "", data) patron = '
    \s*.*?' # url - patron += '", "", data) - patron = '