def LoadItem(self, item): self.getControl(301).setEnabled(False) self.getControl(302).setEnabled(False) self.getControl(303).setEnabled(False) self.getControl(400).setVisible(True) logger.info( "-----------------------------------------------------------------------" ) logger.info("Item Recibido: " + item.tostring()) logger.info( "-----------------------------------------------------------------------" ) import time Start = time.time() try: itemlist = navigation.NextItem(item) except Exception as e: import traceback logger.error(traceback.format_exc()) from core import scrapertools from core import guitools patron = 'File "' + os.path.join( config.get_runtime_path(), "pelisalacarta", "channels", "").replace("\\", "\\\\") + '([^.]+)\.py"' canal = scrapertools.find_single_match(traceback.format_exc(), patron) if canal: guitools.Dialog_OK( "Se ha producido un error en el canal " + canal, "Esto puede ser devido a varias razones: \n - El servidor no está disponible, o no esta respondiendo.\n - Cambios en el diseño de la web.\n - Etc...\nComprueba el log para ver mas detalles del error." ) else: guitools.Dialog_OK( "Se ha producido un error en pelisalacarta", "Comprueba el log para ver mas detalles del error.") itemlist = None if type(itemlist) == list: if not item == self.item: self.history.append({ "Item": self.item, "Position": self.control_list.getSelectedPosition(), "Itemlist": self.itemlist, "Time": self.timeload }) self.timeload = time.time() - Start self.itemlist = itemlist self.item = item self.AddItems() self.UpdateInfo() else: self.getControl(400).setVisible(False) self.control_list.setEnabled(True) self.UpdateInfo()
def download(item, VideoItem=None): from core import descargas item.title = guitools.Keyboard(item.title) if item.title: devuelve = descargas.download(item) if devuelve == 0: guitools.Dialog_OK("pelisalacarta", "Descargado con éxito") elif devuelve == -1: guitools.Dialog_OK("pelisalacarta", "Descarga cancelada") else: guitools.Dialog_OK("pelisalacarta", "Error en la descarga")
def add_again_to_downloads(item, VideoItem=None): from core import descargas descargas.mover_descarga_error_a_pendiente(item) guitools.Dialog_OK(config.get_localized_string(30101), item.title + "\n" + config.get_localized_string(30107) ) # 'Ha pasado de nuevo a la lista de descargas' guitools.Refresh()
def remove_from_error_downloads(item, VideoItem=None): from core import descargas descargas.delete_error_bookmark(item) guitools.Dialog_OK( config.get_localized_string(30101), item.title + "\n" + config.get_localized_string(30106)) # 'Se ha quitado de la lista' guitools.Refresh()
def downloadall(item): logger.info("[descargas.py] downloadall") if usingsamba(DOWNLOAD_LIST_PATH): ficheros = samba.get_files(DOWNLOAD_LIST_PATH) else: ficheros = os.listdir(DOWNLOAD_LIST_PATH) ficheros.sort() for fichero in ficheros: if fichero.endswith('.txt'): try: item = LeerDescarga(fichero, DOWNLOAD_LIST_PATH) dev = download(item) if dev == -1: logger.info("[descargas.py] Descarga cancelada") guitools.Dialog_OK("pelisalacarta", "Descargas canceladas") break elif dev == -2: logger.info("[descargas.py] ERROR EN DESCARGA DE " + fichero) BorrarDescarga(item, DOWNLOAD_LIST_PATH) GuardarDescarga(item, ERROR_PATH) else: BorrarDescarga(item, DOWNLOAD_LIST_PATH) except: logger.info("[descargas.py] ERROR EN DESCARGA DE " + fichero) import traceback logger.error(traceback.format_exc()) GuardarDescarga(item, ERROR_PATH) BorrarDescarga(item, DOWNLOAD_LIST_PATH) return ""
def remove_from_downloads(item, VideoItem=None): from core import descargas # La categoría es el nombre del fichero en la lista de descargas descargas.BorrarDescarga(item) guitools.Dialog_OK(config.get_localized_string(30101), item.title + "\n" + config.get_localized_string(30106) ) # 'Se ha quitado de lista de descargas' guitools.Refresh()
def remove_from_favorites(item, VideoItem=None): from core import favoritos favoritos.BorrarFavorito(item) guitools.Dialog_OK( config.get_localized_string(30102), item.title + "\n" + config.get_localized_string(30105)) # 'Se ha quitado de favoritos' guitools.Refresh()
def add_to_downloads(item, VideoItem=None): from core import descargas item.title = guitools.Keyboard(item.title) if item.title: item.fulltitle = "" descargas.GuardarDescarga(item) guitools.Dialog_OK(config.get_localized_string(30101), item.title + "\n" + config.get_localized_string(30109) ) # 'se ha añadido a la lista de descargas'
def add_to_library(item, VideoItem=None): from core import library item.title = guitools.Keyboard(item.title) if item.title: library.Guardar(item) guitools.Dialog_OK(config.get_localized_string(30101), item.title + "\n" + config.get_localized_string(30135) ) # 'Se ha añadido a la Biblioteca' library.ActualizarBiblioteca(item)
def add_to_favorites(item, VideoItem=None): from core import favoritos item.title = guitools.Keyboard(item.title) if item.title: item.fulltitle = "" favoritos.GuardarFavorito(item) guitools.Dialog_OK( config.get_localized_string(30102), item.title + "\n" + config.get_localized_string(30108)) # 'se ha añadido a favoritos'
def Reset(item): itemlist=[] ConfigCanales = [] if config.get_setting("canales_buscador"): ConfigCanales.extend(config.get_setting("canales_buscador").split("|")) IndexConfig = -1 for x, Config in enumerate(ConfigCanales): ConfigCanales[x] = ConfigCanales[x].split(",")[0] + "," + ConfigCanales[x].split(",")[1] + "," +"0" + "," +"0" config.set_setting("canales_buscador",'|'.join(ConfigCanales)) from core import guitools guitools.Dialog_OK("Pelisalacarta","Estadisticas reseteadas" )
def send_to_pyLoad(item, VideoItem=None): logger.info("Opcion seleccionada: Enviar a pyLoad") if item.show != "": package_name = item.show else: package_name = item.title from core import pyload_client pyload_client.download(url=VideoItem.url[0][1], package_name=package_name) if item.thumbnail: pyload_client.download(url=item.thumbnail, package_name=package_name) if item.subtitle: pyload_client.download(url=item.subtitle, package_name=package_name) guitools.Dialog_OK(config.get_localized_string(30101), item.title + "\n" + "Se ha enviado a pyLoad")
def send_to_jdownloader(item, VideoItem=None): from core import scrapertools import urllib import base64 User = config.get_setting("jdownloader_user") Password = config.get_setting("jdownloader_password") headers = [] headers.append([ "User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:20.0) Gecko/20100101 Firefox/20.0" ]) headers.append([ "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" ]) headers.append(["Accept-Language", "es-ES,es;q=0.8,en-US;q=0.5,en;q=0.3"]) headers.append(["Accept-Encoding", "gzip, deflate"]) headers.append( ["Authorization", "Basic " + base64.b64encode(User + ":" + Password)]) headers.append(["Content-Type", "application/x-www-form-urlencoded"]) url = config.get_setting("jdownloader") + "/link_adder.tmpl" Descargas = VideoItem.url[0][1] logger.info(Descargas) if item.thumbnail: Descargas = Descargas + "\n" + item.thumbnail if item.subtitle: Descargas = Descargas + "\n" + item.subtitle try: data = scrapertools.downloadpage(url, headers=headers, post="do=Add&addlinks=" + urllib.quote_plus(Descargas)) guitools.Dialog_OK(config.get_localized_string(30101), item.title + "\n" + "Se ha enviado a jDownloader") except: guitools.Dialog_OK( config.get_localized_string(30101), item.title + "\n" + "No se ha podido enviar a jDownloader")
def download_all_episodes(item): from servers import servertools from core import downloadtools from core import scrapertools # Esto es poco elegante... # Esta marca es porque el item tiene algo más aparte en el atributo "extra" if item.extra: action = item.extra if item.refered_action: action = item.refered_action if "###" in action: item.extra = action.split("###")[1] action = action.split("###")[0] #Importamos el canal channel = ImportarCanal(item.channel) #Ejecutamos la funcion exec "itemlist = channel." + action + "(item)" #Quitamos estos dos elementos de la lista (si los hay) for episodio in itemlist: if episodio.action == "add_serie_to_library" or episodio.action == "download_all_episodes": itemlist.remove(episodio) #Abrimos el dialogo pDialog = guitools.Dialog_Progress('pelisalacarta', 'Descargando ' + item.show) for x, episodio in enumerate(itemlist): #Si se presiona cancelar, se cancela if pDialog.iscanceled(): return #Extraemos la Temporada y el Episodio episodio.title = scrapertools.get_season_and_episode(episodio.title) #Actualizamos el progreso pDialog.Actualizar(((x) * 100) / len(itemlist), 'Descargando ' + item.show, 'Descargando episodio: ' + episodio.title) # Extrae los mirrors if hasattr(channel, 'findvideos'): mirrors_itemlist = channel.findvideos(episodio) else: mirrors_itemlist = findvideos(episodio, episodio.channel) descargado = False #Descarga el primer mirror que funcione for mirror_item in mirrors_itemlist: if hasattr(channel, 'play'): video_items = channel.play(mirror_item) else: video_items = [mirror_item] if len(video_items) > 0: video_item = video_items[0] # Comprueba que esté disponible video_urls, puedes, motivo = servertools.resolve_video_urls_for_playing( video_item.server, video_item.url, video_password="", muestra_dialogo=False) # Lo descarga if puedes: # El vídeo de más calidad es el último devuelve = downloadtools.downloadbest( video_urls, item.show + " " + episodio.title + " [" + video_item.server + "]", continuar=False) if devuelve == 0: logger.info( "[launcher.py] download_all_episodes - Archivo Descargado" ) descargado = True break elif devuelve == -1: pDialog.Cerrar() logger.info( "[launcher.py] download_all_episodes - Descarga abortada" ) guitools.Dialog_OK("pelisalacarta", "La descarga ha sido cancelada") return else: continue pDialog.Cerrar()
def MenuVideo(item): if item.server == "": item.server = "directo" default_action = config.get_setting("default_action") itemlist = [] # Extrae las URL de los vídeos, y si no puedes verlo te dice el motivo from servers import servertools video_urls, puedes, motivo = servertools.resolve_video_urls_for_playing( item.server, item.url, item.password, True) # Si puedes ver el vídeo, presenta las opciones if puedes: for video_url in video_urls: itemlist.append( Item(title=config.get_localized_string(30151) + " " + video_url[0], url=video_url, action="play_video")) if item.server == "local": itemlist.append( Item(title=config.get_localized_string(30164), url=video_urls, action="delete")) if not item.server == "local": itemlist.append( Item(title=config.get_localized_string(30153), url=video_urls, action="download")) #"Descargar" if item.channel == "favoritos": itemlist.append( Item(title=config.get_localized_string(30154), url=video_urls, action="remove_from_favorites")) #"Quitar de favoritos" if not item.channel == "favoritos": itemlist.append( Item(title=config.get_localized_string(30155), url=video_urls, action="add_to_favorites")) #"Añadir a favoritos" if not item.channel == "library": itemlist.append( Item(title=config.get_localized_string(30161), url=video_urls, action="add_to_library")) #"Añadir a Biblioteca" if item.channel == "library": itemlist.append( Item(title="Quitar de la Biblioteca", url=video_urls, action="remove_from_library")) #"Añadir a Biblioteca" if not item.channel == "descargas": itemlist.append( Item( title=config.get_localized_string(30157), url=video_urls, action="add_to_downloads")) #"Añadir a lista de descargas" if item.channel == "descargas" and item.category == "errores": itemlist.append( Item(title=config.get_localized_string(30159), url=video_urls, action="remove_from_error_downloads") ) #"Borrar descarga definitivamente" itemlist.append( Item(title=config.get_localized_string(30160), url=video_urls, action="add_again_to_downloads") ) #"Pasar de nuevo a lista de descargas" if item.channel == "descargas" and item.category == "pendientes": itemlist.append( Item(title=config.get_localized_string(30156), url=video_urls, action="remove_from_downloads") ) #"Quitar de lista de descargas" if config.get_setting("jdownloader_enabled") == "true": itemlist.append( Item(title=config.get_localized_string(30158), url=video_urls, action="send_to_jdownloader")) #"Enviar a JDownloader" if config.get_setting("pyload_enabled") == "true": itemlist.append( Item(title=config.get_localized_string(30158).replace( "jDownloader", "pyLoad"), url=video_urls, action="send_to_pyLoad")) #"Enviar a pyLoad" if not item.channel in ["trailertools", "ecarteleratrailers"]: itemlist.append( Item(title=config.get_localized_string(30162), url=video_urls, action="search_trailer")) # "Buscar Trailer" else: if item.server != "": guitools.Dialog_OK("No puedes ver ese vídeo porque...", motivo.replace("<br/>", "\n") + "\n" + item.url) else: guitools.Dialog_OK( "No puedes ver ese vídeo porque...", "El servidor donde está alojado no está\nsoportado en pelisalacarta todavía\n" + url) if item.channel == "favoritos": itemlist.append( Item(title=config.get_localized_string(30154), url=video_urls, action="remove_from_favorites") ) #"Quitar de favoritos" if item.channel == "library": itemlist.append( Item(title="Quitar de la Biblioteca", url=video_urls, action="remove_from_library")) #"Añadir a Biblioteca" if item.channel == "descargas" and item.category == "errores": itemlist.append( Item(title=config.get_localized_string(30159), url=video_urls, action="remove_from_error_downloads") ) #"Borrar descarga definitivamente" if item.channel == "descargas" and not item.category == "errores": itemlist.append( Item(title=config.get_localized_string(30156), url=video_urls, action="remove_from_downloads") ) #"Quitar de lista de descargas" return itemlist