# -*- coding: utf-8 -*- import re 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 tgenero = {"Comedia": "https://s7.postimg.org/ne9g9zgwb/comedia.png", "Suspense": "https://s13.postimg.org/wmw6vl1cn/suspenso.png", "Drama": "https://s16.postimg.org/94sia332d/drama.png", "Acción": "https://s3.postimg.org/y6o9puflv/accion.png", "Aventura": "https://s10.postimg.org/6su40czih/aventura.png", "Romance": "https://s15.postimg.org/fb5j8cl63/romance.png", "Animación": "https://s13.postimg.org/5on877l87/animacion.png", "Ciencia ficción": "https://s9.postimg.org/diu70s7j3/cienciaficcion.png", "Terror": "https://s7.postimg.org/yi0gij3gb/terror.png", "Documental": "https://s16.postimg.org/7xjj4bmol/documental.png", "Música": "https://s29.postimg.org/bbxmdh9c7/musical.png", "Fantasía": "https://s13.postimg.org/65ylohgvb/fantasia.png", "Misterio": "https://s1.postimg.org/w7fdgf2vj/misterio.png", "Crimen": "https://s4.postimg.org/6z27zhirx/crimen.png", "Familia": "https://s7.postimg.org/6s7vdhqrf/familiar.png", "Guerra": "https://s4.postimg.org/n1h2jp2jh/guerra.png", "Western": "https://s23.postimg.org/lzyfbjzhn/western.png", "Historia": "https://s15.postimg.org/fmc050h1n/historia.png" } thumbletras = {'#': 'https://s32.postimg.org/drojt686d/image.png', 'a': 'https://s32.postimg.org/llp5ekfz9/image.png', 'b': 'https://s32.postimg.org/y1qgm1yp1/image.png', 'c': 'https://s32.postimg.org/vlon87gmd/image.png', 'd': 'https://s32.postimg.org/3zlvnix9h/image.png', 'e': 'https://s32.postimg.org/bgv32qmsl/image.png', 'f': 'https://s32.postimg.org/y6u7vq605/image.png', 'g': 'https://s32.postimg.org/9237ib6jp/image.png', 'h': 'https://s32.postimg.org/812yt6pk5/image.png', 'i': 'https://s32.postimg.org/6nbbxvqat/image.png', 'j': 'https://s32.postimg.org/axpztgvdx/image.png', 'k': 'https://s32.postimg.org/976yrzdut/image.png', 'l': 'https://s32.postimg.org/fmal2e9yd/image.png', 'm': 'https://s32.postimg.org/m19lz2go5/image.png', 'n': 'https://s32.postimg.org/b2ycgvs2t/image.png', 'o': 'https://s32.postimg.org/c6igsucpx/image.png', 'p': 'https://s32.postimg.org/jnro82291/image.png', 'q': 'https://s32.postimg.org/ve5lpfv1h/image.png', 'r': 'https://s32.postimg.org/nmovqvqw5/image.png', 's': 'https://s32.postimg.org/zd2t89jol/image.png', 't': 'https://s32.postimg.org/wk9lo8jc5/image.png', 'u': 'https://s32.postimg.org/w8s5bh2w5/image.png', 'v': 'https://s32.postimg.org/e7dlrey91/image.png', 'w': 'https://s32.postimg.org/fnp49k15x/image.png', 'x': 'https://s32.postimg.org/dkep1w1d1/image.png', 'y': 'https://s32.postimg.org/um7j3zg85/image.png', 'z': 'https://s32.postimg.org/jb4vfm9d1/image.png' } audio = {'Latino': '[COLOR limegreen]LATINO[/COLOR]', 'Español': '[COLOR yellow]ESPAÑOL[/COLOR]', 'Sub Español': '[COLOR red]SUB ESPAÑOL[/COLOR]'} host = 'http://pelisgratis.tv/' def mainlist(item): logger.info() itemlist = [] itemlist.append(item.clone(title="Estrenos", action="lista", thumbnail='https://s21.postimg.org/fy69wzm93/estrenos.png', fanart='https://s21.postimg.org/fy69wzm93/estrenos.png', url=host + 'estrenos' )) itemlist.append(item.clone(title="Todas", action="lista", thumbnail='https://s18.postimg.org/fwvaeo6qh/todas.png', fanart='https://s18.postimg.org/fwvaeo6qh/todas.png', url=host )) itemlist.append(item.clone(title="Generos", action="seccion", url=host, thumbnail='https://s3.postimg.org/5s9jg2wtf/generos.png', fanart='https://s3.postimg.org/5s9jg2wtf/generos.png', extra='generos' )) itemlist.append(item.clone(title="Alfabetico", action="seccion", url=host, thumbnail='https://s17.postimg.org/fwi1y99en/a-z.png', fanart='https://s17.postimg.org/fwi1y99en/a-z.png', extra='a-z' )) itemlist.append(item.clone(title="Mas Vistas", action="lista", thumbnail='https://s9.postimg.org/wmhzu9d7z/vistas.png', fanart='https://s9.postimg.org/wmhzu9d7z/vistas.png', url=host + 'peliculas-mas-vistas' )) itemlist.append(item.clone(title="Mas Votadas", action="lista", thumbnail='https://s7.postimg.org/9kg1nthzf/votadas.png', fanart='https://s7.postimg.org/9kg1nthzf/votadas.png', url=host + 'peliculas-mas-votadas' )) itemlist.append(item.clone(title="Buscar", action="search", url=host + '?s=', thumbnail='https://s30.postimg.org/pei7txpa9/buscar.png', fanart='https://s30.postimg.org/pei7txpa9/buscar.png' )) return itemlist def get_source(url): logger.info() data = httptools.downloadpage(url, add_referer=True).data data = re.sub(r'"|\n|\r|\t| |
|\s{2,}', "", data) return data def lista(item): logger.info() itemlist = [] data = get_source(item.url) patron = 'class=(?:MvTbImg|TPostMv).*?href=(.*?)\/(?:>| class).*?src=(.*?) class=attachment.*?' patron += '(?:strong|class=Title)>(.*?)<.*?(?:(.*?)<.*?class=Qlty>(.*?)<.*?' patron += '(?:(.*?)<(?:\/td|\/p)>' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedthumbnail, scrapedtitle, scrapedyear, scrapedquality, scrapedplot in matches: url = scrapedurl thumbnail = scrapedthumbnail plot = scrapedplot quality = scrapedquality contentTitle = scrapedtitle title = contentTitle + ' (%s)' % quality year = scrapedyear itemlist.append(item.clone(action='findvideos', title=title, url=url, thumbnail=thumbnail, plot=plot, contentTitle=contentTitle, quality=quality, infoLabels={'year': year} )) tmdb.set_infoLabels_itemlist(itemlist, seekTmdb=True) # Paginacion if itemlist != []: actual_page_url = item.url next_page = scrapertools.find_single_match(data, '
  • (.*?)<\/li>' elif item.extra == 'a-z': patron = '
  • (\w|#)<\/a><\/li>' matches = re.compile(patron, re.DOTALL).findall(data) for scrapedurl, scrapedtitle in matches: url = scrapedurl thumbnail = '' if item.extra == 'generos': title = re.sub(r'<\/a> \(\d+\)', '', scrapedtitle) cantidad = re.findall(r'.*?<\/a> \((\d+)\)', scrapedtitle) th_title = title title = title + ' (' + cantidad[0] + ')' if th_title in tgenero: thumbnail = tgenero[th_title] else: title = scrapedtitle if title.lower() in thumbletras: thumbnail = thumbletras[title.lower()] itemlist.append(item.clone(action='lista', title=title, url=url, thumbnail=thumbnail)) return itemlist def search(item, texto): logger.info() texto = texto.replace(" ", "+") item.url = item.url + texto if texto != '': return lista(item) def findvideos(item): logger.info() itemlist = [] duplicados = [] data = get_source(item.url) data = data.replace('amp;', '') data_page = data patron = 'class=TPlayerTb id=(.*?)><iframe width="560" height="315" src="(.*?)"' matches = re.compile(patron, re.DOTALL).findall(data) for option, video_page in matches: language = scrapertools.find_single_match(data_page, 'TPlayerNv=%s>.*?
    (.*?)<\/center>' % option) if language == 'Castellano': language = 'Español' if language in audio: id_audio = audio[language] else: id_audio = language if 'redirect' in video_page or 'yourplayer' in video_page: data = get_source('http:%s' % video_page) patron = 'label:(.*?),.*?file:(.*?)&app.*?}' matches = re.compile(patron, re.DOTALL).findall(data) for video_url in matches: url = video_url[1] url = url.replace('\/', '/') title = item.contentTitle + ' [%s][%s]' % (video_url[0], id_audio) server = 'directo' if url not in duplicados: itemlist.append(item.clone(action='play', title=title, url=url, server=server )) duplicados.append(url) else: if video_page not in duplicados: itemlist.extend(servertools.find_video_items(data=video_page)) duplicados.append(video_page) for video_item in itemlist: if video_item.server != 'directo': video_item.channel = item.channel video_item.quality = item.quality video_item.title = item.contentTitle + ' [%s][%s]' % (video_item.server, id_audio) if config.get_videolibrary_support() and len(itemlist) > 0 and item.extra != 'findvideos': itemlist.append(item.clone(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 newest(categoria): logger.info() itemlist = [] item = Item() # categoria='peliculas' try: if categoria == 'peliculas': item.url = host + 'estrenos' elif categoria == 'infantiles': item.url = host + 'animacion' itemlist = lista(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