# -*- coding: utf-8 -*- # -*- Channel PoseidonHD -*- # -*- 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 jsontools from core import scrapertools from core import servertools from core import tmdb 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 = ['HD', 'SD', 'CAM'] list_servers = [ 'directo', 'gvideo', 'openload', 'streamango', 'rapidvideo' ] __comprueba_enlaces__ = config.get_setting('comprueba_enlaces', 'poseidonhd') __comprueba_enlaces_num__ = config.get_setting('comprueba_enlaces_num', 'poseidonhd') host = 'https://poseidonhd.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+'tvshows', action='list_all', type='tvshows', 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 + 'movies', action='list_all', thumbnail=get_thumb('all', auto=True), type='movies')) itemlist.append(Item(channel=item.channel, title='Genero', action='section', thumbnail=get_thumb('genres', auto=True), type='movies')) itemlist.append(Item(channel=item.channel, title='Por Año', action='section', thumbnail=get_thumb('year', auto=True), type='movies')) 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 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=[] data = get_source(host) if 'Genero' in item.title: patron = '
  • (.*?)/i>' elif 'Año' in item.title: patron = '
  • (.*?)' elif 'Calidad' in item.title: patron = 'menu-item-object-dtquality menu-item-\d+>(.*?)' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle in matches: title = scrapedtitle plot='' if 'Genero' in item.title: quantity = scrapertools.find_single_match(scrapedtitle,' (.*?)<') title = scrapertools.find_single_match(scrapedtitle,'(.*?)
    (.*?).*?quality>(.*?)' patron += '<\/div>.*?<\/h3>(.*?)<\/span><\/div>.*?flags(.*?)metadata' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedthumbnail, scrapedtitle, quality, scrapedurl, year, lang_data in matches: title = '%s [%s] [%s]' % (scrapedtitle, year, quality) contentTitle = scrapedtitle thumbnail = scrapedthumbnail url = scrapedurl language = get_language(lang_data) itemlist.append(item.clone(action='findvideos', title=title, url=url, thumbnail=thumbnail, contentTitle=contentTitle, language=language, quality=quality, infoLabels={'year':year})) elif item.type == 'tvshows': patron = '
    (.*?)<' % 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', infoLabels=infoLabels)) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) return itemlist def findvideos(item): logger.info() itemlist = [] data = get_source(item.url) selector_url = scrapertools.find_multiple_matches(data, 'class=metaframe rptss src=(.*?) frameborder=0 ') for lang in selector_url: data = get_source('https:'+lang) urls = scrapertools.find_multiple_matches(data, 'data-playerid=(.*?)>') subs = '' lang = scrapertools.find_single_match(lang, 'lang=([^+]+)') language = IDIOMAS[lang] if item.contentType == 'episode': quality = 'SD' else: quality = item.quality for url in urls: final_url = httptools.downloadpage('https:'+url).data if language == 'VOSE': sub = scrapertools.find_single_match(url, 'sub=(.*?)&') subs = 'https:%s' % sub if 'index' in url: try: file_id = scrapertools.find_single_match(url, 'file=(.*?)&') post = {'link': file_id} post = urllib.urlencode(post) hidden_url = 'https://streamango.poseidonhd.net/repro/plugins/gkpluginsphp.php' data_url = httptools.downloadpage(hidden_url, post=post).data dict_vip_url = jsontools.load(data_url) url = dict_vip_url['link'] except: pass else: try: if 'openload' in url: file_id = scrapertools.find_single_match(url, 'h=(\w+)') post = {'h': file_id} post = urllib.urlencode(post) hidden_url = 'https://streamango.poseidonhd.net/repro/openload/api.php' data_url = httptools.downloadpage(hidden_url, post=post, follow_redirects=False).data json_data = jsontools.load(data_url) url = json_data['url'] else: file_id = scrapertools.find_single_match(url, 'url=(.*?)&') post = {'url': file_id} post = urllib.urlencode(post) hidden_url = 'https://streamango.poseidonhd.net/repro/r.php' data_url = httptools.downloadpage(hidden_url, post=post, follow_redirects=False) url = data_url.headers['location'] except: pass itemlist.append(item.clone(title = '[%s] [%s]', url=url, action='play', subtitle=subs, language=language, quality=quality, infoLabels=item.infoLabels)) itemlist = servertools.get_servers_itemlist(itemlist, lambda x: x.title % (x.server.capitalize(), x.language)) # Requerido para Filtrar enlaces if __comprueba_enlaces__: itemlist = servertools.check_list_links(itemlist, __comprueba_enlaces_num__) # Requerido para FilterTools itemlist = filtertools.get_links(itemlist, item, list_language) # Requerido para AutoPlay autoplay.start(itemlist, item) itemlist = sorted(itemlist, key=lambda it: it.language) if item.contentType != 'episode': 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 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 = '
    .*?(.*?).*?meta.*?year>(.*?)<(.*?)

    (.*?)

    ' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedthumb, scrapedtitle, 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, 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 + 'genre/animacion/' elif categoria == 'terror': item.url = host + 'genre/terror/' 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