def getitems(item): logger.info("getitems") itemlist = [] # Extrae los parámetros channel = item.channel accion = item.action url = item.url if url != "none": if not "filenium" in url: url = urllib.unquote_plus(url) server = item.server title = item.title extra = item.extra category = item.category fulltitle = item.fulltitle try: if accion == "mainlist" and config.get_setting( "updatechannels") == "true": try: logger.info("Verificando actualización del canal") from core import updater actualizado = updater.updatechannel(channel) if actualizado: itemlist.append( Item(title="¡Canal descargado y actualizado!")) except: import sys for line in sys.exc_info(): logger.error("%s" % line) # El item que invocó es importante para obtener el siguiente senderitem = Item(title=title, channel=channel, action=accion, url=url, server=server, extra=extra, category=category, fulltitle=fulltitle) if "|" in url: partes = urllib.unquote_plus(senderitem.url).split("|") refered_item = Item(title=partes[0], url=partes[2], thumbnail="", server=partes[1], plot="", extra=partes[3]) logger.info("refered_item title=" + refered_item.title + ", url=" + refered_item.url + ", server=" + refered_item.server + ", extra=" + refered_item.extra) else: refered_item = Item() # Importa el canal y ejecuta la función try: exec "from pelisalacarta.channels import " + channel + " as channelmodule" except: import sys for line in sys.exc_info(): logger.error("%s" % line) try: exec "from pelisalacarta import " + channel + " as channelmodule" except: import sys for line in sys.exc_info(): logger.error("%s" % line) try: exec "from core import " + channel + " as channelmodule" except: pass # play - es el menú de reproducción de un vídeo if accion == "play": logger.info("ACCION PLAY") if hasattr(channelmodule, 'play'): logger.info("[launcher.py] executing channel 'play' method") logger.info(channelmodule.__file__) itemlist = channelmodule.play(senderitem) senderitem = itemlist[0] senderitem.folder = False else: logger.info( "[launcher.py] no channel 'play' method, executing core method" ) itemlist = menu_video(senderitem) # play_video - genera una playlist con una sola entrada para que wiimc la reproduzca elif accion == "play_video": logger.info("ACCION PLAY_VIDEO") logger.info("url=" + senderitem.url) senderitem.folder = False itemlist.append(senderitem) # search - es el buscador elif channel == "buscador" and accion == "mainlist": logger.info("ACCION SEARCH (buscador)") texto = requestpath.split("plx")[1] exec "itemlist = buscador.do_search_results(texto)" elif accion == "search": logger.info("ACCION SEARCH") texto = requestpath.split("plx")[1] exec "itemlist = channelmodule." + accion + "(senderitem,texto)" # findvideos - debe encontrar videos reproducibles elif accion == "findvideos": logger.info("ACCION FINDVIDEOS") try: exec "itemlist = channelmodule." + accion + "(senderitem)" except: import sys for line in sys.exc_info(): logger.error("%s" % line) itemlist = findvideos(senderitem, channel) elif accion == "descargar": itemlist = download_item(senderitem, refered_item) elif accion == "download_all": itemlist = download_all(senderitem, refered_item) elif accion == "add_to_favorites": itemlist = add_to_favorites(senderitem, refered_item) elif accion == "remove_from_favorites": itemlist = remove_from_favorites(senderitem, refered_item) elif accion == "add_to_downloads": itemlist = add_to_downloads(senderitem, refered_item) elif accion == "remove_from_downloads": itemlist = remove_from_downloads(senderitem, refered_item) elif accion == "remove_from_error_downloads": itemlist = remove_from_error_downloads(senderitem, refered_item) elif accion == "add_again_to_downloads": itemlist = add_again_to_downloads(senderitem, refered_item) elif accion == "send_to_jdownloader": itemlist = send_to_jdownloader(senderitem, refered_item) elif accion == "search_trailer": itemlist = search_trailer(senderitem, refered_item) elif accion == "add_serie_to_wiideoteca": itemlist = wiideoteca.AgregarSerie(senderitem) elif accion == "UltimoVisto": itemlist = wiideoteca.UltimoVisto(senderitem) else: if senderitem.url == "none": senderitem.url = "" exec "itemlist.extend( channelmodule." + accion + "(senderitem) )" ''' # Lo almacena en cache fichero = open( cached_file ,"wb") cerealizer.dump(itemlist,fichero) fichero.close() ''' logger.info("Items devueltos") for item in itemlist: logger.info(" " + item.title + " | " + item.url + " | " + item.action) except: import traceback, sys from pprint import pprint exc_type, exc_value, exc_tb = sys.exc_info() lines = traceback.format_exception(exc_type, exc_value, exc_tb) for line in lines: line_splits = line.split("\n") for line_split in line_splits: logger.error(line_split) return itemlist, channel
def getitems(requestpath): logger.info("getitems") itemlist = [] # La ruta empleada en la petición ruta = requestpath.split("?")[0] logger.info("ruta=" + ruta) # Los parámetros son las partes de la ruta separadas por "/" rutas = ruta.split("/") cadena = " " # Las imprime en el log for linea in rutas: cadena = cadena + linea + " | " logger.info(cadena) # Extrae los parámetros channel = rutas[2] accion = rutas[3] url = rutas[4] if url != "none": url = urllib.unquote_plus(url) server = rutas[5].lower() title = urllib.unquote_plus(rutas[6]) extra = urllib.unquote_plus(rutas[7]) category = urllib.unquote_plus(rutas[8]) fulltitle = urllib.unquote_plus(rutas[9]) logger.info("channel=" + channel + ", accion=" + accion + ", url=" + url + ", server=" + server + ", title=" + title + ", extra=" + extra + ", category=" + category + " fulltitle=" + fulltitle) print "channel=" + channel + ", accion=" + accion + ", url=" + url + ", server=" + server + ", title=" + title + ", extra=" + extra + ", category=" + category if accion == "mainlist" and config.get_setting("updatechannels") == "true": logger.info("Verificando actualización del canal") from core import updater actualizado = updater.updatechannel(channel) if actualizado: itemlist.append(Item(title="¡Canal descargado y actualizado!")) # Obtiene un nombre válido para la cache hashed_url = binascii.hexlify(md5.new(requestpath).digest()) cached_file = os.path.join(config.get_data_path(), "tmp", "cache", hashed_url) logger.info("cached_file=" + cached_file) # Si el fichero está en cache if channel not in ("trailertools", "buscador", "configuracion", "pyload", "wiidoteca") and os.path.exists(cached_file): # <-- logger.info("Reading from cache") fichero = open(cached_file, "rb") itemlist = cerealizer.load(fichero) fichero.close() else: logger.info("Not cached") ### ESTUDIAR #if accion not in ("play","findvideos","detail"): titulo = "" ### # El item que invocó es importante para obtener el siguiente senderitem = Item(title=title, channel=channel, action=accion, url=url, server=server, extra=extra, category=category, fulltitle=fulltitle) if "|" in url: ## <-- unquote despues de split para no interferir cuando | aparece en algun campo partes = senderitem.url.split("|") decpartes = [] for parte in partes: decpartes.append(urllib.unquote_plus(parte)) partes = decpartes ## <-- refered_item = Item(title=partes[0], url=partes[2], thumbnail=partes[5], server=partes[1], plot=partes[6], extra=partes[3], fulltitle=partes[4]) logger.info("refered_item title=" + refered_item.title + ", url=" + refered_item.url + ", server=" + refered_item.server + ", extra=" + refered_item.extra) else: refered_item = Item() # Importa el canal y ejecuta la función if channel in ("configuracion", "trailertools", "buscador"): exec "import " + channel else: try: exec "from tvalacarta.channels import " + channel except: exec "from core import " + channel # play - es el menú de reproducción de un vídeo if accion == "play": logger.info("ACCION PLAY") print "ACCION PLAY" try: exec "itemlist = " + channel + ".play(senderitem)" print "itemlist = " + channel + ".play(senderitem)" senderitem = itemlist[0] senderitem.folder = False except: import sys for line in sys.exc_info(): logger.error("%s" % line) itemlist = menu_video(senderitem) # play_video - genera una playlist con una sola entrada para que wiimc la reproduzca elif accion == "play_video": logger.info("ACCION PLAY_VIDEO") senderitem.folder = False itemlist.append(senderitem) # search - es el buscador elif accion == "search": logger.info("ACCION SEARCH") texto = requestpath.split(".rss")[1] exec "itemlist = " + channel + "." + accion + "(senderitem,texto)" # findvideos - debe encontrar videos reproducibles elif accion == "findvideos": logger.info("ACCION FINDVIDEOS") try: exec "itemlist = " + channel + "." + accion + "(senderitem)" except: import sys for line in sys.exc_info(): logger.error("%s" % line) itemlist = findvideos(senderitem, channel) elif accion == "descargar": itemlist = download_item(senderitem, refered_item) elif accion == "downloadall": ## <-- itemlist = downloadall(senderitem, refered_item) ## <-- elif accion == "add_to_favorites": itemlist = add_to_favorites(senderitem, refered_item) elif accion == "remove_from_favorites": itemlist = remove_from_favorites(senderitem, refered_item) elif accion == "add_to_downloads": itemlist = add_to_downloads(senderitem, refered_item) elif accion == "remove_from_downloads": itemlist = remove_from_downloads(senderitem, refered_item) elif accion == "remove_from_error_downloads": itemlist = remove_from_error_downloads(senderitem, refered_item) elif accion == "add_again_to_downloads": itemlist = add_again_to_downloads(senderitem, refered_item) elif accion == "send_to_jdownloader": itemlist = send_to_jdownloader(senderitem, refered_item) elif accion == "send_to_pyload": itemlist = send_to_pyload(senderitem, refered_item) elif accion == "search_trailer": itemlist = search_trailer(senderitem, refered_item) elif accion == "add_serie_to_wiideoteca": itemlist = wiideoteca.AgregarSerie(senderitem) elif accion == "UltimoVisto": itemlist = wiideoteca.UltimoVisto(senderitem) else: if senderitem.url == "none": senderitem.url = "" exec "itemlist.extend( " + channel + "." + accion + "(senderitem) )" # Lo almacena en cache fichero = open(cached_file, "wb") cerealizer.dump(itemlist, fichero) fichero.close() logger.info("Items devueltos") for item in itemlist: logger.info(" " + item.title + " | " + item.url + " | " + item.action) return itemlist, channel