# -*- coding: utf-8 -*- import os import re import sys import urlparse from core import channeltools from core import httptools from core import jsontools from core import scrapertools from core import servertools from core.item import Item from platformcode import config, logger from platformcode import platformtools def login(): url_origen = "http://www.pordede.com" data = httptools.downloadpage(url_origen).data if config.get_setting("pordedeuser", "pordede") in data: return True url = "http://www.pordede.com/api/login/auth?response_type=code&client_id=appclient&redirect_uri=http%3A%2F%2Fwww.pordede.com%2Fapi%2Flogin%2Freturn&state=none" post = "username=%s&password=%s&authorized=autorizar" % (config.get_setting("pordedeuser", "pordede"), config.get_setting("pordedepassword", "pordede")) data = httptools.downloadpage(url, post).data if '"ok":true' in data: return True else: return False def mainlist(item): logger.info() itemlist = [] if not config.get_setting("pordedeuser", "pordede"): itemlist.append( Item( channel=item.channel , title="Habilita tu cuenta en la configuración..." , action="settingCanal" , url="") ) else: result = login() if not result: itemlist.append(Item(channel=item.channel, action="mainlist", title="Login fallido. Volver a intentar...")) return itemlist itemlist.append( Item(channel=item.channel, action="menuseries" , title="Series" , url="" )) itemlist.append( Item(channel=item.channel, action="menupeliculas" , title="Películas y documentales" , url="" )) itemlist.append( Item(channel=item.channel, action="listas_sigues" , title="Listas que sigues" , url="http://www.pordede.com/lists/following" )) itemlist.append( Item(channel=item.channel, action="tus_listas" , title="Tus listas" , url="http://www.pordede.com/lists/yours" )) itemlist.append( Item(channel=item.channel, action="listas_sigues" , title="Top listas" , url="http://www.pordede.com/lists" )) itemlist.append( Item(channel=item.channel, action="settingCanal" , title="Configuración..." , url="" )) return itemlist def settingCanal(item): return platformtools.show_channel_settings() def menuseries(item): logger.info() itemlist = [] itemlist.append( Item(channel=item.channel, action="peliculas" , title="Novedades" , url="http://www.pordede.com/series/loadmedia/offset/0/showlist/hot" )) itemlist.append( Item(channel=item.channel, action="generos" , title="Por géneros" , url="http://www.pordede.com/series" )) itemlist.append( Item(channel=item.channel, action="peliculas" , title="Siguiendo" , url="http://www.pordede.com/series/following" )) itemlist.append( Item(channel=item.channel, action="siguientes" , title="Siguientes Capítulos" , url="http://www.pordede.com/main/index" , viewmode="movie")) itemlist.append( Item(channel=item.channel, action="peliculas" , title="Favoritas" , url="http://www.pordede.com/series/favorite" )) itemlist.append( Item(channel=item.channel, action="peliculas" , title="Pendientes" , url="http://www.pordede.com/series/pending" )) itemlist.append( Item(channel=item.channel, action="peliculas" , title="Terminadas" , url="http://www.pordede.com/series/seen" )) itemlist.append( Item(channel=item.channel, action="peliculas" , title="Recomendadas" , url="http://www.pordede.com/series/recommended" )) itemlist.append( Item(channel=item.channel, action="search" , title="Buscar..." , url="http://www.pordede.com/series" )) return itemlist def menupeliculas(item): logger.info() itemlist = [] itemlist.append( Item(channel=item.channel, action="peliculas" , title="Novedades" , url="http://www.pordede.com/pelis/loadmedia/offset/0/showlist/hot" )) itemlist.append( Item(channel=item.channel, action="generos" , title="Por géneros" , url="http://www.pordede.com/pelis" )) itemlist.append( Item(channel=item.channel, action="peliculas" , title="Favoritas" , url="http://www.pordede.com/pelis/favorite" )) itemlist.append( Item(channel=item.channel, action="peliculas" , title="Pendientes" , url="http://www.pordede.com/pelis/pending" )) itemlist.append( Item(channel=item.channel, action="peliculas" , title="Vistas" , url="http://www.pordede.com/pelis/seen" )) itemlist.append( Item(channel=item.channel, action="peliculas" , title="Recomendadas" , url="http://www.pordede.com/pelis/recommended" )) itemlist.append( Item(channel=item.channel, action="search" , title="Buscar..." , url="http://www.pordede.com/pelis" )) return itemlist def generos(item): logger.info() # Descarga la pagina data = httptools.downloadpage(item.url).data # Extrae las entradas (carpetas) data = scrapertools.find_single_match(data,'
(.*?)
') patron = '([^<]+)\((\d+)\)' matches = re.compile(patron,re.DOTALL).findall(data) itemlist = [] for textid,scrapedurl,scrapedtitle,cuantos in matches: title = scrapedtitle.strip()+" ("+cuantos+")" thumbnail = "" plot = "" if "/pelis" in item.url: url = "http://www.pordede.com/pelis/loadmedia/offset/0/genre/"+textid.replace(" ","%20")+"/showlist/all" else: url = "http://www.pordede.com/series/loadmedia/offset/0/genre/"+textid.replace(" ","%20")+"/showlist/all" itemlist.append( Item(channel=item.channel, action="peliculas" , title=title , url=url, thumbnail=thumbnail, plot=plot, fulltitle=title)) return itemlist def search(item,texto): logger.info() if item.url=="": item.url="http://www.pordede.com/pelis" texto = texto.replace(" ","-") item.extra = item.url item.url = item.url+"/loadmedia/offset/0/query/"+texto+"/years/1950/on/undefined/showlist/all" try: return buscar(item) except: import sys for line in sys.exc_info(): logger.error("%s" % line) return [] def buscar(item): logger.info() # Descarga la pagina headers = {"X-Requested-With": "XMLHttpRequest"} data = httptools.downloadpage(item.url, headers=headers).data # Extrae las entradas (carpetas) json_object = jsontools.load(data) data = json_object["html"] return parse_mixed_results(item,data) def parse_mixed_results(item,data): patron = 'Siguiendo(.*?)
') patron = '
[^<]+' patron += ''+episode+' ([^<]+)(\s*
\s*]*>]*>[^<]*]*>[^<]*]*>]*>]*>[^<]*]*>[^<]*
)?' matches = re.compile(patron,re.DOTALL).findall(bloque_episodios) for scrapedurl,scrapedtitle,info,visto in matches: if visto.strip()=="active": visto_string = "[visto] " else: visto_string = "" numero=episode title = visto_string+session+"x"+numero+" "+scrapertools.htmlclean(scrapedtitle) thumbnail = "" plot = "" epid = scrapertools.find_single_match(scrapedurl,"id/(\d+)") url = "http://www.pordede.com/links/viewepisode/id/"+epid itemlist.append( Item(channel=item.channel, action="findvideos" , title=title , url=url, thumbnail=thumbnail, plot=plot, fulltitle=title, fanart=item.fanart, show=item.show)) itemlist2 = [] for capitulo in itemlist: itemlist2 = findvideos(capitulo) return itemlist2 def peliculas(item): logger.info() # Descarga la pagina headers = {"X-Requested-With": "XMLHttpRequest"} data = httptools.downloadpage(item.url, headers=headers).data # Extrae las entradas (carpetas) json_object = jsontools.load(data) data = json_object["html"] return parse_mixed_results(item,data) def episodios(item): logger.info() itemlist = [] # Descarga la pagina idserie = '' data = httptools.downloadpage(item.url).data patrontemporada = '
]+>([^<]+)