From a17dfbf7324853c435977e745900f7b9e1f22e6d Mon Sep 17 00:00:00 2001 From: Alfa-beto <30815244+Alfa-beto@users.noreply.github.com> Date: Wed, 13 Feb 2019 12:01:48 -0300 Subject: [PATCH 1/2] Correcciones y novedades MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Correcciones: - DoomTv: Corrección por cambio de estructura - FanPelis: Corrección por cambio de estructura - Goovie: Corrección por cambio de estructura - InkaPelis: Corrección sección novedades - PeliculonHD: Corrección por cambio de dominio -PelisFox: Corrección en la búsqueda -PelisGratis: Mejora en el código - RetroseriesTV: Corrección por cambio de estructura Novedades: - Legalmente Gratis (clasicos): Nuevos canal --- plugin.video.alfa/channels/doomtv.py | 39 +++-- plugin.video.alfa/channels/fanpelis.py | 2 +- plugin.video.alfa/channels/goovie.py | 78 +++++++--- plugin.video.alfa/channels/inkapelis.py | 3 +- .../channels/legalmentegratis.json | 37 +++++ .../channels/legalmentegratis.py | 139 ++++++++++++++++++ plugin.video.alfa/channels/peliculonhd.py | 13 +- plugin.video.alfa/channels/pelisfox.py | 33 +++-- plugin.video.alfa/channels/pelisgratis.py | 42 ++++-- plugin.video.alfa/channels/retroseriestv.py | 7 +- 10 files changed, 323 insertions(+), 70 deletions(-) create mode 100644 plugin.video.alfa/channels/legalmentegratis.json create mode 100644 plugin.video.alfa/channels/legalmentegratis.py diff --git a/plugin.video.alfa/channels/doomtv.py b/plugin.video.alfa/channels/doomtv.py index d8c4907d..dff3215f 100644 --- a/plugin.video.alfa/channels/doomtv.py +++ b/plugin.video.alfa/channels/doomtv.py @@ -68,16 +68,25 @@ def mainlist(item): 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) + logger.debug(data) + return data + def lista(item): logger.info() itemlist = [] next = False - data = httptools.downloadpage(item.url).data - data = re.sub(r'"|\n|\r|\t| |
|\s{2,}', "", data) - patron = 'movie-id=.*?href=(.*?) data-url.*?quality>(.*?)' - patron += '(.*?)<\/h2>.*?

(.*?)<\/p>' + data = get_source(item.url) + patron = 'movie-id=.*?href="([^"]+)" data-url.*?quality">([^<]+)<.*?img data-original="([^"]+)" class.*?' + patron += '

([^<]+)<\/h2>.*?

([^<]+)<\/p>' matches = re.compile(patron, re.DOTALL).findall(data) @@ -89,7 +98,7 @@ def lista(item): for scrapedurl, quality, scrapedthumbnail, scrapedtitle, plot in matches[first:last]: - url = scrapedurl + url = 'http:'+scrapedurl thumbnail = scrapedthumbnail filtro_thumb = scrapedthumbnail.replace("https://image.tmdb.org/t/p/w185", "") filtro_list = {"poster_path": filtro_thumb.strip()} @@ -114,7 +123,7 @@ def lista(item): url_next_page = item.url first = last else: - url_next_page = scrapertools.find_single_match(data, "") + url_next_page = scrapertools.find_single_match(data, "

  • .*?class='page larger' href='([^']+)'") first = 0 if url_next_page: @@ -128,14 +137,14 @@ def seccion(item): itemlist = [] duplicado = [] - data = httptools.downloadpage(item.url).data - data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) - patron = 'menu-item-object-category menu-item-\d+>
    (.*?)<\/a><\/li>' + data = get_source(item.url) + + patron = 'menu-item-object-category menu-item-\d+">([^<]+)<\/a><\/li>' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle in matches: - url = scrapedurl + url = 'http:'+ scrapedurl title = scrapedtitle thumbnail = '' if url not in duplicado: @@ -163,7 +172,6 @@ def newest(categoria): logger.info() itemlist = [] item = Item() - # categoria='peliculas' try: if categoria in ['peliculas', 'latino']: item.url = host +'peliculas/page/1' @@ -186,14 +194,15 @@ def newest(categoria): def findvideos(item): logger.info() itemlist = [] - data = httptools.downloadpage(item.url).data - data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) - patron = 'id=(tab\d+)>
    <(?:iframe|script) src=(.*?)(?:scrolling|frameborder|><\/script>)' + data = get_source(item.url) + + patron = 'id="(tab\d+)">
    .*?src="([^"]+)"' matches = re.compile(patron, re.DOTALL).findall(data) for option, urls in matches: - + if 'http' not in urls: + urls = 'https:'+urls new_item = Item( channel=item.channel, url=urls, diff --git a/plugin.video.alfa/channels/fanpelis.py b/plugin.video.alfa/channels/fanpelis.py index ede3f2d6..5c5e9987 100644 --- a/plugin.video.alfa/channels/fanpelis.py +++ b/plugin.video.alfa/channels/fanpelis.py @@ -16,7 +16,7 @@ from core.item import Item from platformcode import config, logger from core import tmdb -host = "http://fanpelis.com/" +host = "https://fanpelis.com/" def mainlist(item): logger.info() diff --git a/plugin.video.alfa/channels/goovie.py b/plugin.video.alfa/channels/goovie.py index 84c89358..55cb88ef 100644 --- a/plugin.video.alfa/channels/goovie.py +++ b/plugin.video.alfa/channels/goovie.py @@ -44,6 +44,8 @@ def mainlist(item): thumbnail= get_thumb('movies', auto=True))) itemlist.append(Item(channel=item.channel, title='Series', action='sub_menu', type='series', thumbnail= get_thumb('tvshows', auto=True))) + itemlist.append(Item(channel=item.channel, title='Colecciones', action='list_collections', + url= host+'listas=populares', thumbnail=get_thumb('colections', auto=True))) itemlist.append( item.clone(title="Buscar", action="search", url=host + 'search?go=', thumbnail=get_thumb("search", auto=True), extra='movie')) @@ -66,10 +68,13 @@ def sub_menu(item): return itemlist -def get_source(url): +def get_source(url, referer=None): logger.info() - data = httptools.downloadpage(url).data - data = re.sub(r'"|\n|\r|\t| |
    |\s{2,}', "", data) + 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 @@ -93,7 +98,7 @@ def section(item): data = scrapertools.find_single_match(data, 'Generos.*?') elif 'Año' in item.title: data = scrapertools.find_single_match(data, 'Años.*?') - patron = "
  • " + patron = '
  • ' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedtitle in matches: @@ -112,8 +117,8 @@ def list_all(item): itemlist = [] data = get_source(item.url) - patron = '' + patron = '
  • ", 1)[1] + data2 = data.split("

    Últimas Películas Agregadas y Actualizadas

    ", 1)[1] + entradas = scrapertools.find_multiple_matches(data2, '
    (.*?)
    ') else: entradas = scrapertools.find_multiple_matches(data, '
    (.*?)
    ') diff --git a/plugin.video.alfa/channels/legalmentegratis.json b/plugin.video.alfa/channels/legalmentegratis.json new file mode 100644 index 00000000..91fa2762 --- /dev/null +++ b/plugin.video.alfa/channels/legalmentegratis.json @@ -0,0 +1,37 @@ +{ + "id": "legalmentegratis", + "name": "Legalmente Gratis (clasicos)", + "active": true, + "adult": false, + "language": ["cast"], + "thumbnail": "https://i.postimg.cc/NFGv0pN3/legalgratis.png", + "banner": "", + "version": 1, + "categories": [ + "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", + "CAST", + "VOSE" + ] + } + ] +} diff --git a/plugin.video.alfa/channels/legalmentegratis.py b/plugin.video.alfa/channels/legalmentegratis.py new file mode 100644 index 00000000..dfc1f863 --- /dev/null +++ b/plugin.video.alfa/channels/legalmentegratis.py @@ -0,0 +1,139 @@ +# -*- coding: utf-8 -*- +# -*- Channel Legalmente Gratis -*- +# -*- 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 = 'http://legalmentegratis.com/' + +IDIOMAS = {'español':'CAST', 'VOSE': 'VOSE'} +list_language = IDIOMAS.values() +list_quality = [] +list_servers = ['youtube'] + + +def mainlist(item): + logger.info() + + autoplay.init(item.channel, list_servers, list_quality) + + itemlist = list() + + itemlist.append(Item(channel=item.channel, title="Todas", action="list_all", url=host, + thumbnail=get_thumb('all', auto=True))) + + itemlist.append(Item(channel=item.channel, title="Generos", action="section", section='genre', + thumbnail=get_thumb('genres', auto=True))) + + autoplay.show_option(item.channel, itemlist) + + 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 + + +def list_all(item): + logger.info() + itemlist = [] + + data = get_source(item.url) + patron = '
    (.*?) (\(?\d{4}\)?)([^<]+)

    ' + matches = re.compile(patron, re.DOTALL).findall(data) + + for scrapedurl, scrapedthumbnail, scrapedtitle, year, scrapedplot in matches: + + url = scrapedurl + contentTitle = scrapedtitle + + year = re.sub(r'\(|\)','', year) + + title = '%s [%s]' % (contentTitle, year) + thumbnail = 'http:' + scrapedthumbnail + itemlist.append(Item(channel=item.channel, action='findvideos', + title=title, + url=url, + thumbnail=thumbnail, + contentTitle=contentTitle, + infoLabels={'year': year} + )) + tmdb.set_infoLabels_itemlist(itemlist, True) + + + itemlist = sorted(itemlist, key=lambda it: it.contentTitle) + # Paginación + + url_next_page = scrapertools.find_single_match(data, '
    ' + matches = re.compile(patron, re.DOTALL).findall(data) + + for url, title in matches: + new_item = Item(channel=item.channel, title=title, url=url, action=action, section=item.section) + itemlist.append(new_item) + + return itemlist + + +def findvideos(item): + logger.info() + itemlist = [] + data = get_source(item.url) + lang_data = scrapertools.find_single_match(data, '

    ') + if 'español' in lang_data: + language = 'español' + else: + language = 'VOSE' + url = scrapertools.find_single_match (data, '') + + + itemlist.append(Item(channel=item.channel, title='%s', action='play', url=url, + language=IDIOMAS[language], infoLabels=item.infoLabels)) + + itemlist = servertools.get_servers_itemlist(itemlist, lambda i: i.title % '%s' % i.server.capitalize()) + + # Requerido para FilterTools + itemlist = filtertools.get_links(itemlist, item, list_language) + # Requerido para AutoPlay + autoplay.start(itemlist, item) + if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': + itemlist.append(Item(channel=item.channel, title='[COLOR yellow]Añadir esta pelicula a la videoteca[/COLOR]', + url=item.url, action="add_pelicula_to_library", extra="findvideos", + contentTitle=item.contentTitle)) + return itemlist diff --git a/plugin.video.alfa/channels/peliculonhd.py b/plugin.video.alfa/channels/peliculonhd.py index e76f592a..86f400a7 100644 --- a/plugin.video.alfa/channels/peliculonhd.py +++ b/plugin.video.alfa/channels/peliculonhd.py @@ -39,7 +39,7 @@ list_servers = [ __comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'peliculonhd') __comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'peliculonhd') -host = 'https://peliculonhd.com/' +host = 'https://peliculonhd.tv/' def mainlist(item): logger.info() @@ -50,7 +50,7 @@ def mainlist(item): 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', + itemlist.append(Item(channel=item.channel, title='Series', url=host+'ver-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), @@ -65,7 +65,7 @@ def menu_movies(item): itemlist=[] - itemlist.append(Item(channel=item.channel, title='Todas', url=host + 'ver', action='list_all', + itemlist.append(Item(channel=item.channel, title='Todas', url=host + 'ver-pelicula', 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')) @@ -145,8 +145,8 @@ def list_all(item): title=title, url=url, thumbnail=thumbnail, - contentTitle=contentTitle, quality=quality, + contentTitle= contentTitle, type=item.type, infoLabels={'year':year})) @@ -221,7 +221,8 @@ def episodesxseasons(item): itemlist = [] data=get_source(item.url) - patron='class="numerando">%s - (\d+)
    .?([^<]+)<" % item.infoLabels['season'] matches = re.compile(patron, re.DOTALL).findall(data) infoLabels = item.infoLabels @@ -262,7 +263,7 @@ def findvideos(item): post = {'action': 'doo_player_ajax', 'post': id, 'nume': option, 'type':type} post = urllib.urlencode(post) - test_url = '%swp-admin/admin-ajax.php' % 'https://peliculonhd.com/' + test_url = '%swp-admin/admin-ajax.php' % host new_data = httptools.downloadpage(test_url, post=post, headers={'Referer':item.url}).data test_url = scrapertools.find_single_match(new_data, "src='([^']+)'") if 'xyz' in test_url: diff --git a/plugin.video.alfa/channels/pelisfox.py b/plugin.video.alfa/channels/pelisfox.py index c2cf1252..2eb55087 100644 --- a/plugin.video.alfa/channels/pelisfox.py +++ b/plugin.video.alfa/channels/pelisfox.py @@ -60,7 +60,7 @@ def mainlist(item): itemlist.append(item.clone(title="Buscar", action="search", - url=host + '/api/suggest?query=', + url=host + '/api/suggest/?query=', thumbnail=get_thumb('search', auto=True) )) @@ -185,31 +185,31 @@ def seccion(item): def busqueda(item): logger.info() itemlist = [] - headers = {'referer':host, 'X-Requested-With': 'XMLHttpRequest'} + headers = {'referer':host, 'X-Requested-With': 'XMLHttpRequest', + 'Accept': 'application/json, text/javascript, */*; q=0.01'} data = httptools.downloadpage(item.url, headers=headers).data dict_data = jsontools.load(data) - resultados = dict_data['suggest']['result'][0]['options'] + resultados = dict_data['data']['m'] for resultado in resultados: - if 'title' in resultado['_source']: - title = resultado['_source']['title'] - thumbnail = 'https://static.pelisfox.tv/static/movie' + '/' + resultado['_source']['cover'] - plot = resultado['_source']['sinopsis'] - url = host + resultado['_source']['url'] + '/' + title = resultado['title'] + thumbnail = 'https://static.pelisfox.tv/' + '/' + resultado['cover'] + plot = resultado['synopsis'] + url = host + resultado['slug'] + '/' - itemlist.append(item.clone(title=title, - thumbnail=thumbnail, - plot=plot, - url=url, - action='findvideos', - contentTitle=title - )) + itemlist.append(item.clone(title=title, + thumbnail=thumbnail, + plot=plot, + url=url, + action='findvideos', + contentTitle=title + )) return itemlist def search(item, texto): logger.info() - texto = texto.replace(" ", "+") + texto = texto.replace(" ", "%20") item.url = item.url + texto if texto != '': @@ -224,6 +224,7 @@ def findvideos(item): data = httptools.downloadpage(item.url).data data = re.sub(r'\n|\r|\t| |
    |\s{2,}', "", data) links = scrapertools.find_single_match(data, '