From 369360c9b3d27ff42698697db75f6baa04dec63e Mon Sep 17 00:00:00 2001 From: danielr460 Date: Sun, 27 Jan 2019 10:42:26 -0500 Subject: [PATCH 01/12] Arreglo en la paginacion, de series --- plugin.video.alfa/channels/anitoonstv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/anitoonstv.py b/plugin.video.alfa/channels/anitoonstv.py index ac4e623c..733a4eda 100644 --- a/plugin.video.alfa/channels/anitoonstv.py +++ b/plugin.video.alfa/channels/anitoonstv.py @@ -116,7 +116,7 @@ def lista(item): itemlist.append(item.clone(title=scrapedtitle, contentSerieName=show,url=scrapedurl, plot=scrapedplot, thumbnail=scrapedthumbnail, action="episodios", context=context)) tmdb.set_infoLabels(itemlist, seekTmdb=True) - itemlist.append(Item(channel=item.channel, url=item.url, range=next_page, title='Pagina Siguente >>>', contentTitle=item.title, action='lista')) + itemlist.append(Item(channel=item.channel, url=item.url, range=next_page, title='Pagina Siguente >>>', contentTitle=item.contentTitle, action='lista')) return itemlist From fc88f500fac422039db7c287ceaaedce55219cd3 Mon Sep 17 00:00:00 2001 From: danielr460 Date: Sun, 27 Jan 2019 10:43:02 -0500 Subject: [PATCH 02/12] Nuevo Canal: abtoon --- plugin.video.alfa/channels/abtoon.json | 12 ++ plugin.video.alfa/channels/abtoon.py | 225 +++++++++++++++++++++++++ 2 files changed, 237 insertions(+) create mode 100644 plugin.video.alfa/channels/abtoon.json create mode 100644 plugin.video.alfa/channels/abtoon.py diff --git a/plugin.video.alfa/channels/abtoon.json b/plugin.video.alfa/channels/abtoon.json new file mode 100644 index 00000000..0e1ba854 --- /dev/null +++ b/plugin.video.alfa/channels/abtoon.json @@ -0,0 +1,12 @@ +{ + "id": "abtoon", + "name": "abtoon", + "active": true, + "adult": false, + "language": ["lat"], + "thumbnail": "http://i.imgur.com/s6CBxlw.png", + "banner": "http://i.imgur.com/c1YTgNT.png", + "categories": [ + "tvshow" + ] +} \ No newline at end of file diff --git a/plugin.video.alfa/channels/abtoon.py b/plugin.video.alfa/channels/abtoon.py new file mode 100644 index 00000000..5d7653e5 --- /dev/null +++ b/plugin.video.alfa/channels/abtoon.py @@ -0,0 +1,225 @@ +# -*- coding: utf-8 -*- + +import re + +from channels import renumbertools +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 filtertools +from channels import autoplay +from lib import gktools + +IDIOMAS = {'latino': 'Latino'} +list_language = IDIOMAS.values() +list_servers = ['openload' + ] +list_quality = ['default'] + + +host = "https://abtoon.net" + + +def mainlist(item): + logger.info() + thumb_series = get_thumb("channels_tvshow.png") + autoplay.init(item.channel, list_servers, list_quality) + + itemlist = list() + + itemlist.append( + Item(channel=item.channel, action="lista", title="Series", contentSerieName="Series", url=host, thumbnail=thumb_series, page=0)) + #itemlist.append( + # Item(channel=item.channel, action="lista", title="Live Action", contentSerieName="Live Action", url=host+"/liveaction", thumbnail=thumb_series, page=0)) + #itemlist.append( + # Item(channel=item.channel, action="peliculas", title="Películas", contentSerieName="Películas", url=host+"/peliculas", thumbnail=thumb_series, page=0)) + itemlist = renumbertools.show_option(item.channel, itemlist) + autoplay.show_option(item.channel, itemlist) + return itemlist + + +def lista(item): + logger.info() + + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + patron = '10: + itemlist.append( + Item(channel=item.channel, contentSerieName=item.contentSerieName, title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=url, action="lista", page=0)) + else: + itemlist.append( + Item(channel=item.channel, contentSerieName=item.contentSerieName, title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=item.url, action="lista", page=item.page + 1)) + + tmdb.set_infoLabels(itemlist) + return itemlist + +def peliculas(item): + logger.info() + + itemlist = [] + + data = httptools.downloadpage(item.url).data + data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + patron = '
(.+?)<\/span>' + matches = scrapertools.find_multiple_matches(data, patron) + # Paginacion + num_items_x_pagina = 30 + min = item.page * num_items_x_pagina + min=min-item.page + max = min + num_items_x_pagina - 1 + b=0 + for scrapedplot,scrapedthumbnail, scrapedtitle, scrapedyear, scrapedurl in matches[min:max]: + b=b+1 + url = host + scrapedurl + thumbnail = host +scrapedthumbnail + context = renumbertools.context(item) + context2 = autoplay.context + context.extend(context2) + itemlist.append(item.clone(title=scrapedtitle+"-"+scrapedyear, url=url, action="findvideos", thumbnail=thumbnail, plot=scrapedplot, + show=scrapedtitle,contentSerieName=scrapedtitle,context=context)) + if b<29: + pass + else: + itemlist.append( + Item(channel=item.channel, contentSerieName=item.contentSerieName, title="[COLOR cyan]Página Siguiente >>[/COLOR]", url=item.url, action="peliculas", page=item.page + 1)) + + tmdb.set_infoLabels(itemlist) + return itemlist + +def episodios(item): + logger.info() + + itemlist = [] + data = httptools.downloadpage(item.url).data + # obtener el numero total de episodios + total_episode = 0 + + patron_caps = '
  • (.*?) - (.*?)<\/a><\/li>' + matches = scrapertools.find_multiple_matches(data, patron_caps) + patron_info = '.+?

    ([^"]+)<\/h1>

    (.+?)<\/p>' + scrapedthumbnail, show, scrapedplot = scrapertools.find_single_match(data, patron_info) + scrapedthumbnail = host + scrapedthumbnail + + for link, cap, name in matches: + + title = "" + pat = "$%&" + # varios episodios en un enlace + if len(name.split(pat)) > 1: + i = 0 + for pos in name.split(pat): + i = i + 1 + total_episode += 1 + season, episode = renumbertools.numbered_for_tratk(item.channel, item.contentSerieName, 1, total_episode) + if len(name.split(pat)) == i: + title += "%sx%s " % (season, str(episode).zfill(2)) + else: + title += "%sx%s_" % (season, str(episode).zfill(2)) + else: + total_episode += 1 + season, episode = renumbertools.numbered_for_tratk(item.channel,item.contentSerieName, 1, total_episode) + + title += "%sx%s " % (season, str(episode).zfill(2)) + + url = host + "/" + link + if "DISPONIBLE" in name: + title += "No Disponible aún" + else: + title += name + itemlist.append( + Item(channel=item.channel, action="findvideos", title=title, url=url, show=show, plot=scrapedplot, + thumbnail=scrapedthumbnail)) + + if config.get_videolibrary_support() and len(itemlist) > 0: + itemlist.append(Item(channel=item.channel, title="[COLOR yellow]Añadir esta serie a la videoteca[/COLOR]", url=item.url, + action="add_serie_to_library", extra="episodios", show=show)) + + return itemlist + +def findvideos(item): + import base64 + logger.info() + itemlist = [] + data = httptools.downloadpage(item.url).data + _sl = scrapertools.find_single_match(data, 'var abi = ([^;]+);') + sl = eval(_sl) + buttons = scrapertools.find_multiple_matches(data,'class="bsel" sl="(.+?)"')#[0,1,2,3,4] + for ids in buttons: + id = int(ids) + url_end = golink(id,sl) + new_url = "https://abtoon.net/" + "embed/" + sl[0] + "/" + sl[1] + "/" + str(id) + "/" + sl[2] + url_end + data_new = httptools.downloadpage(new_url).data + data_new = re.sub(r"\n|\r|\t|\s{2}| ", "", data_new) + logger.info("asdasdasdcc"+data_new) + valor1, valor2 = scrapertools.find_single_match(data_new, 'var x0x = \["[^"]*", "([^"]+)", "[^"]*", "[^"]*", "([^"]+)"\];') + try: + url = base64.b64decode(gktools.transforma_gsv(valor2, base64.b64decode(valor1))) + if 'download' in url: + url = url.replace('download', 'preview') + title = '%s' + itemlist.append(Item(channel=item.channel, title=title, url=url, action='play', language='latino', + infoLabels=item.infoLabels)) + except Exception as e: + logger.info(e) + itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % i.server.capitalize()) + # Requerido para FilterTools + itemlist = filtertools.get_links(itemlist, item, list_language) + # Requerido para AutoPlay + autoplay.start(itemlist, item) + + return itemlist + +def golink(ida,sl): + a=ida + b=[3,10,5,22,31] + c=1 + d="" + e=sl[2] + for i in range(len(b)): + d=d+substr(e,b[i]+a,c) + return d + +def substr(st,a,b): + return st[a:a+b] \ No newline at end of file From 8d77b4d08081f00efcb4beb12fabd621ce42cf3f Mon Sep 17 00:00:00 2001 From: DiegoT Date: Tue, 29 Jan 2019 00:33:34 +0000 Subject: [PATCH 03/12] thumbnail for submityouflicks is fixed --- plugin.video.alfa/channels/submityouflicks.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/submityouflicks.py b/plugin.video.alfa/channels/submityouflicks.py index a329f349..a66d78ff 100755 --- a/plugin.video.alfa/channels/submityouflicks.py +++ b/plugin.video.alfa/channels/submityouflicks.py @@ -42,7 +42,7 @@ def videos(item): patron += '

    Date: Tue, 29 Jan 2019 10:32:29 -0500 Subject: [PATCH 04/12] Arreglo de Renumbertools --- plugin.video.alfa/channels/animeflv.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugin.video.alfa/channels/animeflv.py b/plugin.video.alfa/channels/animeflv.py index 9752478b..e20e66e6 100644 --- a/plugin.video.alfa/channels/animeflv.py +++ b/plugin.video.alfa/channels/animeflv.py @@ -192,7 +192,9 @@ def episodios(item): episodes = eval(scrapertools.find_single_match(data, 'var episodes = (.*?);')) for episode in episodes: url = '%s/ver/%s/%s-%s' % (HOST, episode[1], info[2], episode[0]) - title = '1x%s Episodio %s' % (episode[0], episode[0]) + season, episodeRenumber = renumbertools.numbered_for_tratk(item.channel, item.contentSerieName, 1, episode[0]) + #title = '1x%s Episodio %s' % (episode[0], episode[0]) + title = '%sx%s Episodio %s' % (season, episodeRenumber, episodeRenumber) itemlist.append(item.clone(title=title, url=url, action='findvideos', show=info[1])) itemlist = itemlist[::-1] if config.get_videolibrary_support() and len(itemlist) > 0: From c8fdfd00ffb1517cb9c439b45cd1642ef80f1199 Mon Sep 17 00:00:00 2001 From: danielr460 Date: Tue, 29 Jan 2019 11:11:29 -0500 Subject: [PATCH 05/12] SeriesLan: Agregado Buscar --- plugin.video.alfa/channels/serieslan.py | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/plugin.video.alfa/channels/serieslan.py b/plugin.video.alfa/channels/serieslan.py index 7fba9058..036adc35 100644 --- a/plugin.video.alfa/channels/serieslan.py +++ b/plugin.video.alfa/channels/serieslan.py @@ -37,10 +37,43 @@ def mainlist(item): Item(channel=item.channel, action="lista", title="Live Action", contentSerieName="Live Action", url=host+"/liveaction", thumbnail=thumb_series, page=0)) #itemlist.append( # Item(channel=item.channel, action="peliculas", title="Películas", contentSerieName="Películas", url=host+"/peliculas", thumbnail=thumb_series, page=0)) + itemlist.append(Item(channel=item.channel, action="search", title="Buscar", + thumbnail=thumb_series)) itemlist = renumbertools.show_option(item.channel, itemlist) autoplay.show_option(item.channel, itemlist) return itemlist +def search(item, texto): + logger.info() + #texto = texto.replace(" ", "+") + item.url = host +"/buscar.php" + item.texto = texto + if texto != '': + return sub_search(item) + else: + return [] + +def sub_search(item): + logger.info() + itemlist = [] + post = "k=" + item.texto + results = httptools.downloadpage(item.url, post=post).data + results = eval(results) + logger.info(results) + for result in results: + scrapedthumbnail = host + "/tb/" + result[0] + ".jpg" + scrapedtitle = result[1].decode('unicode_escape') + logger.info(scrapedtitle) + scrapedurl = host + "/" + result[2] + #scrapedyear = result[3] + itemlist.append(item.clone(action = "episodios", + title = scrapedtitle, + thumbnail = scrapedthumbnail, + url = scrapedurl, + contentSerieName = scrapedtitle + )) + tmdb.set_infoLabels(itemlist, seekTmdb=True) + return itemlist def lista(item): logger.info() From 687b505386d47a5eef44781eaee2cf820cd6f642 Mon Sep 17 00:00:00 2001 From: Daniel Rincon Date: Tue, 29 Jan 2019 18:31:47 -0500 Subject: [PATCH 06/12] Serieslan: Eliminado codigo innesesario --- plugin.video.alfa/channels/serieslan.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugin.video.alfa/channels/serieslan.py b/plugin.video.alfa/channels/serieslan.py index 036adc35..38612acd 100644 --- a/plugin.video.alfa/channels/serieslan.py +++ b/plugin.video.alfa/channels/serieslan.py @@ -59,11 +59,9 @@ def sub_search(item): post = "k=" + item.texto results = httptools.downloadpage(item.url, post=post).data results = eval(results) - logger.info(results) for result in results: scrapedthumbnail = host + "/tb/" + result[0] + ".jpg" scrapedtitle = result[1].decode('unicode_escape') - logger.info(scrapedtitle) scrapedurl = host + "/" + result[2] #scrapedyear = result[3] itemlist.append(item.clone(action = "episodios", From 0d6df8b9d4c1c1d81262e44d3611c4e5e805a746 Mon Sep 17 00:00:00 2001 From: chivmalev Date: Wed, 30 Jan 2019 11:41:30 -0300 Subject: [PATCH 07/12] maxipelis24:mejoras --- plugin.video.alfa/channels/maxipelis24.json | 23 ++++++++++++++++---- plugin.video.alfa/channels/maxipelis24.py | 24 +++++++++++++-------- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/plugin.video.alfa/channels/maxipelis24.json b/plugin.video.alfa/channels/maxipelis24.json index 5c93a817..f967cbfc 100644 --- a/plugin.video.alfa/channels/maxipelis24.json +++ b/plugin.video.alfa/channels/maxipelis24.json @@ -1,12 +1,27 @@ { -"id": "maxipelis24", + "id": "maxipelis24", "name": "Maxipelis24", "active": true, "adult": false, - "language": ["lat"], - "thumbnail": "maxipelis24.png", - "banner": "", + "language": ["cast", "lat", "vose"], + "thumbnail": "hmaxipelis24.png", "categories": [ "movie" + ], + "settings": [ + { + "id": "filter_languages", + "type": "list", + "label": "Mostrar enlaces en idioma...", + "default": 0, + "enabled": true, + "visible": true, + "lvalues": [ + "No filtrar", + "Latino", + "CAST", + "VOSE" + ] + } ] } diff --git a/plugin.video.alfa/channels/maxipelis24.py b/plugin.video.alfa/channels/maxipelis24.py index 1f0a07f3..f0e71d21 100644 --- a/plugin.video.alfa/channels/maxipelis24.py +++ b/plugin.video.alfa/channels/maxipelis24.py @@ -14,7 +14,8 @@ from channelselector import get_thumb host = "https://maxipelis24.tv" -list_language = [] +IDIOMAS = {'Latino': 'Latino', 'Subtitulado': 'VOSE', 'Español': 'CAST'} +list_language = IDIOMAS.values() list_quality = [] list_servers = ['rapidvideo', 'vidoza', 'openload', 'streamango'] @@ -112,6 +113,12 @@ def findvideos(item): itemlist = [] data = httptools.downloadpage(item.url).data data = re.sub(r"\n|\r|\t|\s{2}| ", "", data) + data1= scrapertools.find_single_match(data,'
      .*?
    ') + patron = "li>.*?href=.*?>([^\s]+)" + matches1 = re.compile(patron, re.DOTALL).findall(data1) + for lang in matches1: + idioma = lang + patron = '

  • ') + patron = ' ') + next_page = scrapertools.find_single_match(data, '
  • ') if next_page != '': itemlist.append(Item(channel=item.channel, action="list_all", title='Siguiente >>>', url=next_page, thumbnail='https://s16.postimg.cc/9okdu7hhx/siguiente.png')) @@ -160,13 +148,13 @@ def genres(item): itemlist = [] norep = [] data = get_source(item.url) - patron = ']+)>(.*?)' + patron = ']+)>(.*?).*?>(.*?)' matches = re.compile(patron, re.DOTALL).findall(data) - for scrapedurl, scrapedtitle in matches: + for scrapedurl, scrapedtitle, cantidad in matches: url = scrapedurl - title = scrapedtitle.capitalize() + title = "%s - %s" % (scrapedtitle.capitalize(), cantidad) itemactual = Item(channel=item.channel, action='list_all', title=title, url=url) if title not in norep: From 0e9bb8f7ef0c80e2f9c4ab382576e967c0cd7260 Mon Sep 17 00:00:00 2001 From: Intel1 Date: Wed, 30 Jan 2019 11:31:31 -0500 Subject: [PATCH 09/12] Actualizados MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - alldebrid: Corrección para obtener enlaces - fembed: Corrección para obtener enlaces --- .../servers/debriders/alldebrid.py | 26 +++++++------------ plugin.video.alfa/servers/fembed.py | 4 ++- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/plugin.video.alfa/servers/debriders/alldebrid.py b/plugin.video.alfa/servers/debriders/alldebrid.py index 650a0916..ecad8eb5 100755 --- a/plugin.video.alfa/servers/debriders/alldebrid.py +++ b/plugin.video.alfa/servers/debriders/alldebrid.py @@ -1,26 +1,23 @@ # -*- coding: utf-8 -*- -from core import jsontools +from core import httptools from core import scrapertools from platformcode import logger # Returns an array of possible video url's from the page_url def get_video_url(page_url, premium=False, user="", password="", video_password=""): - logger.info("(page_url='%s' , user='%s' , password='%s', video_password=%s)" % ( - page_url, user, "**************************"[0:len(password)], video_password)) + logger.info() page_url = correct_url(page_url) - - url = 'http://www.alldebrid.com/service.php?pseudo=%s&password=%s&link=%s&nb=0&json=true&pw=' % ( - user, password, page_url) - - data = jsontools.load(scrapertools.downloadpage(url)) - + dd1 = httptools.downloadpage("https://api.alldebrid.com/user/login?agent=mySoft&username=%s&password=%s" %(user, password)).data + token = scrapertools.find_single_match(dd1, 'token":"([^"]+)') + dd2 = httptools.downloadpage("https://api.alldebrid.com/link/unlock?agent=mySoft&token=%s&link=%s" %(token, page_url)).data + link = scrapertools.find_single_match(dd2, 'link":"([^"]+)') + link = link.replace("\\","") video_urls = [] - if data and data["link"] and not data["error"]: - extension = ".%s [alldebrid]" % data["filename"].rsplit(".", 1)[1] - video_urls.append([extension, data["link"]]) - + if link: + extension = "mp4 [alldebrid]" + video_urls.append([extension, link]) else: try: server_error = "Alldebrid: " + data["error"].decode("utf-8", "ignore") @@ -30,16 +27,13 @@ def get_video_url(page_url, premium=False, user="", password="", video_password= "Servidor no soportado o en mantenimiento") except: server_error = "Alldebrid: Error en el usuario/password o en la web" - video_urls.append([server_error, '']) - return video_urls def correct_url(url): if "userporn.com" in url: url = url.replace("/e/", "/video/") - if "putlocker" in url: url = url.replace("/embed/", "/file/") return url diff --git a/plugin.video.alfa/servers/fembed.py b/plugin.video.alfa/servers/fembed.py index 1b0bef72..9f7edbc2 100644 --- a/plugin.video.alfa/servers/fembed.py +++ b/plugin.video.alfa/servers/fembed.py @@ -20,5 +20,7 @@ def get_video_url(page_url, user="", password="", video_password=""): data = httptools.downloadpage(page_url, post={}).data data = jsontools.load(data) for videos in data["data"]: - video_urls.append([videos["label"] + " [fembed]", "https://www.fembed.com" + videos["file"]]) + v = videos["file"] + if not v.startswith("http"): v = "https://www.fembed.com" + videos["file"] + video_urls.append([videos["label"] + " [fembed]", v]) return video_urls From 29001df8a62a72c8b08c5169ec7745d1d3ba686b Mon Sep 17 00:00:00 2001 From: Alfa-beto <30815244+Alfa-beto@users.noreply.github.com> Date: Wed, 30 Jan 2019 13:40:53 -0300 Subject: [PATCH 10/12] Correcciones y novedades MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correcciones: - CineDeTodo: Correcciones en la detección de enlaces y agregada sección series - CinemaHD: Correcciones en la detección de enlaces y agregada sección series - PelisPlus: Corrección en la detección de enlaces - ZonaWorld: Correccion por cambio de estructura Novedades: - PelisRex: Nuevo canal de películas y series - ReyAnime: Nuevo canal de series y películas anime. --- plugin.video.alfa/channels/cinedetodo.py | 230 ++++++++++++---- plugin.video.alfa/channels/cinemahd.py | 216 +++++++++++---- plugin.video.alfa/channels/pelisplus.py | 2 +- plugin.video.alfa/channels/pelisrex.json | 67 +++++ plugin.video.alfa/channels/pelisrex.py | 321 +++++++++++++++++++++++ plugin.video.alfa/channels/reyanime.json | 53 ++++ plugin.video.alfa/channels/reyanime.py | 303 +++++++++++++++++++++ plugin.video.alfa/channels/zonaworld.py | 73 +++--- 8 files changed, 1118 insertions(+), 147 deletions(-) create mode 100644 plugin.video.alfa/channels/pelisrex.json create mode 100644 plugin.video.alfa/channels/pelisrex.py create mode 100644 plugin.video.alfa/channels/reyanime.json create mode 100644 plugin.video.alfa/channels/reyanime.py diff --git a/plugin.video.alfa/channels/cinedetodo.py b/plugin.video.alfa/channels/cinedetodo.py index 6ada755c..07af0a04 100644 --- a/plugin.video.alfa/channels/cinedetodo.py +++ b/plugin.video.alfa/channels/cinedetodo.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# -*- Channel CinemaHD -*- +# -*- Channel CineDeTodo -*- # -*- Created for Alfa-addon -*- # -*- By the Alfa Develop Group -*- @@ -16,39 +16,61 @@ from channels import autoplay from channels import filtertools -host = 'http://www.cinedetodo.com/' + +host = 'https://www.cinedetodo.net/' IDIOMAS = {'Latino': 'LAT'} list_language = IDIOMAS.values() list_quality = [] -list_servers = ['fastplay', 'rapidvideo', 'streamplay', 'flashx', 'streamito', 'streamango', 'vidoza'] +list_servers = ['gounlimited', 'rapidvideo', 'vshare', 'clipwatching', 'jawclowd', 'streamango'] def mainlist(item): logger.info() - autoplay.init(item.channel, list_servers, list_quality) itemlist = list() - itemlist.append(item.clone(title="Ultimas", action="list_all", url=host, thumbnail=get_thumb('last', auto=True))) - itemlist.append(item.clone(title="Generos", action="section", section='genre', - thumbnail=get_thumb('genres', auto=True))) - # itemlist.append(item.clone(title="Por Calidad", action="section", section='quality', - # thumbnail=get_thumb('quality', auto=True))) - itemlist.append(item.clone(title="Alfabetico", action="section", section='alpha', - thumbnail=get_thumb('alphabet', auto=True))) - itemlist.append(item.clone(title="Buscar", action="search", url=host+'?s=', - thumbnail=get_thumb('search', auto=True))) + + itemlist.append(Item(channel=item.channel, title="Películas", action="sub_menu", url=host, + thumbnail=get_thumb('last', auto=True), type='MovieList')) + + itemlist.append(Item(channel=item.channel, title="Series", action="sub_menu", url=host, + thumbnail=get_thumb('last', auto=True), type='Series')) + + 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 get_source(url): +def sub_menu(item): logger.info() - data = httptools.downloadpage(url).data - data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) + + itemlist = [] + + itemlist.append(Item(channel=item.channel, title="Ultimas", action="list_all", url=host, + thumbnail=get_thumb('last', auto=True), type=item.type)) + + itemlist.append(Item(channel=item.channel, title="Generos", action="section", section='genre', + thumbnail=get_thumb('genres', auto=True), type=item.type )) + + if item.type != 'Series': + itemlist.append(Item(channel=item.channel, title="Alfabetico", action="section", section='alpha', + thumbnail=get_thumb('alphabet', auto=True), type=item.type)) + + + + return itemlist + +def get_source(url, referer=None): + logger.info() + if referer is 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 @@ -57,60 +79,86 @@ def list_all(item): itemlist = [] data = get_source(item.url) - if item.section == 'alpha': - patron = '\d+.*?
    (.*?).*?' - patron += '(\d{4})' + full_data = data + if item.section != '': + data = scrapertools.find_single_match(data, 'class="MovieList NoLmtxt(.*?)') else: - patron = '
    .*?.*?'.*?class="MovieList NoLmtxt(.*?)' % item.type) + + if item.section == 'alpha': + patron = '\d+.*?') + url_next_page = scrapertools.find_single_match(full_data,'') if url_next_page: - itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, action='list_all')) + itemlist.append(Item(channel=item.channel, title="Siguiente >>", url=url_next_page, action='list_all', + type=item.type)) return itemlist def section(item): logger.info() itemlist = [] - data = get_source(host) + if item.type == 'Series': + url = host + '?tr_post_type=2' + else: + url = host + '?tr_post_type=1' + data = get_source(url) action = 'list_all' - if item.section == 'quality': - patron = 'menu-item-object-category.*?menu-item-\d+>(.*?)<\/a>' - elif item.section == 'genre': - patron = '(.*?)' - elif item.section == 'year': - patron = 'custom menu-item-15\d+>(\d{4})<\/a><\/li>' + + + if item.section == 'genre': + patron = '(.*?)' elif item.section == 'alpha': - patron = '
  • (.*?)' + patron = '
  • (.*?)' action = 'list_all' + matches = re.compile(patron, re.DOTALL).findall(data) for data_one, data_two in matches: @@ -118,38 +166,104 @@ def section(item): url = data_one title = data_two if title != 'Ver más': - new_item = Item(channel=item.channel, title= title, url=url, action=action, section=item.section) + if item.type == 'Series': + url =url + '?tr_post_type=2' + else: + url = url + '?tr_post_type=1' + if 'serie'in title.lower(): + continue + new_item = Item(channel=item.channel, title= title, url=url, action=action, section=item.section, + type=item.type) itemlist.append(new_item) return itemlist +def seasons(item): + logger.info() + + itemlist=[] + + data=get_source(item.url) + patron='Temporada (\d+)' + matches = re.compile(patron, re.DOTALL).findall(data) + + infoLabels = item.infoLabels + for season in matches: + season = season.lower().replace('temporada','') + infoLabels['season']=season + title = 'Temporada %s' % season + itemlist.append(Item(channel=item.channel, title=title, url=item.url, action='episodesxseasons', + infoLabels=infoLabels)) + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + if config.get_videolibrary_support() and len(itemlist) > 0: + 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", contentSerieName=item.contentSerieName)) + + return itemlist + +def episodios(item): + logger.info() + itemlist = [] + templist = seasons(item) + for tempitem in templist: + itemlist += episodesxseasons(tempitem) + + return itemlist + +def episodesxseasons(item): + logger.info() + + itemlist = [] + + full_data=get_source(item.url) + data = scrapertools.find_single_match(full_data, 'Temporada \d+.*?') + patron='(\d+)<.*?([^<]+)<' + matches = re.compile(patron, re.DOTALL).findall(data) + + infoLabels = item.infoLabels + + for scrapedepisode, scrapedurl, scrapedtitle in matches: + + infoLabels['episode'] = scrapedepisode + url = scrapedurl + title = '%sx%s - %s' % (infoLabels['season'], infoLabels['episode'], scrapedtitle) + + itemlist.append(Item(channel=item.channel, title= title, url=url, action='findvideos', infoLabels=infoLabels)) + + tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) + + return itemlist + + + def findvideos(item): logger.info() itemlist = [] data = get_source(item.url) data = scrapertools.decodeHtmlentities(data) - - patron = 'id=(Opt\d+)>.*?src=(.*?) frameborder.*?' + patron = 'id="(Opt\d+)">.*?src="([^"]+)" frameborder.*?' matches = re.compile(patron, re.DOTALL).findall(data) for option, scrapedurl in matches: scrapedurl = scrapedurl.replace('"','').replace('&','&') data_video = get_source(scrapedurl) - url = scrapertools.find_single_match(data_video, '
    .*?src=(.*?) frameborder') - opt_data = scrapertools.find_single_match(data,'%s>.*?.*?(.*?)'%option).split('-') + url = scrapertools.find_single_match(data_video, '
    .*?src="([^"]+)" frameborder') + opt_data = scrapertools.find_single_match(data,'"%s">.*?.*?(.*?)'%option).split('-') language = opt_data[0].strip() - language = language.replace('(','').replace(')','') + language = re.sub('\(|\)', '', language) quality = opt_data[1].strip() if url != '' and 'youtube' not in url: - itemlist.append(item.clone(title='%s', url=url, language=IDIOMAS[language], quality=quality, action='play')) + itemlist.append(Item(channel=item.channel, title='%s', url=url, language=IDIOMAS[language], quality=quality, + action='play', infoLabels=item.infoLabels)) elif 'youtube' in url: - trailer = item.clone(title='Trailer', url=url, action='play', server='youtube') + trailer = Item(channel=item.channel, title='Trailer', url=url, action='play', server='youtube') itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % '%s [%s] [%s]'%(i.server.capitalize(), i.language, i.quality)) - tmdb.set_infoLabels_itemlist(itemlist, True) try: itemlist.append(trailer) except: @@ -175,7 +289,7 @@ def search(item, texto): logger.info() texto = texto.replace(" ", "+") item.url = item.url + texto - + item.section = 'search' if texto != '': return list_all(item) else: @@ -190,11 +304,11 @@ def newest(categoria): if categoria in ['peliculas','latino']: item.url = host elif categoria == 'infantiles': - item.url = host+'/animacion' + item.url = host+'animacion/?tr_post_type=1' elif categoria == 'terror': - item.url = host+'/terror' - elif categoria == 'documentales': - item.url = host+'/documental' + item.url = host+'terror/?tr_post_type=1' + item.type = 'MovieList' + item.section = 'search' itemlist = list_all(item) if itemlist[-1].title == 'Siguiente >>': itemlist.pop() diff --git a/plugin.video.alfa/channels/cinemahd.py b/plugin.video.alfa/channels/cinemahd.py index 9bc60787..775ba87e 100644 --- a/plugin.video.alfa/channels/cinemahd.py +++ b/plugin.video.alfa/channels/cinemahd.py @@ -16,41 +16,61 @@ from channels import autoplay from channels import filtertools -host = 'http://www.cinemahd.co/' + +host = 'https://www.cinemahd.co/' IDIOMAS = {'Latino': 'LAT'} list_language = IDIOMAS.values() list_quality = [] -list_servers = ['fastplay', 'rapidvideo', 'streamplay', 'flashx', 'streamito', 'streamango', 'vidoza'] +list_servers = ['gounlimited', 'rapidvideo', 'vshare', 'clipwatching', 'jawclowd', 'streamango'] def mainlist(item): logger.info() - autoplay.init(item.channel, list_servers, list_quality) itemlist = list() - itemlist.append(Item(channel=item.channel, title="Ultimas", action="list_all", url=host, thumbnail=get_thumb('last', auto=True))) - itemlist.append(Item(channel=item.channel, title="Generos", action="section", section='genre', - thumbnail=get_thumb('genres', auto=True))) - itemlist.append(Item(channel=item.channel, title="Por Calidad", action="section", section='quality', - thumbnail=get_thumb('quality', auto=True))) - itemlist.append(Item(channel=item.channel, title="Por Año", action="section", section='year', - thumbnail=get_thumb('year', auto=True))) - itemlist.append(Item(channel=item.channel, title="Alfabetico", action="section", section='alpha', - thumbnail=get_thumb('alphabet', auto=True))) - itemlist.append(Item(channel=item.channel, title="Buscar", action="search", url=host+'?s=', - thumbnail=get_thumb('search', auto=True))) + + itemlist.append(Item(channel=item.channel, title="Películas", action="sub_menu", url=host, + thumbnail=get_thumb('last', auto=True), type='MovieList')) + + itemlist.append(Item(channel=item.channel, title="Series", action="sub_menu", url=host, + thumbnail=get_thumb('last', auto=True), type='Series')) + + 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 get_source(url): +def sub_menu(item): logger.info() - data = httptools.downloadpage(url).data - data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) + + itemlist = [] + + itemlist.append(Item(channel=item.channel, title="Ultimas", action="list_all", url=host, + thumbnail=get_thumb('last', auto=True), type=item.type)) + + itemlist.append(Item(channel=item.channel, title="Generos", action="section", section='genre', + thumbnail=get_thumb('genres', auto=True), type=item.type )) + + if item.type != 'Series': + itemlist.append(Item(channel=item.channel, title="Alfabetico", action="section", section='alpha', + thumbnail=get_thumb('alphabet', auto=True), type=item.type)) + + + + return itemlist + +def get_source(url, referer=None): + logger.info() + if referer is 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 @@ -60,14 +80,18 @@ def list_all(item): data = get_source(item.url) full_data = data - data = scrapertools.find_single_match(data, '
      ') + if item.section != '': + data = scrapertools.find_single_match(data, 'class="MovieList NoLmtxt(.*?)
    ') + else: + data = scrapertools.find_single_match(data, '