# -*- 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 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 = '
\s?([^.*?' patron += '"quality">([^<]+)<\/div>\s?.*?.*?([^<]+)
\s?') url_next_page = 'https:'+ url_next_page if url_next_page: itemlist.append(item.clone(title="Siguiente >>", url=url_next_page, type=item.type, action='list_all')) 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 and item.extra != 'episodios': 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 = [] data=get_source(item.url) patron='class="numerando">%s - (\d+)
.?([^<]+)<' % item.infoLabels['season'] 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', type='tv', infoLabels=infoLabels)) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) return itemlist def findvideos(item): logger.info() from lib import generictools import urllib itemlist = [] data = get_source(item.url) data = data.replace("'",'"') patron = 'data-type="([^"]+)" data-post="(\d+)" data-nume="(\d+).*?img src=\"([^"]+)\"' matches = re.compile(patron, re.DOTALL).findall(data) for type, id, option, lang in matches: lang = scrapertools.find_single_match(lang, '.*?/flags/(.*?).png') quality = '' if lang not in IDIOMAS: lang = 'en' if not config.get_setting('unify'): title = ' [%s]' % IDIOMAS[lang] else: title = '' 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/' 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: new_data = get_source(test_url, item.url) patron = "addiframe\('([^']+)'" matches = scrapertools.find_multiple_matches(new_data, patron) for test_url in matches: if 'play.php' in test_url: new_data = get_source(test_url) enc_data = scrapertools.find_single_match(new_data, '(eval.*?) 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 def search(item, texto): logger.info() texto = texto.replace(" ", "+") item.url = item.url + texto if texto != '': return search_results(item) else: return [] def search_results(item): logger.info() itemlist=[] data=get_source(item.url) patron = '