def add_to_favorites(senderitem, refered_item): from core import favoritos favoritos.savebookmark(canal=senderitem.channel, titulo=refered_item.title, url=refered_item.url, thumbnail=senderitem.thumbnail, server=refered_item.server, plot="", fulltitle=senderitem.fulltitle) itemlist = [] itemlist.append( Item(title="El video %s" % senderitem.extra, channel=senderitem.channel, action="play", url=refered_item.url, server=refered_item.server, fulltitle=senderitem.fulltitle, folder=True)) itemlist.append( Item(title="ha sido añadido a favoritos", channel=senderitem.channel, action="play", url=refered_item.url, server=refered_item.server, fulltitle=senderitem.fulltitle, folder=True)) return itemlist
def add_to_favorites(senderitem,refered_item): from core import favoritos favoritos.savebookmark(canal=senderitem.channel,titulo=refered_item.title,url=refered_item.url,thumbnail=senderitem.thumbnail,server=refered_item.server,plot="",fulltitle=senderitem.fulltitle ) itemlist = [] itemlist.append( Item( title="El video %s" % senderitem.extra, channel=senderitem.channel,action="play",url=refered_item.url,server=refered_item.server, fulltitle=senderitem.fulltitle, folder=True ) ) itemlist.append( Item( title="ha sido añadido a favoritos", channel=senderitem.channel,action="play",url=refered_item.url,server=refered_item.server, fulltitle=senderitem.fulltitle, folder=True ) ) return itemlist
def add_to_favorites(senderitem,refered_item): from core import favoritos favoritos.savebookmark(titulo=refered_item.title,url=refered_item.url,thumbnail="",server=refered_item.server,fulltitle=senderitem.fulltitle,plot="") itemlist = [] itemlist.append( Item( title="El video %s" % senderitem.fulltitle ) ) itemlist.append( Item( title="ha sido añadido a favoritos" ) ) return itemlist
def savebookmark(canal=CHANNELNAME, titulo="", url="", thumbnail="", server="", plot="", fulltitle="", savepath=DOWNLOAD_LIST_PATH): favoritos.savebookmark(canal, titulo, url, thumbnail, server, plot, fulltitle, savepath)
def add_to_favorites(senderitem, refered_item): from core import favoritos favoritos.savebookmark(titulo=refered_item.title, url=refered_item.url, thumbnail="", server=refered_item.server, fulltitle=senderitem.fulltitle, plot="") itemlist = [] itemlist.append(Item(title="El video %s" % senderitem.fulltitle)) itemlist.append(Item(title="ha sido añadido a favoritos")) return itemlist
def add_to_favorites(item): #Proviene del menu contextual: if "item_action" in item: item.action = item.item_action del item.item_action item.context=[] from core import favoritos from core import downloadtools if not item.fulltitle: item.fulltitle = item.title title = platformtools.dialog_input(default=downloadtools.limpia_nombre_excepto_1(item.fulltitle)+" ["+item.channel+"]") if title is not None: item.title = title favoritos.savebookmark(item) platformtools.dialog_ok("Pelisalacarta", config.get_localized_string(30102) +"\n"+ item.title +"\n"+ config.get_localized_string(30108)) return
def downloadall(item): logger.info("[descargas.py] downloadall") # Lee la lista de ficheros if usingsamba: ficheros = samba.get_files(DOWNLOAD_LIST_PATH) else: ficheros = os.listdir(DOWNLOAD_LIST_PATH) logger.info("[descargas.py] numero de ficheros=%d" % len(ficheros)) # La ordena ficheros.sort() # Crea un listado con las entradas de favoritos for fichero in ficheros: # El primer video de la lista logger.info("[descargas.py] fichero="+fichero) if fichero!="error" and fichero!=".DS_Store": # Descarga el v�deo try: # Lee el bookmark canal,titulo,thumbnail,plot,server,url,fulltitle = favoritos.readbookmark(fichero,DOWNLOAD_LIST_PATH) logger.info("[descargas.py] url="+url) # Averigua la URL del v�deo video_urls,puedes,motivo = servertools.resolve_video_urls_for_playing(server,url,"",False) # La �ltima es la de mayor calidad, lo mejor para la descarga mediaurl = video_urls[ len(video_urls)-1 ][1] logger.info("[descargas.py] mediaurl="+mediaurl) # Genera el NFO nfofilepath = downloadtools.getfilefromtitle("sample.nfo",fulltitle) outfile = open(nfofilepath,"w") outfile.write("<movie>\n") outfile.write("<title>("+fulltitle+")</title>\n") outfile.write("<originaltitle></originaltitle>\n") outfile.write("<rating>0.000000</rating>\n") outfile.write("<year>2009</year>\n") outfile.write("<top250>0</top250>\n") outfile.write("<votes>0</votes>\n") outfile.write("<outline></outline>\n") outfile.write("<plot>"+plot+"</plot>\n") outfile.write("<tagline></tagline>\n") outfile.write("<runtime></runtime>\n") outfile.write("<thumb></thumb>\n") outfile.write("<mpaa>Not available</mpaa>\n") outfile.write("<playcount>0</playcount>\n") outfile.write("<watched>false</watched>\n") outfile.write("<id>tt0432337</id>\n") outfile.write("<filenameandpath></filenameandpath>\n") outfile.write("<trailer></trailer>\n") outfile.write("<genre></genre>\n") outfile.write("<credits></credits>\n") outfile.write("<director></director>\n") outfile.write("<actor>\n") outfile.write("<name></name>\n") outfile.write("<role></role>\n") outfile.write("</actor>\n") outfile.write("</movie>") outfile.flush() outfile.close() logger.info("[descargas.py] Creado fichero NFO") # Descarga el thumbnail if thumbnail != "": logger.info("[descargas.py] thumbnail="+thumbnail) thumbnailfile = downloadtools.getfilefromtitle(thumbnail,fulltitle) thumbnailfile = thumbnailfile[:-4] + ".tbn" logger.info("[descargas.py] thumbnailfile="+thumbnailfile) try: downloadtools.downloadfile(thumbnail,thumbnailfile) logger.info("[descargas.py] Thumbnail descargado") except: logger.info("[descargas.py] error al descargar thumbnail") for line in sys.exc_info(): logger.error( "%s" % line ) # Descarga el video #dev = downloadtools.downloadtitle(mediaurl,fulltitle) dev = downloadtools.downloadbest(video_urls,fulltitle) if dev == -1: # El usuario ha cancelado la descarga logger.info("[descargas.py] Descarga cancelada") return elif dev == -2: # Error en la descarga, lo mueve a ERROR y continua con el siguiente logger.info("[descargas.py] ERROR EN DESCARGA DE "+fichero) if not usingsamba: origen = os.path.join( DOWNLOAD_LIST_PATH , fichero ) destino = os.path.join( ERROR_PATH , fichero ) import shutil shutil.move( origen , destino ) else: favoritos.savebookmark(canal,titulo, url, thumbnail, server, plot, fulltitle, ERROR_PATH) favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH) else: logger.info("[descargas.py] Video descargado") # Borra el bookmark e itera para obtener el siguiente video filepath = os.path.join( DOWNLOAD_LIST_PATH , fichero ) if usingsamba: os.remove(filepath) else: favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH) logger.info("[descargas.py] "+fichero+" borrado") except: logger.info("[descargas.py] ERROR EN DESCARGA DE "+fichero) import sys for line in sys.exc_info(): logger.error( "%s" % line ) if not usingsamba: origen = os.path.join( DOWNLOAD_LIST_PATH , fichero ) destino = os.path.join( ERROR_PATH , fichero ) import shutil shutil.move( origen , destino ) else: favoritos.savebookmark(canal,titulo, url, thumbnail, server, plot, fulltitle,ERROR_PATH) favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH)
def play_video(channel="",server="",url="",category="",title="", thumbnail="",plot="",extra="",desdefavoritos=False,desdedescargados=False,desderrordescargas=False,strmfile=False,Serie="",subtitle="", video_password="",fulltitle=""): from servers import servertools import sys import xbmcgui if url.startswith("http://"): url = url.replace(" ","%20") try: logger.info("[xbmctools.py] play_video(channel=%s, server=%s, url=%s, category=%s, title=%s, thumbnail=%s, plot=%s, desdefavoritos=%s, desdedescargados=%s, desderrordescargas=%s, strmfile=%s, Serie=%s, subtitle=%s" % (channel,server,url,category,title,thumbnail,plot,desdefavoritos,desdedescargados,desderrordescargas,strmfile,Serie,subtitle)) except: pass try: server = server.lower() except: server = "" if server=="": server="directo" try: from core import descargas download_enable=True except: download_enable=False view = False # Abre el diálogo de selección opciones = [] default_action = config.get_setting("default_action") logger.info("default_action="+default_action) # Si no es el modo normal, no muestra el diálogo porque cuelga XBMC muestra_dialogo = (config.get_setting("player_mode")=="0" and not strmfile) # Extrae las URL de los vídeos, y si no puedes verlo te dice el motivo video_urls,puedes,motivo = servertools.resolve_video_urls_for_playing(server,url,video_password,muestra_dialogo) # Si puedes ver el vídeo, presenta las opciones if puedes: for video_url in video_urls: opciones.append(config.get_localized_string(30151) + " " + video_url[0]) if server=="local": opciones.append(config.get_localized_string(30164)) else: if download_enable: opcion = config.get_localized_string(30153) opciones.append(opcion) # "Descargar" if channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" else: opciones.append(config.get_localized_string(30155)) # "Añadir a favoritos" if not strmfile: opciones.append(config.get_localized_string(30161)) # "Añadir a Biblioteca" if download_enable: if channel!="descargas": opciones.append(config.get_localized_string(30157)) # "Añadir a lista de descargas" else: if category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" opciones.append(config.get_localized_string(30160)) # "Pasar de nuevo a lista de descargas" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" opciones.append(config.get_localized_string(30158)) # "Enviar a JDownloader" if default_action=="3": seleccion = len(opciones)-1 # Busqueda de trailers en youtube if not channel in ["Trailer","ecarteleratrailers"]: opciones.append(config.get_localized_string(30162)) # "Buscar Trailer" # Si no puedes ver el vídeo te informa else: import xbmcgui if server!="": advertencia = xbmcgui.Dialog() if "<br/>" in motivo: resultado = advertencia.ok( "No puedes ver ese vídeo porque...",motivo.split("<br/>")[0],motivo.split("<br/>")[1],url) else: resultado = advertencia.ok( "No puedes ver ese vídeo porque...",motivo,url) else: resultado = advertencia.ok( "No puedes ver ese vídeo porque...","El servidor donde está alojado no está","soportado en pelisalacarta todavía",url) if channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" if channel=="descargas": if category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" if len(opciones)==0: return # Si la accion por defecto es "Preguntar", pregunta if default_action=="0": import xbmcgui dia = xbmcgui.Dialog() seleccion = dia.select(config.get_localized_string(30163), opciones) # "Elige una opción" #dia.close() elif default_action=="1": seleccion = 0 elif default_action=="2": seleccion = len(video_urls)-1 elif default_action=="3": seleccion = seleccion else: seleccion=0 logger.info("seleccion=%d" % seleccion) logger.info("seleccion=%s" % opciones[seleccion]) # No ha elegido nada, lo más probable porque haya dado al ESC if seleccion==-1: #Para evitar el error "Uno o más elementos fallaron" al cancelar la selección desde fichero strm listitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) import sys xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),False,listitem) # JUR Added #if config.get_setting("subtitulo") == "true": # config.set_setting("subtitulo", "false") return if opciones[seleccion]==config.get_localized_string(30158): # "Enviar a JDownloader" #d = {"web": url}urllib.urlencode(d) from core import scrapertools data = scrapertools.cachePage(config.get_setting("jdownloader")+"/action/add/links/grabber0/start1/web="+url+ " " +thumbnail) return elif opciones[seleccion]==config.get_localized_string(30164): # Borrar archivo en descargas # En "extra" está el nombre del fichero en favoritos import os os.remove( url ) xbmc.executebuiltin( "Container.Refresh" ) return # Ha elegido uno de los vídeos elif seleccion < len(video_urls): mediaurl = video_urls[seleccion][1] if len(video_urls[seleccion])>2: wait_time = video_urls[seleccion][2] else: wait_time = 0 if len(video_urls[seleccion])>3: use_download_and_play = (video_urls[seleccion][3]=="download_and_play") else: use_download_and_play = False view = True # Descargar elif opciones[seleccion]==config.get_localized_string(30153): # "Descargar" # El vídeo de más calidad es el último mediaurl = video_urls[len(video_urls)-1][1] # Si no quiere usar filenium para descargas, coge el anterior if config.get_setting("filenium_for_download")=="false" and video_urls[len(video_urls)-1][0]=="[filenium]": mediaurl = video_urls[len(video_urls)-2][1] from core import downloadtools keyboard = xbmc.Keyboard(fulltitle) keyboard.doModal() if (keyboard.isConfirmed()): title = keyboard.getText() downloadtools.downloadtitle(mediaurl,title) return elif opciones[seleccion]==config.get_localized_string(30154): #"Quitar de favoritos" from core import favoritos # En "extra" está el nombre del fichero en favoritos favoritos.deletebookmark(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30105)) # 'Se ha quitado de favoritos' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30159): #"Borrar descarga definitivamente" from core import descargas descargas.delete_error_bookmark(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de la lista' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30160): #"Pasar de nuevo a lista de descargas": from core import descargas descargas.mover_descarga_error_a_pendiente(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30107)) # 'Ha pasado de nuevo a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30155): #"Añadir a favoritos": from core import favoritos from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(fulltitle)+" ["+channel+"]") keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() favoritos.savebookmark(titulo=title,url=url,thumbnail=thumbnail,server=server,plot=plot,fulltitle=title) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30108)) # 'se ha añadido a favoritos' return elif opciones[seleccion]==config.get_localized_string(30156): #"Quitar de lista de descargas": from core import descargas # La categoría es el nombre del fichero en la lista de descargas descargas.deletebookmark((urllib.unquote_plus( extra ))) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de lista de descargas' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30157): #"Añadir a lista de descargas": from core import descargas from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(fulltitle)) keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() descargas.savebookmark(titulo=title,url=url,thumbnail=thumbnail,server=server,plot=plot,fulltitle=title) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30109)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30161): #"Añadir a Biblioteca": # Library from platformcode.xbmc import library titulo = fulltitle if fulltitle=="": titulo = title library.savelibrary(titulo,url,thumbnail,server,plot,canal=channel,category=category,Serie=Serie) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , fulltitle , config.get_localized_string(30135)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30162): #"Buscar Trailer": config.set_setting("subtitulo", "false") import sys xbmc.executebuiltin("Container.Update(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s)" % ( sys.argv[ 0 ] , "trailertools" , "buscartrailer" , urllib.quote_plus( category ) , urllib.quote_plus( fulltitle ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( "" ) , server )) return # Si no hay mediaurl es porque el vídeo no está :) logger.info("[xbmctools.py] mediaurl="+mediaurl) if mediaurl=="": logger.info("b1") if server == "unknown": alertUnsopportedServer() else: alertnodisponibleserver(server) return # Si hay un tiempo de espera (como en megaupload), lo impone ahora if wait_time>0: logger.info("b2") continuar = handle_wait(wait_time,server,"Cargando vídeo...") if not continuar: return # Obtención datos de la Biblioteca (solo strms que estén en la biblioteca) import xbmcgui if strmfile: logger.info("b3") xlistitem = getLibraryInfo(mediaurl) else: logger.info("b4") try: xlistitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail, path=mediaurl) except: xlistitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) xlistitem.setInfo( "video", { "Title": title, "Plot" : plot , "Studio" : channel , "Genre" : category } ) # Descarga el subtitulo if channel=="cuevana" and subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): logger.info("b5") try: import os ficherosubtitulo = os.path.join( config.get_data_path(), 'subtitulo.srt' ) if os.path.exists(ficherosubtitulo): try: os.remove(ficherosubtitulo) except IOError: logger.info("Error al eliminar el archivo subtitulo.srt "+ficherosubtitulo) raise from core import scrapertools data = scrapertools.cache_page(subtitle) #print data fichero = open(ficherosubtitulo,"w") fichero.write(data) fichero.close() #from core import downloadtools #downloadtools.downloadfile(subtitle, ficherosubtitulo ) except: logger.info("Error al descargar el subtítulo") # Lanza el reproductor if strmfile: #Si es un fichero strm no hace falta el play logger.info("b6") import sys xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),True,xlistitem) #if subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): # logger.info("[xbmctools.py] Con subtitulos") # setSubtitles() else: logger.info("b7") if use_download_and_play or config.get_setting("player_mode")=="3": logger.info("b11") import download_and_play # El canal exige usar download_and_play, pero el usuario no lo ha elegido -> le quitamos los diálogos if use_download_and_play and config.get_setting("player_mode")!="3": download_and_play.download_and_play( mediaurl , "download_and_play.tmp" , config.get_setting("downloadpath") , show_dialog=False ) else: download_and_play.download_and_play( mediaurl , "download_and_play.tmp" , config.get_setting("downloadpath") ) return elif config.get_setting("player_mode")=="0": logger.info("b8") # Añadimos el listitem a una lista de reproducción (playlist) playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO ) playlist.clear() playlist.add( mediaurl, xlistitem ) # Reproduce playersettings = config.get_setting('player_type') logger.info("[xbmctools.py] playersettings="+playersettings) player_type = xbmc.PLAYER_CORE_AUTO if playersettings == "0": player_type = xbmc.PLAYER_CORE_AUTO logger.info("[xbmctools.py] PLAYER_CORE_AUTO") elif playersettings == "1": player_type = xbmc.PLAYER_CORE_MPLAYER logger.info("[xbmctools.py] PLAYER_CORE_MPLAYER") elif playersettings == "2": player_type = xbmc.PLAYER_CORE_DVDPLAYER logger.info("[xbmctools.py] PLAYER_CORE_DVDPLAYER") xbmcPlayer = xbmc.Player( player_type ) xbmcPlayer.play(playlist) if channel=="cuevana" and subtitle!="": logger.info("subtitulo="+subtitle) if subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): logger.info("[xbmctools.py] Con subtitulos") setSubtitles() elif config.get_setting("player_mode")=="1": logger.info("b9") #xlistitem.setProperty('IsPlayable', 'true') #xlistitem.setProperty('path', mediaurl) xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path=mediaurl)) elif config.get_setting("player_mode")=="2": logger.info("b10") xbmc.executebuiltin( "PlayMedia("+mediaurl+")" ) if (config.get_setting("subtitulo") == "true") and view: logger.info("b11") from core import subtitletools wait2second() subtitletools.set_Subtitle() if subtitle!="": xbmc.Player().setSubtitles(subtitle)
def play_video(channel="",server="",url="",category="",title="", thumbnail="",plot="",extra="",desdefavoritos=False,desdedescargados=False,desderrordescargas=False,strmfile=False,Serie="",subtitle="", video_password="",fulltitle=""): from servers import servertools import sys import xbmcgui,xbmc try: logger.info("[xbmctools.py] play_video(channel=%s, server=%s, url=%s, category=%s, title=%s, thumbnail=%s, plot=%s, desdefavoritos=%s, desdedescargados=%s, desderrordescargas=%s, strmfile=%s, Serie=%s, subtitle=%s" % (channel,server,url,category,title,thumbnail,plot,desdefavoritos,desdedescargados,desderrordescargas,strmfile,Serie,subtitle)) except: pass try: server = server.lower() except: server = "" if server=="": server="directo" try: from core import descargas download_enable=True except: download_enable=False view = False # Abre el diálogo de selección opciones = [] default_action = config.get_setting("default_action") logger.info("default_action="+default_action) # Si no es el modo normal, no muestra el diálogo porque cuelga XBMC muestra_dialogo = (config.get_setting("player_mode")=="0" and not strmfile) # Extrae las URL de los vídeos, y si no puedes verlo te dice el motivo video_urls,puedes,motivo = servertools.resolve_video_urls_for_playing(server,url,video_password,muestra_dialogo) # Si puedes ver el vídeo, presenta las opciones if puedes: for video_url in video_urls: opciones.append(config.get_localized_string(30151) + " " + video_url[0]) if server=="local": opciones.append(config.get_localized_string(30164)) else: if download_enable: opcion = config.get_localized_string(30153) opciones.append(opcion) # "Descargar" if channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" else: opciones.append(config.get_localized_string(30155)) # "Añadir a favoritos" if not strmfile: opciones.append(config.get_localized_string(30161)) # "Añadir a Biblioteca" if download_enable: if channel!="descargas": opciones.append(config.get_localized_string(30157)) # "Añadir a lista de descargas" else: if category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" opciones.append(config.get_localized_string(30160)) # "Pasar de nuevo a lista de descargas" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" if config.get_setting("jdownloader_enabled")=="true": opciones.append(config.get_localized_string(30158)) # "Enviar a JDownloader" if config.get_setting("pyload_enabled")=="true": opciones.append(config.get_localized_string(30158).replace("jDownloader","pyLoad")) # "Enviar a pyLoad" if default_action=="3": seleccion = len(opciones)-1 # Busqueda de trailers en youtube if not channel in ["Trailer","ecarteleratrailers"]: opciones.append(config.get_localized_string(30162)) # "Buscar Trailer" # Si no puedes ver el vídeo te informa else: import xbmcgui if server!="": advertencia = xbmcgui.Dialog() if "<br/>" in motivo: resultado = advertencia.ok( "Non è possibile guardare il video perché...",motivo.split("<br/>")[0],motivo.split("<br/>")[1],url) else: resultado = advertencia.ok( "Non è possibile guardare il video perché...",motivo,url) else: resultado = advertencia.ok( "Non è possibile guardare il video perché...","Il server che lo ospita non è","ancora supportato da streamondemand",url) if channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" if channel=="descargas": if category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" if len(opciones)==0: return # Si la accion por defecto es "Preguntar", pregunta if default_action=="0": # and server!="torrent": import xbmcgui dia = xbmcgui.Dialog() seleccion = dia.select(config.get_localized_string(30163), opciones) # "Elige una opción" #dia.close() ''' elif default_action=="0" and server=="torrent": advertencia = xbmcgui.Dialog() logger.info("video_urls[0]="+str(video_urls[0][1])) if puedes and ('"status":"COMPLETED"' in video_urls[0][1] or '"percent_done":100' in video_urls[0][1]): listo = "y está listo para ver" else: listo = "y se está descargando" resultado = advertencia.ok( "Torrent" , "El torrent ha sido añadido a la lista" , listo ) seleccion=-1 ''' elif default_action=="1": seleccion = 0 elif default_action=="2": seleccion = len(video_urls)-1 elif default_action=="3": seleccion = seleccion else: seleccion=0 logger.info("seleccion=%d" % seleccion) logger.info("seleccion=%s" % opciones[seleccion]) # No ha elegido nada, lo más probable porque haya dado al ESC if seleccion==-1: #Para evitar el error "Uno o más elementos fallaron" al cancelar la selección desde fichero strm listitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) import sys xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),False,listitem) # JUR Added #if config.get_setting("subtitulo") == "true": # config.set_setting("subtitulo", "false") return if opciones[seleccion]==config.get_localized_string(30158): # "Enviar a JDownloader" #d = {"web": url}urllib.urlencode(d) from core import scrapertools if subtitle!="": data = scrapertools.cachePage(config.get_setting("jdownloader")+"/action/add/links/grabber0/start1/web="+url+ " " +thumbnail + " " + subtitle) else: data = scrapertools.cachePage(config.get_setting("jdownloader")+"/action/add/links/grabber0/start1/web="+url+ " " +thumbnail) return if opciones[seleccion]==config.get_localized_string(30158).replace("jDownloader","pyLoad"): # "Enviar a pyLoad" logger.info("Enviando a pyload...") if Serie!="": package_name = Serie else: package_name = "streamondemand" from core import pyload_client pyload_client.download(url=url,package_name=package_name) return elif opciones[seleccion]==config.get_localized_string(30164): # Borrar archivo en descargas # En "extra" está el nombre del fichero en favoritos import os os.remove( url ) xbmc.executebuiltin( "Container.Refresh" ) return # Ha elegido uno de los vídeos elif seleccion < len(video_urls): mediaurl = video_urls[seleccion][1] if len(video_urls[seleccion])>2: wait_time = video_urls[seleccion][2] else: wait_time = 0 view = True # Descargar elif opciones[seleccion]==config.get_localized_string(30153): # "Descargar" import xbmc # El vídeo de más calidad es el último mediaurl = video_urls[len(video_urls)-1][1] from core import downloadtools keyboard = xbmc.Keyboard(fulltitle) keyboard.doModal() if (keyboard.isConfirmed()): title = keyboard.getText() devuelve = downloadtools.downloadbest(video_urls,title) if devuelve==0: advertencia = xbmcgui.Dialog() resultado = advertencia.ok("plugin" , "Scaricato con successo") elif devuelve==-1: advertencia = xbmcgui.Dialog() resultado = advertencia.ok("plugin" , "Download interrotto") else: advertencia = xbmcgui.Dialog() resultado = advertencia.ok("plugin" , "Errore nel download") return elif opciones[seleccion]==config.get_localized_string(30154): #"Quitar de favoritos" from core import favoritos # En "extra" está el nombre del fichero en favoritos favoritos.deletebookmark(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30105)) # 'Se ha quitado de favoritos' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30159): #"Borrar descarga definitivamente" from core import descargas descargas.delete_error_bookmark(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de la lista' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30160): #"Pasar de nuevo a lista de descargas": from core import descargas descargas.mover_descarga_error_a_pendiente(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30107)) # 'Ha pasado de nuevo a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30155): #"Añadir a favoritos": from core import favoritos from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(fulltitle)+" ["+channel+"]") keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() favoritos.savebookmark(titulo=title,url=url,thumbnail=thumbnail,server=server,plot=plot,fulltitle=title) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30108)) # 'se ha añadido a favoritos' return elif opciones[seleccion]==config.get_localized_string(30156): #"Quitar de lista de descargas": from core import descargas # La categoría es el nombre del fichero en la lista de descargas descargas.deletebookmark((urllib.unquote_plus( extra ))) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de lista de descargas' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30157): #"Añadir a lista de descargas": from core import descargas from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(fulltitle)) keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() descargas.savebookmark(titulo=title,url=url,thumbnail=thumbnail,server=server,plot=plot,fulltitle=title) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30109)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30161): #"Añadir a Biblioteca": # Library from platformcode import library titulo = fulltitle if fulltitle=="": titulo = title library.savelibrary(titulo,url,thumbnail,server,plot,canal=channel,category=category,Serie=Serie) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , fulltitle , config.get_localized_string(30135)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30162): #"Buscar Trailer": config.set_setting("subtitulo", "false") import sys xbmc.executebuiltin("Container.Update(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s)" % ( sys.argv[ 0 ] , "trailertools" , "buscartrailer" , urllib.quote_plus( category ) , urllib.quote_plus( fulltitle ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( "" ) , server )) return # Si no hay mediaurl es porque el vídeo no está :) logger.info("[xbmctools.py] mediaurl="+mediaurl) if mediaurl=="": logger.info("b1") if server == "unknown": alertUnsopportedServer() else: alertnodisponibleserver(server) return # Si hay un tiempo de espera (como en megaupload), lo impone ahora if wait_time>0: logger.info("b2") continuar = handle_wait(wait_time,server,"Caricamento vídeo...") if not continuar: return # Obtención datos de la Biblioteca (solo strms que estén en la biblioteca) import xbmcgui if strmfile: logger.info("b3") xlistitem = getLibraryInfo(mediaurl) else: logger.info("b4") try: xlistitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail, path=mediaurl) except: xlistitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) xlistitem.setInfo( "video", { "Title": title, "Plot" : plot , "Studio" : channel , "Genre" : category } ) # Descarga el subtitulo if channel=="cuevana" and subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): logger.info("b5") try: import os ficherosubtitulo = os.path.join( config.get_data_path(), 'subtitulo.srt' ) if os.path.exists(ficherosubtitulo): try: os.remove(ficherosubtitulo) except IOError: logger.info("Errore nell'eliminazione del file subtitulo.srt "+ficherosubtitulo) raise from core import scrapertools data = scrapertools.cache_page(subtitle) #print data fichero = open(ficherosubtitulo,"w") fichero.write(data) fichero.close() #from core import downloadtools #downloadtools.downloadfile(subtitle, ficherosubtitulo ) except: logger.info("Errore nel download del sottotitolo") # Lanza el reproductor if strmfile: #Si es un fichero strm no hace falta el play logger.info("b6") import sys xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),True,xlistitem) #if subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): # logger.info("[xbmctools.py] Con subtitulos") # setSubtitles() else: logger.info("b7") logger.info("player_mode="+config.get_setting("player_mode")) logger.info("mediaurl="+mediaurl) if config.get_setting("player_mode")=="3" or "megacrypter.com" in mediaurl: logger.info("b11") import download_and_play download_and_play.download_and_play( mediaurl , "download_and_play.tmp" , config.get_setting("downloadpath") ) return elif config.get_setting("player_mode")=="0" or (config.get_setting("player_mode")=="3" and mediaurl.startswith("rtmp")): logger.info("b8") # Añadimos el listitem a una lista de reproducción (playlist) playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO ) playlist.clear() playlist.add( mediaurl, xlistitem ) # Reproduce playersettings = config.get_setting('player_type') logger.info("[xbmctools.py] playersettings="+playersettings) player_type = xbmc.PLAYER_CORE_AUTO if playersettings == "0": player_type = xbmc.PLAYER_CORE_AUTO logger.info("[xbmctools.py] PLAYER_CORE_AUTO") elif playersettings == "1": player_type = xbmc.PLAYER_CORE_MPLAYER logger.info("[xbmctools.py] PLAYER_CORE_MPLAYER") elif playersettings == "2": player_type = xbmc.PLAYER_CORE_DVDPLAYER logger.info("[xbmctools.py] PLAYER_CORE_DVDPLAYER") xbmcPlayer = xbmc.Player( player_type ) xbmcPlayer.play(playlist) if channel=="cuevana" and subtitle!="": logger.info("subtitulo="+subtitle) if subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): logger.info("[xbmctools.py] Con subtitulos") setSubtitles() elif config.get_setting("player_mode")=="1": logger.info("b9") #xlistitem.setProperty('IsPlayable', 'true') #xlistitem.setProperty('path', mediaurl) xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path=mediaurl)) elif config.get_setting("player_mode")=="2": logger.info("b10") xbmc.executebuiltin( "PlayMedia("+mediaurl+")" ) # Descarga en segundo plano para vidxden, sólo en modo free ''' elif server=="vidxden" and seleccion==0: from core import downloadtools import thread,os import xbmc logger.info("[xbmctools.py] ---------------------------------") logger.info("[xbmctools.py] DESCARGA EN SEGUNDO PLANO") logger.info("[xbmctools.py] de "+mediaurl) temp_file = config.get_temp_file("background.file") if os.path.exists(temp_file): os.remove(temp_file) logger.info("[xbmctools.py] a "+temp_file) logger.info("[xbmctools.py] ---------------------------------") thread.start_new_thread(downloadtools.downloadfile, (mediaurl,temp_file), {'silent':True}) handle_wait(60,"Descarga en segundo plano","Se está descargando un trozo antes de empezar") playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO ) playlist.clear() playlist.add( temp_file, xlistitem ) player_type = xbmc.PLAYER_CORE_AUTO xbmcPlayer = xbmc.Player( player_type ) xbmcPlayer.play(playlist) while xbmcPlayer.isPlaying(): xbmc.sleep(5000) logger.info("sigo aquí...") logger.info("fin") ''' if config.get_setting("subtitulo") == "true" and view: logger.info("b11") from platformcode import subtitletools wait2second() subtitletools.set_Subtitle() if subtitle!="": xbmc.Player().setSubtitles(subtitle) #FIXME: Qué cosa más fea... elif channel=="moviezet": xbmc.Player().setSubtitles(subtitle)
def downloadall(item): logger.info("[descargas.py] downloadall") # Lee la lista de ficheros if usingsamba: ficheros = samba.get_files(DOWNLOAD_LIST_PATH) else: ficheros = os.listdir(DOWNLOAD_LIST_PATH) logger.info("[descargas.py] numero de ficheros=%d" % len(ficheros)) # La ordena ficheros.sort() # Crea un listado con las entradas de favoritos for fichero in ficheros: # El primer video de la lista logger.info("[descargas.py] fichero=" + fichero) if fichero != "error" and fichero != ".DS_Store": # Descarga el vídeo try: # Lee el bookmark canal, titulo, thumbnail, plot, server, url, fulltitle = favoritos.readbookmark( fichero, DOWNLOAD_LIST_PATH) logger.info("[descargas.py] url=" + url) # Averigua la URL del vídeo video_urls, puedes, motivo = servertools.resolve_video_urls_for_playing( server, url, "", False) # La última es la de mayor calidad, lo mejor para la descarga mediaurl = video_urls[len(video_urls) - 1][1] logger.info("[descargas.py] mediaurl=" + mediaurl) # Genera el NFO nfofilepath = downloadtools.getfilefromtitle( "sample.nfo", fulltitle) outfile = open(nfofilepath, "w") outfile.write("<movie>\n") outfile.write("<title>(" + fulltitle + ")</title>\n") outfile.write("<originaltitle></originaltitle>\n") outfile.write("<rating>0.000000</rating>\n") outfile.write("<year>2009</year>\n") outfile.write("<top250>0</top250>\n") outfile.write("<votes>0</votes>\n") outfile.write("<outline></outline>\n") outfile.write("<plot>" + plot + "</plot>\n") outfile.write("<tagline></tagline>\n") outfile.write("<runtime></runtime>\n") outfile.write("<thumb></thumb>\n") outfile.write("<mpaa>Not available</mpaa>\n") outfile.write("<playcount>0</playcount>\n") outfile.write("<watched>false</watched>\n") outfile.write("<id>tt0432337</id>\n") outfile.write("<filenameandpath></filenameandpath>\n") outfile.write("<trailer></trailer>\n") outfile.write("<genre></genre>\n") outfile.write("<credits></credits>\n") outfile.write("<director></director>\n") outfile.write("<actor>\n") outfile.write("<name></name>\n") outfile.write("<role></role>\n") outfile.write("</actor>\n") outfile.write("</movie>") outfile.flush() outfile.close() logger.info("[descargas.py] Creado fichero NFO") # Descarga el thumbnail if thumbnail != "": logger.info("[descargas.py] thumbnail=" + thumbnail) thumbnailfile = downloadtools.getfilefromtitle( thumbnail, fulltitle) thumbnailfile = thumbnailfile[:-4] + ".tbn" logger.info("[descargas.py] thumbnailfile=" + thumbnailfile) try: downloadtools.downloadfile(thumbnail, thumbnailfile) logger.info("[descargas.py] Thumbnail descargado") except: logger.info( "[descargas.py] error al descargar thumbnail") for line in sys.exc_info(): logger.error("%s" % line) # Descarga el video #dev = downloadtools.downloadtitle(mediaurl,fulltitle) dev = downloadtools.downloadbest(video_urls, fulltitle) if dev == -1: # El usuario ha cancelado la descarga logger.info("[descargas.py] Descarga cancelada") return elif dev == -2: # Error en la descarga, lo mueve a ERROR y continua con el siguiente logger.info("[descargas.py] ERROR EN DESCARGA DE " + fichero) if not usingsamba: origen = os.path.join(DOWNLOAD_LIST_PATH, fichero) destino = os.path.join(ERROR_PATH, fichero) import shutil shutil.move(origen, destino) else: favoritos.savebookmark(canal, titulo, url, thumbnail, server, plot, fulltitle, ERROR_PATH) favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH) else: logger.info("[descargas.py] Video descargado") # Borra el bookmark e itera para obtener el siguiente video filepath = os.path.join(DOWNLOAD_LIST_PATH, fichero) if usingsamba: os.remove(filepath) else: favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH) logger.info("[descargas.py] " + fichero + " borrado") except: logger.info("[descargas.py] ERROR EN DESCARGA DE " + fichero) import sys for line in sys.exc_info(): logger.error("%s" % line) if not usingsamba: origen = os.path.join(DOWNLOAD_LIST_PATH, fichero) destino = os.path.join(ERROR_PATH, fichero) import shutil shutil.move(origen, destino) else: favoritos.savebookmark(canal, titulo, url, thumbnail, server, plot, fulltitle, ERROR_PATH) favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH)
def downloadall(item): logger.info("core.descargas downloadall") # Lee la lista de ficheros if usingsamba: ficheros = samba.get_files(DOWNLOAD_LIST_PATH) else: ficheros = os.listdir(DOWNLOAD_LIST_PATH) logger.info("core.descargas numero de ficheros=%d" % len(ficheros)) # La ordena ficheros.sort() # Crea un listado con las entradas de favoritos for fichero in ficheros: # El primer video de la lista logger.info("core.descargas fichero=" + fichero) if fichero != "error" and fichero != ".DS_Store": # Descarga el vídeo try: # Lee el bookmark canal, titulo, thumbnail, plot, server, url, fulltitle = favoritos.readbookmark( fichero, DOWNLOAD_LIST_PATH) logger.info("core.descargas url=" + url) # Averigua la URL del vídeo exec "from servers import " + server + " as server_connector" video_urls = server_connector.get_video_url( page_url=url, premium=(config.get_setting("megavideopremium") == "true"), user=config.get_setting("megavideouser"), password=config.get_setting("megavideopassword")) if config.get_setting( "fileniumpremium") == "true" and config.get_setting( "filenium_for_download" ) == "true" and server not in [ "vk", "fourshared", "directo", "adnstream", "facebook", "megalive", "tutv", "stagevu" ]: exec "from servers import filenium as gen_conector" # Parche para solucionar el problema habitual de que un vídeo http://www.megavideo.com/?d=XXX no está, pero http://www.megaupload.com/?d=XXX si url = url.replace("http://www.megavideo.com/?d", "http://www.megaupload.com/?d") video_gen = gen_conector.get_video_url( page_url=url, premium=( config.get_setting("fileniumpremium") == "true"), user=config.get_setting("fileniumuser"), password=config.get_setting("fileniumpassword")) logger.info("[xbmctools.py] filenium url=" + video_gen) video_urls.append(["[filenium]", video_gen]) # La última es la de mayor calidad, lo mejor para la descarga mediaurl = video_urls[len(video_urls) - 1][1] logger.info("core.descargas mediaurl=" + mediaurl) # Genera el NFO nfofilepath = downloadtools.getfilefromtitle( "sample.nfo", fulltitle) outfile = open(nfofilepath, "w") outfile.write("<movie>\n") outfile.write("<title>(" + fulltitle + ")</title>\n") outfile.write("<originaltitle></originaltitle>\n") outfile.write("<rating>0.000000</rating>\n") outfile.write("<year>2009</year>\n") outfile.write("<top250>0</top250>\n") outfile.write("<votes>0</votes>\n") outfile.write("<outline></outline>\n") outfile.write("<plot>" + plot + "</plot>\n") outfile.write("<tagline></tagline>\n") outfile.write("<runtime></runtime>\n") outfile.write("<thumb></thumb>\n") outfile.write("<mpaa>Not available</mpaa>\n") outfile.write("<playcount>0</playcount>\n") outfile.write("<watched>false</watched>\n") outfile.write("<id>tt0432337</id>\n") outfile.write("<filenameandpath></filenameandpath>\n") outfile.write("<trailer></trailer>\n") outfile.write("<genre></genre>\n") outfile.write("<credits></credits>\n") outfile.write("<director></director>\n") outfile.write("<actor>\n") outfile.write("<name></name>\n") outfile.write("<role></role>\n") outfile.write("</actor>\n") outfile.write("</movie>") outfile.flush() outfile.close() logger.info("core.descargas Creado fichero NFO") # Descarga el thumbnail if thumbnail != "": logger.info("core.descargas thumbnail=" + thumbnail) thumbnailfile = downloadtools.getfilefromtitle( thumbnail, fulltitle) thumbnailfile = thumbnailfile[:-4] + ".tbn" logger.info("core.descargas thumbnailfile=" + thumbnailfile) try: downloadtools.downloadfile(thumbnail, thumbnailfile) logger.info("core.descargas Thumbnail descargado") except: logger.info( "core.descargas error al descargar thumbnail") for line in sys.exc_info(): logger.error("%s" % line) # Descarga el video dev = downloadtools.downloadtitle(mediaurl, fulltitle) if dev == -1: # El usuario ha cancelado la descarga logger.info("core.descargas Descarga cancelada") return elif dev == -2: # Error en la descarga, lo mueve a ERROR y continua con el siguiente logger.info("core.descargas ERROR EN DESCARGA DE " + fichero) if not usingsamba: origen = os.path.join(DOWNLOAD_LIST_PATH, fichero) destino = os.path.join(ERROR_PATH, fichero) import shutil shutil.move(origen, destino) else: favoritos.savebookmark(canal, titulo, url, thumbnail, server, plot, fulltitle, ERROR_PATH) favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH) else: logger.info("core.descargas Video descargado") # Borra el bookmark e itera para obtener el siguiente video filepath = os.path.join(DOWNLOAD_LIST_PATH, fichero) if usingsamba: os.remove(filepath) else: favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH) logger.info("core.descargas " + fichero + " borrado") except: logger.info("core.descargas ERROR EN DESCARGA DE " + fichero) import sys for line in sys.exc_info(): logger.error("%s" % line) if not usingsamba: origen = os.path.join(DOWNLOAD_LIST_PATH, fichero) destino = os.path.join(ERROR_PATH, fichero) import shutil shutil.move(origen, destino) else: favoritos.savebookmark(canal, titulo, url, thumbnail, server, plot, fulltitle, ERROR_PATH) favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH)
def downloadall(item): logger.info("core.descargas downloadall") # Lee la lista de ficheros if usingsamba: ficheros = samba.get_files(DOWNLOAD_LIST_PATH) else: ficheros = os.listdir(DOWNLOAD_LIST_PATH) logger.info("core.descargas numero de ficheros=%d" % len(ficheros)) # La ordena ficheros.sort() # Crea un listado con las entradas de favoritos for fichero in ficheros: # El primer video de la lista logger.info("core.descargas fichero="+fichero) if fichero!="error" and fichero!=".DS_Store": # Descarga el vídeo try: # Lee el bookmark canal,titulo,thumbnail,plot,server,url,fulltitle = favoritos.readbookmark(fichero,DOWNLOAD_LIST_PATH) logger.info("core.descargas url="+url) # Averigua la URL del vídeo exec "from servers import "+server+" as server_connector" video_urls = server_connector.get_video_url( page_url=url , premium=(config.get_setting("megavideopremium")=="true") , user=config.get_setting("megavideouser") , password=config.get_setting("megavideopassword") ) if config.get_setting("fileniumpremium")=="true" and config.get_setting("filenium_for_download")=="true" and server not in ["vk","fourshared","directo","adnstream","facebook","megalive","tutv","stagevu"]: exec "from servers import filenium as gen_conector" # Parche para solucionar el problema habitual de que un vídeo http://www.megavideo.com/?d=XXX no está, pero http://www.megaupload.com/?d=XXX si url = url.replace("http://www.megavideo.com/?d","http://www.megaupload.com/?d") video_gen = gen_conector.get_video_url( page_url=url , premium=(config.get_setting("fileniumpremium")=="true") , user=config.get_setting("fileniumuser") , password=config.get_setting("fileniumpassword") ) logger.info("[xbmctools.py] filenium url="+video_gen) video_urls.append( [ "[filenium]", video_gen ] ) # La última es la de mayor calidad, lo mejor para la descarga mediaurl = video_urls[ len(video_urls)-1 ][1] logger.info("core.descargas mediaurl="+mediaurl) # Genera el NFO nfofilepath = downloadtools.getfilefromtitle("sample.nfo",fulltitle) outfile = open(nfofilepath,"w") outfile.write("<movie>\n") outfile.write("<title>("+fulltitle+")</title>\n") outfile.write("<originaltitle></originaltitle>\n") outfile.write("<rating>0.000000</rating>\n") outfile.write("<year>2009</year>\n") outfile.write("<top250>0</top250>\n") outfile.write("<votes>0</votes>\n") outfile.write("<outline></outline>\n") outfile.write("<plot>"+plot+"</plot>\n") outfile.write("<tagline></tagline>\n") outfile.write("<runtime></runtime>\n") outfile.write("<thumb></thumb>\n") outfile.write("<mpaa>Not available</mpaa>\n") outfile.write("<playcount>0</playcount>\n") outfile.write("<watched>false</watched>\n") outfile.write("<id>tt0432337</id>\n") outfile.write("<filenameandpath></filenameandpath>\n") outfile.write("<trailer></trailer>\n") outfile.write("<genre></genre>\n") outfile.write("<credits></credits>\n") outfile.write("<director></director>\n") outfile.write("<actor>\n") outfile.write("<name></name>\n") outfile.write("<role></role>\n") outfile.write("</actor>\n") outfile.write("</movie>") outfile.flush() outfile.close() logger.info("core.descargas Creado fichero NFO") # Descarga el thumbnail if thumbnail != "": logger.info("core.descargas thumbnail="+thumbnail) thumbnailfile = downloadtools.getfilefromtitle(thumbnail,fulltitle) thumbnailfile = thumbnailfile[:-4] + ".tbn" logger.info("core.descargas thumbnailfile="+thumbnailfile) try: downloadtools.downloadfile(thumbnail,thumbnailfile) logger.info("core.descargas Thumbnail descargado") except: logger.info("core.descargas error al descargar thumbnail") for line in sys.exc_info(): logger.error( "%s" % line ) # Descarga el video dev = downloadtools.downloadtitle(mediaurl,fulltitle) if dev == -1: # El usuario ha cancelado la descarga logger.info("core.descargas Descarga cancelada") return elif dev == -2: # Error en la descarga, lo mueve a ERROR y continua con el siguiente logger.info("core.descargas ERROR EN DESCARGA DE "+fichero) if not usingsamba: origen = os.path.join( DOWNLOAD_LIST_PATH , fichero ) destino = os.path.join( ERROR_PATH , fichero ) import shutil shutil.move( origen , destino ) else: favoritos.savebookmark(canal,titulo, url, thumbnail, server, plot, fulltitle, ERROR_PATH) favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH) else: logger.info("core.descargas Video descargado") # Borra el bookmark e itera para obtener el siguiente video filepath = os.path.join( DOWNLOAD_LIST_PATH , fichero ) if usingsamba: os.remove(filepath) else: favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH) logger.info("core.descargas "+fichero+" borrado") except: logger.info("core.descargas ERROR EN DESCARGA DE "+fichero) import sys for line in sys.exc_info(): logger.error( "%s" % line ) if not usingsamba: origen = os.path.join( DOWNLOAD_LIST_PATH , fichero ) destino = os.path.join( ERROR_PATH , fichero ) import shutil shutil.move( origen , destino ) else: favoritos.savebookmark(canal,titulo, url, thumbnail, server, plot, fulltitle,ERROR_PATH) favoritos.deletebookmark(fichero, DOWNLOAD_LIST_PATH)
def play_video(channel="",server="",url="",category="",title="", thumbnail="",plot="",extra="",desdefavoritos=False,desdedescargados=False,desderrordescargas=False,strmfile=False,Serie="",subtitle="", video_password="",fulltitle=""): from servers import servertools import sys import xbmcgui,xbmc try: logger.info("[xbmctools.py] play_video(channel=%s, server=%s, url=%s, category=%s, title=%s, thumbnail=%s, plot=%s, desdefavoritos=%s, desdedescargados=%s, desderrordescargas=%s, strmfile=%s, Serie=%s, subtitle=%s" % (channel,server,url,category,title,thumbnail,plot,desdefavoritos,desdedescargados,desderrordescargas,strmfile,Serie,subtitle)) except: pass try: server = server.lower() except: server = "" if server=="": server="directo" try: from core import descargas download_enable=True except: download_enable=False view = False # Abre el diálogo de selección opciones = [] default_action = config.get_setting("default_action") logger.info("default_action="+default_action) # Si no es el modo normal, no muestra el diálogo porque cuelga XBMC muestra_dialogo = (config.get_setting("player_mode")=="0" and not strmfile) # Extrae las URL de los vídeos, y si no puedes verlo te dice el motivo video_urls,puedes,motivo = servertools.resolve_video_urls_for_playing(server,url,video_password,muestra_dialogo) # Si puedes ver el vídeo, presenta las opciones if puedes: for video_url in video_urls: opciones.append(config.get_localized_string(30151) + " " + video_url[0]) if server=="local": opciones.append(config.get_localized_string(30164)) else: if download_enable: opcion = config.get_localized_string(30153) opciones.append(opcion) # "Descargar" if channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" else: opciones.append(config.get_localized_string(30155)) # "Añadir a favoritos" if not strmfile: opciones.append(config.get_localized_string(30161)) # "Añadir a Biblioteca" if download_enable: if channel!="descargas": opciones.append(config.get_localized_string(30157)) # "Añadir a lista de descargas" else: if category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" opciones.append(config.get_localized_string(30160)) # "Pasar de nuevo a lista de descargas" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" if config.get_setting("jdownloader_enabled")=="true": opciones.append(config.get_localized_string(30158)) # "Enviar a JDownloader" if config.get_setting("pyload_enabled")=="true": opciones.append(config.get_localized_string(30158).replace("jDownloader","pyLoad")) # "Enviar a pyLoad" if default_action=="3": seleccion = len(opciones)-1 # Busqueda de trailers en youtube if not channel in ["Trailer","ecarteleratrailers"]: opciones.append(config.get_localized_string(30162)) # "Buscar Trailer" # Si no puedes ver el vídeo te informa else: import xbmcgui if server!="": advertencia = xbmcgui.Dialog() if "<br/>" in motivo: resultado = advertencia.ok( "Non è possibile guardare il video perché...",motivo.split("<br/>")[0],motivo.split("<br/>")[1],url) else: resultado = advertencia.ok( "Non è possibile guardare il video perché...",motivo,url) else: resultado = advertencia.ok( "Non è possibile guardare il video perché...","Il server che lo ospita non è","ancora supportato da streamondemand",url) if channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" if channel=="descargas": if category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" if len(opciones)==0: return # Si la accion por defecto es "Preguntar", pregunta if default_action=="0": # and server!="torrent": import xbmcgui dia = xbmcgui.Dialog() seleccion = dia.select(config.get_localized_string(30163), opciones) # "Elige una opción" #dia.close() ''' elif default_action=="0" and server=="torrent": advertencia = xbmcgui.Dialog() logger.info("video_urls[0]="+str(video_urls[0][1])) if puedes and ('"status":"COMPLETED"' in video_urls[0][1] or '"percent_done":100' in video_urls[0][1]): listo = "y está listo para ver" else: listo = "y se está descargando" resultado = advertencia.ok( "Torrent" , "El torrent ha sido añadido a la lista" , listo ) seleccion=-1 ''' elif default_action=="1": seleccion = 0 elif default_action=="2": seleccion = len(video_urls)-1 elif default_action=="3": seleccion = seleccion else: seleccion=0 logger.info("seleccion=%d" % seleccion) logger.info("seleccion=%s" % opciones[seleccion]) # No ha elegido nada, lo más probable porque haya dado al ESC if seleccion==-1: #Para evitar el error "Uno o más elementos fallaron" al cancelar la selección desde fichero strm listitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) import sys xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),False,listitem) # JUR Added #if config.get_setting("subtitulo") == "true": # config.set_setting("subtitulo", "false") return if opciones[seleccion]==config.get_localized_string(30158): # "Enviar a JDownloader" #d = {"web": url}urllib.urlencode(d) from core import scrapertools if subtitle!="": data = scrapertools.cache_page(config.get_setting("jdownloader")+"/action/add/links/grabber0/start1/web="+url+ " " +thumbnail + " " + subtitle) else: data = scrapertools.cache_page(config.get_setting("jdownloader")+"/action/add/links/grabber0/start1/web="+url+ " " +thumbnail) return if opciones[seleccion]==config.get_localized_string(30158).replace("jDownloader","pyLoad"): # "Enviar a pyLoad" logger.info("Enviando a pyload...") if Serie!="": package_name = Serie else: package_name = "streamondemand" from core import pyload_client pyload_client.download(url=url,package_name=package_name) return elif opciones[seleccion]==config.get_localized_string(30164): # Borrar archivo en descargas # En "extra" está el nombre del fichero en favoritos import os os.remove( url ) xbmc.executebuiltin( "Container.Refresh" ) return # Ha elegido uno de los vídeos elif seleccion < len(video_urls): mediaurl = video_urls[seleccion][1] if len(video_urls[seleccion])>2: wait_time = video_urls[seleccion][2] else: wait_time = 0 view = True # Descargar elif opciones[seleccion]==config.get_localized_string(30153): # "Descargar" import xbmc # El vídeo de más calidad es el último mediaurl = video_urls[len(video_urls)-1][1] from core import downloadtools keyboard = xbmc.Keyboard(fulltitle) keyboard.doModal() if (keyboard.isConfirmed()): title = keyboard.getText() devuelve = downloadtools.downloadbest(video_urls,title) if devuelve==0: advertencia = xbmcgui.Dialog() resultado = advertencia.ok("plugin" , "Scaricato con successo") elif devuelve==-1: advertencia = xbmcgui.Dialog() resultado = advertencia.ok("plugin" , "Download interrotto") else: advertencia = xbmcgui.Dialog() resultado = advertencia.ok("plugin" , "Errore nel download") return elif opciones[seleccion]==config.get_localized_string(30154): #"Quitar de favoritos" from core import favoritos # En "extra" está el nombre del fichero en favoritos favoritos.deletebookmark(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30105)) # 'Se ha quitado de favoritos' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30159): #"Borrar descarga definitivamente" from core import descargas descargas.delete_error_bookmark(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de la lista' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30160): #"Pasar de nuevo a lista de descargas": from core import descargas descargas.mover_descarga_error_a_pendiente(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30107)) # 'Ha pasado de nuevo a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30155): #"Añadir a favoritos": from core import favoritos from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(fulltitle)+" ["+channel+"]") keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() favoritos.savebookmark(titulo=title,url=url,thumbnail=thumbnail,server=server,plot=plot,fulltitle=title) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30108)) # 'se ha añadido a favoritos' return elif opciones[seleccion]==config.get_localized_string(30156): #"Quitar de lista de descargas": from core import descargas # La categoría es el nombre del fichero en la lista de descargas descargas.deletebookmark((urllib.unquote_plus( extra ))) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de lista de descargas' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30157): #"Añadir a lista de descargas": from core import descargas from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(fulltitle)) keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() descargas.savebookmark(titulo=title,url=url,thumbnail=thumbnail,server=server,plot=plot,fulltitle=title) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30109)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30161): #"Añadir a Biblioteca": # Library from platformcode import library titulo = fulltitle if fulltitle=="": titulo = title library.savelibrary(titulo,url,thumbnail,server,plot,canal=channel,category=category,Serie=Serie) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , fulltitle , config.get_localized_string(30135)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30162): #"Buscar Trailer": config.set_setting("subtitulo", "false") import sys xbmc.executebuiltin("Container.Update(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s)" % ( sys.argv[ 0 ] , "trailertools" , "buscartrailer" , urllib.quote_plus( category ) , urllib.quote_plus( fulltitle ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( "" ) , server )) return # Si no hay mediaurl es porque el vídeo no está :) logger.info("[xbmctools.py] mediaurl="+mediaurl) if mediaurl=="": logger.info("b1") if server == "unknown": alertUnsopportedServer() else: alertnodisponibleserver(server) return # Si hay un tiempo de espera (como en megaupload), lo impone ahora if wait_time>0: logger.info("b2") continuar = handle_wait(wait_time,server,"Caricamento vídeo...") if not continuar: return # Obtención datos de la Biblioteca (solo strms que estén en la biblioteca) import xbmcgui if strmfile: logger.info("b3") xlistitem = getLibraryInfo(mediaurl) else: logger.info("b4") try: xlistitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail, path=mediaurl) except: xlistitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) xlistitem.setInfo( "video", { "Title": title, "Plot" : plot , "Studio" : channel , "Genre" : category } ) # Descarga el subtitulo if channel=="cuevana" and subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): logger.info("b5") try: import os ficherosubtitulo = os.path.join( config.get_data_path(), 'subtitulo.srt' ) if os.path.exists(ficherosubtitulo): try: os.remove(ficherosubtitulo) except IOError: logger.info("Errore nell'eliminazione del file subtitulo.srt "+ficherosubtitulo) raise from core import scrapertools data = scrapertools.cache_page(subtitle) #print data fichero = open(ficherosubtitulo,"w") fichero.write(data) fichero.close() #from core import downloadtools #downloadtools.downloadfile(subtitle, ficherosubtitulo ) except: logger.info("Errore nel download del sottotitolo") # Lanza el reproductor if strmfile: #Si es un fichero strm no hace falta el play logger.info("b6") import sys xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),True,xlistitem) #if subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): # logger.info("[xbmctools.py] Con subtitulos") # setSubtitles() else: logger.info("b7") logger.info("player_mode="+config.get_setting("player_mode")) logger.info("mediaurl="+mediaurl) if config.get_setting("player_mode")=="3" or "megacrypter.com" in mediaurl: logger.info("b11") import download_and_play download_and_play.download_and_play( mediaurl , "download_and_play.tmp" , config.get_setting("downloadpath") ) return elif config.get_setting("player_mode")=="0" or (config.get_setting("player_mode")=="3" and mediaurl.startswith("rtmp")): logger.info("b8") # Añadimos el listitem a una lista de reproducción (playlist) playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO ) playlist.clear() playlist.add( mediaurl, xlistitem ) # Reproduce # playersettings = config.get_setting('player_type') # logger.info("[xbmctools.py] playersettings="+playersettings) # player_type = xbmc.PLAYER_CORE_AUTO # if playersettings == "0": # player_type = xbmc.PLAYER_CORE_AUTO # logger.info("[xbmctools.py] PLAYER_CORE_AUTO") # elif playersettings == "1": # player_type = xbmc.PLAYER_CORE_MPLAYER # logger.info("[xbmctools.py] PLAYER_CORE_MPLAYER") # elif playersettings == "2": # player_type = xbmc.PLAYER_CORE_DVDPLAYER # logger.info("[xbmctools.py] PLAYER_CORE_DVDPLAYER") xbmcPlayer = xbmc.Player() xbmcPlayer.play(playlist) if channel=="cuevana" and subtitle!="": logger.info("subtitulo="+subtitle) if subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): logger.info("[xbmctools.py] Con subtitulos") setSubtitles() elif config.get_setting("player_mode")=="1": logger.info("b9") #xlistitem.setProperty('IsPlayable', 'true') #xlistitem.setProperty('path', mediaurl) xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path=mediaurl)) elif config.get_setting("player_mode")=="2": logger.info("b10") xbmc.executebuiltin( "PlayMedia("+mediaurl+")" ) # Descarga en segundo plano para vidxden, sólo en modo free ''' elif server=="vidxden" and seleccion==0: from core import downloadtools import thread,os import xbmc logger.info("[xbmctools.py] ---------------------------------") logger.info("[xbmctools.py] DESCARGA EN SEGUNDO PLANO") logger.info("[xbmctools.py] de "+mediaurl) temp_file = config.get_temp_file("background.file") if os.path.exists(temp_file): os.remove(temp_file) logger.info("[xbmctools.py] a "+temp_file) logger.info("[xbmctools.py] ---------------------------------") thread.start_new_thread(downloadtools.downloadfile, (mediaurl,temp_file), {'silent':True}) handle_wait(60,"Descarga en segundo plano","Se está descargando un trozo antes de empezar") playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO ) playlist.clear() playlist.add( temp_file, xlistitem ) player_type = xbmc.PLAYER_CORE_AUTO xbmcPlayer = xbmc.Player( player_type ) xbmcPlayer.play(playlist) while xbmcPlayer.isPlaying(): xbmc.sleep(5000) logger.info("sigo aquí...") logger.info("fin") ''' if config.get_setting("subtitulo") == "true" and view: logger.info("b11") from platformcode import subtitletools wait2second() subtitletools.set_Subtitle() if subtitle!="": xbmc.Player().setSubtitles(subtitle) #FIXME: Qué cosa más fea... elif channel=="moviezet": xbmc.Player().setSubtitles(subtitle)
def play_video(item,desdefavoritos=False,desdedescargados=False,desderrordescargas=False,strmfile=False): from servers import servertools import sys import xbmcgui,xbmc logger.info("[xbmctools.py] play_video") logger.info(item.tostring()) try: item.server = item.server.lower() except: item.server = "" if item.server=="": item.server="directo" try: from core import descargas download_enable=True except: download_enable=False view = False # Abre el diálogo de selección opciones = [] default_action = config.get_setting("default_action") logger.info("default_action="+default_action) # Si no es el modo normal, no muestra el diálogo porque cuelga XBMC muestra_dialogo = (config.get_setting("player_mode")=="0" and not strmfile) # Extrae las URL de los vídeos, y si no puedes verlo te dice el motivo video_urls,puedes,motivo = servertools.resolve_video_urls_for_playing(item.server,item.url,item.password,muestra_dialogo) # Si puedes ver el vídeo, presenta las opciones if puedes: for video_url in video_urls: opciones.append(config.get_localized_string(30151) + " " + video_url[0]) if item.server=="local": opciones.append(config.get_localized_string(30164)) else: if download_enable: opcion = config.get_localized_string(30153) opciones.append(opcion) # "Descargar" if item.channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" else: opciones.append(config.get_localized_string(30155)) # "Añadir a favoritos" if not strmfile: opciones.append(config.get_localized_string(30161)) # "Añadir a Biblioteca" if download_enable: if item.channel!="descargas": opciones.append(config.get_localized_string(30157)) # "Añadir a lista de descargas" else: if item.category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" opciones.append(config.get_localized_string(30160)) # "Pasar de nuevo a lista de descargas" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" if config.get_setting("jdownloader_enabled")=="true": opciones.append(config.get_localized_string(30158)) # "Enviar a JDownloader" if config.get_setting("pyload_enabled")=="true": opciones.append(config.get_localized_string(30158).replace("jDownloader","pyLoad")) # "Enviar a pyLoad" if default_action=="3": seleccion = len(opciones)-1 # Busqueda de trailers en youtube if not item.channel in ["Trailer","ecarteleratrailers"]: opciones.append(config.get_localized_string(30162)) # "Buscar Trailer" # Si no puedes ver el vídeo te informa else: import xbmcgui if item.server!="": advertencia = xbmcgui.Dialog() if "<br/>" in motivo: resultado = advertencia.ok( "No puedes ver ese vídeo porque...",motivo.split("<br/>")[0],motivo.split("<br/>")[1],item.url) else: resultado = advertencia.ok( "No puedes ver ese vídeo porque...",motivo,item.url) else: resultado = advertencia.ok( "No puedes ver ese vídeo porque...","El servidor donde está alojado no está","soportado en pelisalacarta todavía",item.url) if item.channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" if item.channel=="descargas": if item.category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" if len(opciones)==0: return # Si la accion por defecto es "Preguntar", pregunta if default_action=="0": # and server!="torrent": import xbmcgui dia = xbmcgui.Dialog() seleccion = dia.select(config.get_localized_string(30163), opciones) # "Elige una opción" #dia.close() ''' elif default_action=="0" and server=="torrent": advertencia = xbmcgui.Dialog() logger.info("video_urls[0]="+str(video_urls[0][1])) if puedes and ('"status":"COMPLETED"' in video_urls[0][1] or '"percent_done":100' in video_urls[0][1]): listo = "y está listo para ver" else: listo = "y se está descargando" resultado = advertencia.ok( "Torrent" , "El torrent ha sido añadido a la lista" , listo ) seleccion=-1 ''' elif default_action=="1": seleccion = 0 elif default_action=="2": seleccion = len(video_urls)-1 elif default_action=="3": seleccion = seleccion else: seleccion=0 logger.info("seleccion=%d" % seleccion) logger.info("seleccion=%s" % opciones[seleccion]) # No ha elegido nada, lo más probable porque haya dado al ESC if seleccion==-1: #Para evitar el error "Uno o más elementos fallaron" al cancelar la selección desde fichero strm listitem = xbmcgui.ListItem( item.title, iconImage="DefaultVideo.png", thumbnailImage=item.thumbnail) import sys xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),False,listitem) # JUR Added #if config.get_setting("subtitulo") == "true": # config.set_setting("subtitulo", "false") return if opciones[seleccion]==config.get_localized_string(30158): # "Enviar a JDownloader" #d = {"web": url}urllib.urlencode(d) from core import scrapertools if item.subtitle!="": data = scrapertools.cachePage(config.get_setting("jdownloader")+"/action/add/links/grabber0/start1/web="+item.url+ " " +item.thumbnail + " " + item.subtitle) else: data = scrapertools.cachePage(config.get_setting("jdownloader")+"/action/add/links/grabber0/start1/web="+item.url+ " " +item.thumbnail) return if opciones[seleccion]==config.get_localized_string(30158).replace("jDownloader","pyLoad"): # "Enviar a pyLoad" logger.info("Enviando a pyload...") if item.show!="": package_name = item.show else: package_name = "pelisalacarta" from core import pyload_client pyload_client.download(url=item.url,package_name=package_name) return elif opciones[seleccion]==config.get_localized_string(30164): # Borrar archivo en descargas # En "extra" está el nombre del fichero en favoritos import os os.remove( item.url ) xbmc.executebuiltin( "Container.Refresh" ) return # Ha elegido uno de los vídeos elif seleccion < len(video_urls): mediaurl = video_urls[seleccion][1] if len(video_urls[seleccion])>3: wait_time = video_urls[seleccion][2] item.subtitle = video_urls[seleccion][3] elif len(video_urls[seleccion])>2: wait_time = video_urls[seleccion][2] else: wait_time = 0 view = True # Descargar elif opciones[seleccion]==config.get_localized_string(30153): # "Descargar" download_title = item.fulltitle if item.hasContentDetails=="true": download_title = item.contentTitle import xbmc # El vídeo de más calidad es el último mediaurl = video_urls[len(video_urls)-1][1] from core import downloadtools keyboard = xbmc.Keyboard(download_title) keyboard.doModal() if (keyboard.isConfirmed()): download_title = keyboard.getText() devuelve = downloadtools.downloadbest(video_urls,download_title) if devuelve==0: advertencia = xbmcgui.Dialog() resultado = advertencia.ok("plugin" , "Descargado con éxito") elif devuelve==-1: advertencia = xbmcgui.Dialog() resultado = advertencia.ok("plugin" , "Descarga abortada") else: advertencia = xbmcgui.Dialog() resultado = advertencia.ok("plugin" , "Error en la descarga") return elif opciones[seleccion]==config.get_localized_string(30154): #"Quitar de favoritos" from core import favoritos # En "extra" está el nombre del fichero en favoritos favoritos.deletebookmark(urllib.unquote_plus( item.extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , item.title , config.get_localized_string(30105)) # 'Se ha quitado de favoritos' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30159): #"Borrar descarga definitivamente" from core import descargas descargas.delete_error_bookmark(urllib.unquote_plus( item.extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , item.title , config.get_localized_string(30106)) # 'Se ha quitado de la lista' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30160): #"Pasar de nuevo a lista de descargas": from core import descargas descargas.mover_descarga_error_a_pendiente(urllib.unquote_plus( item.extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , item.title , config.get_localized_string(30107)) # 'Ha pasado de nuevo a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30155): #"Añadir a favoritos": from core import favoritos from core import downloadtools download_title = item.fulltitle download_thumbnail = item.thumbnail download_plot = item.plot if item.hasContentDetails=="true": download_title = item.contentTitle download_thumbnail = item.contentThumbnail download_plot = item.contentPlot keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(download_title)+" ["+item.channel+"]") keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() favoritos.savebookmark(titulo=download_title,url=item.url,thumbnail=download_thumbnail,server=item.server,plot=download_plot,fulltitle=item.title) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , item.title , config.get_localized_string(30108)) # 'se ha añadido a favoritos' return elif opciones[seleccion]==config.get_localized_string(30156): #"Quitar de lista de descargas": from core import descargas # La categoría es el nombre del fichero en la lista de descargas descargas.deletebookmark((urllib.unquote_plus( item.extra ))) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , item.title , config.get_localized_string(30106)) # 'Se ha quitado de lista de descargas' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30157): #"Añadir a lista de descargas": from core import descargas from core import downloadtools download_title = item.fulltitle download_thumbnail = item.thumbnail download_plot = item.plot if item.hasContentDetails=="true": download_title = item.contentTitle download_thumbnail = item.contentThumbnail download_plot = item.contentPlot keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(download_title)) keyboard.doModal() if keyboard.isConfirmed(): download_title = keyboard.getText() descargas.savebookmark(titulo=download_title,url=item.url,thumbnail=download_thumbnail,server=item.server,plot=download_plot,fulltitle=download_title) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , download_title , config.get_localized_string(30109)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30161): #"Añadir a Biblioteca": # Library from platformcode import library titulo = item.fulltitle if item.fulltitle=="": titulo = item.title library.savelibrary(titulo,item.url,item.thumbnail,item.server,item.plot,canal=item.channel,category=item.category,Serie=item.show) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , titulo , config.get_localized_string(30135)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30162): #"Buscar Trailer": config.set_setting("subtitulo", "false") import sys xbmc.executebuiltin("Container.Update(%s?%s)" % ( sys.argv[ 0 ] , item.clone(channel="trailertools", action="buscartrailer").tourl())) return # Si no hay mediaurl es porque el vídeo no está :) logger.info("[xbmctools.py] mediaurl="+mediaurl) if mediaurl=="": logger.info("b1") if server == "unknown": alertUnsopportedServer() else: alertnodisponibleserver(item.server) return # Si hay un tiempo de espera (como en megaupload), lo impone ahora if wait_time>0: logger.info("b2") continuar = handle_wait(wait_time,server,"Cargando vídeo...") if not continuar: return # Obtención datos de la Biblioteca (solo strms que estén en la biblioteca) import xbmcgui if strmfile: logger.info("b3") xlistitem = getLibraryInfo(mediaurl) else: logger.info("b4") play_title = item.fulltitle play_thumbnail = item.thumbnail play_plot = item.plot if item.hasContentDetails=="true": play_title = item.contentTitle play_thumbnail = item.contentThumbnail play_plot = item.contentPlot try: xlistitem = xbmcgui.ListItem( play_title, iconImage="DefaultVideo.png", thumbnailImage=play_thumbnail, path=mediaurl) logger.info("b4.1") except: xlistitem = xbmcgui.ListItem( play_title, iconImage="DefaultVideo.png", thumbnailImage=play_thumbnail) logger.info("b4.2") xlistitem.setInfo( "video", { "Title": play_title, "Plot" : play_plot , "Studio" : item.channel , "Genre" : item.category } ) #set_infoLabels(listitem,plot) # Modificacion introducida por super_berny para añadir infoLabels al ListItem # Lanza el reproductor # Lanza el reproductor if strmfile: # and item.server != "torrent": #Si es un fichero strm no hace falta el play logger.info("b6") import sys xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xlistitem) if item.subtitle != "": xbmc.sleep(2000) xbmc.Player().setSubtitles(item.subtitle) else: logger.info("b7") logger.info("player_mode="+config.get_setting("player_mode")) logger.info("mediaurl="+mediaurl) if config.get_setting("player_mode")=="3" or "megacrypter.com" in mediaurl: logger.info("b11") import download_and_play download_and_play.download_and_play( mediaurl , "download_and_play.tmp" , config.get_setting("downloadpath") ) return elif config.get_setting("player_mode")=="0" or (config.get_setting("player_mode")=="3" and mediaurl.startswith("rtmp")): logger.info("b8") # Añadimos el listitem a una lista de reproducción (playlist) playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO ) playlist.clear() playlist.add( mediaurl, xlistitem ) # Reproduce playersettings = config.get_setting('player_type') logger.info("[xbmctools.py] playersettings="+playersettings) if config.get_system_platform()=="xbox": player_type = xbmc.PLAYER_CORE_AUTO if playersettings == "0": player_type = xbmc.PLAYER_CORE_AUTO logger.info("[xbmctools.py] PLAYER_CORE_AUTO") elif playersettings == "1": player_type = xbmc.PLAYER_CORE_MPLAYER logger.info("[xbmctools.py] PLAYER_CORE_MPLAYER") elif playersettings == "2": player_type = xbmc.PLAYER_CORE_DVDPLAYER logger.info("[xbmctools.py] PLAYER_CORE_DVDPLAYER") xbmcPlayer = xbmc.Player( player_type ) else: xbmcPlayer = xbmc.Player() xbmcPlayer.play(playlist) if item.channel=="cuevana" and item.subtitle!="": logger.info("subtitulo="+subtitle) if item.subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): logger.info("[xbmctools.py] Con subtitulos") setSubtitles() elif config.get_setting("player_mode")=="1": logger.info("b9") logger.info("mediaurl :"+ mediaurl) logger.info("Tras setResolvedUrl") xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path=mediaurl)) elif config.get_setting("player_mode")=="2": logger.info("b10") xbmc.executebuiltin( "PlayMedia("+mediaurl+")" ) if item.subtitle!="" and view: logger.info("b11") logger.info("Subtítulos externos: "+item.subtitle) xbmc.Player().setSubtitles(item.subtitle)
def play_video(channel="",server="",url="",category="",title="", thumbnail="",plot="",extra="",desdefavoritos=False,desdedescargados=False,desderrordescargas=False,strmfile=False,Serie="",subtitle="", video_password="",fulltitle=""): import sys try: logger.info("[xbmctools.py] play_video(channel=%s, server=%s, url=%s, category=%s, title=%s, thumbnail=%s, plot=%s, desdefavoritos=%s, desdedescargados=%s, desderrordescargas=%s, strmfile=%s, Serie=%s, subtitle=%s" % (channel,server,url,category,title,thumbnail,plot,desdefavoritos,desdedescargados,desderrordescargas,strmfile,Serie,subtitle)) except: pass try: server = server.lower() except: server = "" if server=="": server="directo" try: from core import descargas download_enable=True except: download_enable=False ''' logger.info("[xbmctools.py] playvideo") logger.info("[xbmctools.py] playvideo canal="+canal) logger.info("[xbmctools.py] playvideo server="+server) logger.info("[xbmctools.py] playvideo url="+url) logger.info("[xbmctools.py] playvideo category="+category) logger.info("[xbmctools.py] playvideo serie="+Serie) logger.info("[xbmctools.py] playvideo subtitle="+config.get_setting("subtitulo")+" "+subtitle) ''' view = False # Abre el diálogo de selección opciones = [] video_urls = [] default_action = config.get_setting("default_action") logger.info("default_action="+default_action) if server=="directo" or server=="local": video_urls = [[ "%s [%s]" % (url[-4:],server) , url ]] else: # Muestra un diálogo de progreso if config.get_setting("player_mode")=="0" and not strmfile and server!="wupload": import xbmcgui progreso = xbmcgui.DialogProgress() progreso.create( "pelisalacarta" , "Conectando con %s..." % server) try: # Extrae todos los enlaces posibles exec "from servers import "+server+" as server_connector" if server=="megavideo" or server=="megaupload": video_urls = server_connector.get_video_url( page_url=url , premium=(config.get_setting("megavideopremium")=="true") , user=config.get_setting("megavideouser") , password=config.get_setting("megavideopassword"), video_password=video_password ) elif server=="fileserve": video_urls = server_connector.get_video_url( page_url=url , premium=(config.get_setting("fileservepremium")=="true") , user=config.get_setting("fileserveuser") , password=config.get_setting("fileservepassword"), video_password=video_password ) elif server=="wupload": video_urls = server_connector.get_video_url( page_url=url , premium=(config.get_setting("wuploadpremium")=="true") , user=config.get_setting("wuploaduser") , password=config.get_setting("wuploadpassword"), video_password=video_password ) else: video_urls = server_connector.get_video_url( page_url=url , video_password=video_password ) except: import sys for line in sys.exc_info(): logger.error( "%s" % line ) if config.get_setting("fileniumpremium")=="true" and server not in ["vk","fourshared","directo","adnstream","facebook","megalive","tutv","stagevu"]: exec "from servers import filenium as gen_conector" # Parche para solucionar el problema habitual de que un vídeo http://www.megavideo.com/?d=XXX no está, pero http://www.megaupload.com/?d=XXX si url = url.replace("http://www.megavideo.com/?d","http://www.megaupload.com/?d") video_gen = gen_conector.get_video_url( page_url=url , premium=(config.get_setting("fileniumpremium")=="true") , user=config.get_setting("fileniumuser") , password=config.get_setting("fileniumpassword"), video_password=video_password ) logger.info("[xbmctools.py] filenium url="+video_gen) video_urls.append( [ "[filenium]", video_gen ] ) # Cierra el diálogo de progreso if config.get_setting("player_mode")=="0" and not strmfile and server!="wupload": progreso.close() # El vídeo está if len(video_urls)>0: for video_url in video_urls: opciones.append(config.get_localized_string(30151) + " " + video_url[0]) if server=="local": opciones.append(config.get_localized_string(30164)) else: if download_enable: opcion = config.get_localized_string(30153) opciones.append(opcion) # "Descargar" if channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" else: opciones.append(config.get_localized_string(30155)) # "Añadir a favoritos" if not strmfile: opciones.append(config.get_localized_string(30161)) # "Añadir a Biblioteca" if download_enable: if channel!="descargas": opciones.append(config.get_localized_string(30157)) # "Añadir a lista de descargas" else: if category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" opciones.append(config.get_localized_string(30160)) # "Pasar de nuevo a lista de descargas" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" opciones.append(config.get_localized_string(30158)) # "Enviar a JDownloader" if default_action=="3": seleccion = len(opciones)-1 # Busqueda de trailers en youtube if not channel in ["Trailer","ecarteleratrailers"]: opciones.append(config.get_localized_string(30162)) # "Buscar Trailer" # El vídeo no está else: if server!="": alertnodisponibleserver(server) else: alertUnsopportedServer() if channel=="favoritos": opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" if channel=="descargas": if category=="errores": opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" else: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" if len(opciones)==0: return # Si la accion por defecto es "Preguntar", pregunta if default_action=="0": import xbmcgui dia = xbmcgui.Dialog() seleccion = dia.select(config.get_localized_string(30163), opciones) # "Elige una opción" #dia.close() elif default_action=="1": seleccion = 0 elif default_action=="2": seleccion = len(video_urls)-1 elif default_action=="3": seleccion = seleccion else: seleccion=0 logger.info("seleccion=%d" % seleccion) logger.info("seleccion=%s" % opciones[seleccion]) # No ha elegido nada, lo más probable porque haya dado al ESC if seleccion==-1: #Para evitar el error "Uno o más elementos fallaron" al cancelar la selección desde fichero strm listitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) import sys xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),False,listitem) # JUR Added #if config.get_setting("subtitulo") == "true": # config.set_setting("subtitulo", "false") return if opciones[seleccion]==config.get_localized_string(30158): # "Enviar a JDownloader" #d = {"web": url}urllib.urlencode(d) from core import scrapertools data = scrapertools.cachePage(config.get_setting("jdownloader")+"/action/add/links/grabber0/start1/web="+url+ " " +thumbnail) return elif opciones[seleccion]==config.get_localized_string(30164): # Borrar archivo en descargas # En "extra" está el nombre del fichero en favoritos import os os.remove( url ) xbmc.executebuiltin( "Container.Refresh" ) return # Ha elegido uno de los vídeos elif seleccion < len(video_urls): mediaurl = video_urls[seleccion][1] if len(video_urls[seleccion])>2: wait_time = video_urls[seleccion][2] else: wait_time = 0 view = True # Descargar elif opciones[seleccion]==config.get_localized_string(30153): # "Descargar" # El vídeo de más calidad es el último mediaurl = video_urls[len(video_urls)-1][1] # Si no quiere usar filenium para descargas, coge el anterior if config.get_setting("filenium_for_download")=="false" and video_urls[len(video_urls)-1][0]=="[filenium]": mediaurl = video_urls[len(video_urls)-2][1] from core import downloadtools keyboard = xbmc.Keyboard(fulltitle) keyboard.doModal() if (keyboard.isConfirmed()): title = keyboard.getText() downloadtools.downloadtitle(mediaurl,title) return elif opciones[seleccion]==config.get_localized_string(30154): #"Quitar de favoritos" from core import favoritos # En "extra" está el nombre del fichero en favoritos favoritos.deletebookmark(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30105)) # 'Se ha quitado de favoritos' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30159): #"Borrar descarga definitivamente" from core import descargas descargas.delete_error_bookmark(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de la lista' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30160): #"Pasar de nuevo a lista de descargas": from core import descargas descargas.mover_descarga_error_a_pendiente(urllib.unquote_plus( extra )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30107)) # 'Ha pasado de nuevo a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30155): #"Añadir a favoritos": from core import favoritos from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(fulltitle)+" ["+channel+"]") keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() favoritos.savebookmark(titulo=title,url=url,thumbnail=thumbnail,server=server,plot=plot,fulltitle=fulltitle) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30108)) # 'se ha añadido a favoritos' return elif opciones[seleccion]==config.get_localized_string(30156): #"Quitar de lista de descargas": from core import descargas # La categoría es el nombre del fichero en la lista de descargas descargas.deletebookmark((urllib.unquote_plus( extra ))) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de lista de descargas' xbmc.executebuiltin( "Container.Refresh" ) return elif opciones[seleccion]==config.get_localized_string(30157): #"Añadir a lista de descargas": from core import descargas from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(fulltitle)) keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() descargas.savebookmark(titulo=title,url=url,thumbnail=thumbnail,server=server,plot=plot,fulltitle=fulltitle) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30109)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30161): #"Añadir a Biblioteca": # Library from platformcode.xbmc import library titulo = fulltitle if fulltitle=="": titulo = title library.savelibrary(titulo,url,thumbnail,server,plot,canal=channel,category=category,Serie=Serie) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , fulltitle , config.get_localized_string(30135)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30162): #"Buscar Trailer": config.set_setting("subtitulo", "false") import sys xbmc.executebuiltin("Container.Update(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s)" % ( sys.argv[ 0 ] , "trailertools" , "buscartrailer" , urllib.quote_plus( category ) , urllib.quote_plus( fulltitle ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( "" ) , server )) return # Si no hay mediaurl es porque el vídeo no está :) logger.info("[xbmctools.py] mediaurl="+mediaurl) if mediaurl=="": logger.info("b1") if server == "unknown": alertUnsopportedServer() else: alertnodisponibleserver(server) return # Si hay un tiempo de espera (como en megaupload), lo impone ahora if wait_time>0: logger.info("b2") continuar = handle_wait(wait_time,server,"Cargando vídeo...") if not continuar: return # Obtención datos de la Biblioteca (solo strms que estén en la biblioteca) if strmfile: logger.info("b3") xlistitem = getLibraryInfo(mediaurl) else: logger.info("b4") try: xlistitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail, path=mediaurl) except: xlistitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) xlistitem.setInfo( "video", { "Title": title, "Plot" : plot , "Studio" : channel , "Genre" : category } ) # Descarga el subtitulo if channel=="cuevana" and subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): logger.info("b5") try: import os ficherosubtitulo = os.path.join( config.get_data_path(), 'subtitulo.srt' ) if os.path.exists(ficherosubtitulo): try: os.remove(ficherosubtitulo) except IOError: logger.info("Error al eliminar el archivo subtitulo.srt "+ficherosubtitulo) raise from core import scrapertools data = scrapertools.cache_page(subtitle) #print data fichero = open(ficherosubtitulo,"w") fichero.write(data) fichero.close() #from core import downloadtools #downloadtools.downloadfile(subtitle, ficherosubtitulo ) except: logger.info("Error al descargar el subtítulo") # Lanza el reproductor if strmfile: #Si es un fichero strm no hace falta el play logger.info("b6") import sys xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),True,xlistitem) #if subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): # logger.info("[xbmctools.py] Con subtitulos") # setSubtitles() else: logger.info("b7") if config.get_setting("player_mode")=="0": logger.info("b8") # Añadimos el listitem a una lista de reproducción (playlist) playlist = xbmc.PlayList( xbmc.PLAYLIST_VIDEO ) playlist.clear() playlist.add( mediaurl, xlistitem ) xbmcPlayer = xbmc.Player() xbmcPlayer.play(playlist) if channel=="cuevana" and subtitle!="": logger.info("subtitulo="+subtitle) if subtitle!="" and (opciones[seleccion].startswith("Ver") or opciones[seleccion].startswith("Watch")): logger.info("[xbmctools.py] Con subtitulos") setSubtitles() elif config.get_setting("player_mode")=="1": logger.info("b9") #xlistitem.setProperty('IsPlayable', 'true') #xlistitem.setProperty('path', mediaurl) xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, xbmcgui.ListItem(path=mediaurl)) elif config.get_setting("player_mode")=="2": logger.info("b10") xbmc.executebuiltin( "PlayMedia("+mediaurl+")" ) if (config.get_setting("subtitulo") == "true") and view: logger.info("b11") from core import subtitletools wait2second() subtitletools.set_Subtitle() if subtitle!="": xbmc.Player().setSubtitles(subtitle)
def playvideoEx(canal,server,url,category,title,thumbnail,plot,desdefavoritos,desdedescargados,desderrordescargas,strmfile=False,Serie=""): logger.info("[xbmctools.py] playvideo") logger.info("[xbmctools.py] playvideo canal="+canal) logger.info("[xbmctools.py] playvideo server="+server) logger.info("[xbmctools.py] playvideo url="+url) logger.info("[xbmctools.py] playvideo category="+category) logger.info("[xbmctools.py] playvideo serie="+Serie) # Parametrizacion especifica import parametrizacion # Abre el diálogo de selección opciones = [] default_action = config.get_setting("default_action") # Los vídeos de Megavídeo sólo se pueden ver en calidad alta con cuenta premium # Los vídeos de Megaupload sólo se pueden ver con cuenta premium, en otro caso pide captcha if (server=="Megavideo" or server=="Megaupload") and config.get_setting("megavideopremium")=="true": opciones.append(config.get_localized_string(30150)+" ["+server+"]") # "Ver en calidad alta" # Si la accion por defecto es "Ver en calidad alta", la seleccion se hace ya if default_action=="2": seleccion = len(opciones)-1 # Los vídeos de Megavídeo o Megaupload se pueden ver en calidad baja sin cuenta premium, aunque con el límite if (server=="Megavideo" or server=="Megaupload"): opciones.append(config.get_localized_string(30152)+" [Megavideo]") # "Ver en calidad baja" # Si la accion por defecto es "Ver en calidad baja", la seleccion se hace ya if default_action=="1": seleccion = len(opciones)-1 else: opciones.append(config.get_localized_string(30151)+" ["+server+"]") # "Ver en calidad normal" # Si la accion por defecto es "Ver en calidad baja", la seleccion se hace ya if default_action<>"0": #Si hay alguna calidad elegida (alta o baja) seleccionarmos esta para los no megavideo seleccion = len(opciones)-1 if (parametrizacion.DOWNLOAD_ENABLED): opciones.append(config.get_localized_string(30153)) # "Descargar" if desdefavoritos: opciones.append(config.get_localized_string(30154)) # "Quitar de favoritos" else: opciones.append(config.get_localized_string(30155)) # "Añadir a favoritos" if (parametrizacion.DOWNLOAD_ENABLED): if desdedescargados: opciones.append(config.get_localized_string(30156)) # "Quitar de lista de descargas" else: opciones.append(config.get_localized_string(30157)) # "Añadir a lista de descargas" opciones.append(config.get_localized_string(30158)) # "Enviar a JDownloader" if default_action=="3": seleccion = len(opciones)-1 if (parametrizacion.DOWNLOAD_ENABLED): if desderrordescargas: opciones.append(config.get_localized_string(30159)) # "Borrar descarga definitivamente" opciones.append(config.get_localized_string(30160)) # "Pasar de nuevo a lista de descargas" if not strmfile: if category in LIBRARY_CATEGORIES: opciones.append(config.get_localized_string(30161)) # "Añadir a Biblioteca" # Busqueda de trailers en youtube if not canal in ["Trailer","ecarteleratrailers"]: opciones.append(config.get_localized_string(30162)) # "Buscar Trailer" # Si la accion por defecto es "Preguntar", pregunta if default_action=="0": dia = xbmcgui.Dialog() seleccion = dia.select(config.get_localized_string(30163), opciones) # "Elige una opción" #dia.close() logger.info("seleccion=%d" % seleccion) logger.info("seleccion=%s" % opciones[seleccion]) # No ha elegido nada, lo más probable porque haya dado al ESC if seleccion==-1: if strmfile: #Para evitar el error "Uno o más elementos fallaron" al cancelar la selección desde fichero strm listitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),False,listitem) # JUR Added if config.get_setting("subtitulo") == "true": config.setSetting("subtitulo", "false") return if opciones[seleccion]==config.get_localized_string(30158): # "Enviar a JDownloader" if server=="Megaupload": d = {"web": "http://www.megaupload.com/?d=" + url} else: d = {"web": "http://www.megavideo.com/?v=" + url} from core import scrapertools data = scrapertools.cachePage(config.get_setting("jdownloader")+"/action/add/links/grabber0/start1/"+urllib.urlencode(d)+ " " +thumbnail) return # Ver en calidad alta if opciones[seleccion].startswith(config.get_localized_string(30150)): # "Ver en calidad alta" if server=="Megaupload": mediaurl = servertools.getmegauploadhigh(url) else: mediaurl = servertools.getmegavideohigh(url) # Ver (calidad baja megavideo o resto servidores) elif opciones[seleccion].startswith(config.get_localized_string(30151)) or opciones[seleccion].startswith(config.get_localized_string(30152)): # Ver en calidad (normal o baja) if server=="Megaupload": mediaurl = servertools.getmegauploadlow(url) if mediaurl == "": alertanomegauploadlow(server) return elif server=="Megavideo": # Advertencia límite 72 minutos megavideo if config.get_setting("megavideopremium")=="false": advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30052) , config.get_localized_string(30053) , config.get_localized_string(30054)) mediaurl = servertools.getmegavideolow(url) else: mediaurl = servertools.findurl(url,server) # Descargar elif opciones[seleccion]==config.get_localized_string(30153): # "Descargar" if server=="Megaupload": if config.get_setting("megavideopremium")=="false": mediaurl = servertools.getmegauploadlow(url) else: mediaurl = servertools.getmegauploadhigh(url) elif server=="Megavideo": if config.get_setting("megavideopremium")=="false": mediaurl = servertools.getmegavideolow(url) else: mediaurl = servertools.getmegavideohigh(url) else: mediaurl = servertools.findurl(url,server) from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(title)) keyboard.doModal() if (keyboard.isConfirmed()): title = keyboard.getText() downloadtools.downloadtitle(mediaurl,title) return elif opciones[seleccion]==config.get_localized_string(30154): #"Quitar de favoritos" from core import favoritos # La categoría es el nombre del fichero en favoritos favoritos.deletebookmark(category) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30105)) # 'Se ha quitado de favoritos' xbmc.executebuiltin( "Container.Refresh" ) return # TODO: Mover a modulo descargadoslist elif opciones[seleccion]==config.get_localized_string(30159): #"Borrar descarga definitivamente" # La categoría es el nombre del fichero en favoritos os.remove(urllib.unquote_plus( category )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de la lista' return # TODO: Mover a modulo descargadoslist elif opciones[seleccion]==config.get_localized_string(30160): #"Pasar de nuevo a lista de descargas": from core import descargadoslist # La categoría es el nombre del fichero en favoritos, así que lee el fichero titulo,thumbnail,plot,server,url = descargadoslist.readbookmarkfile(urllib.unquote_plus( category ),"") # Lo añade a la lista de descargas descargadoslist.savebookmark(title,url,thumbnail,server,plot) # Y lo borra de la lista de errores os.remove(urllib.unquote_plus( category )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30107)) # 'Ha pasado de nuevo a la lista de descargas' return # TODO: Mover a modulo favoritos elif opciones[seleccion]==config.get_localized_string(30155): #"Añadir a favoritos": from core import favoritos from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(title)+" ["+canal+"]") keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() favoritos.savebookmark(title,url,thumbnail,server,plot) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30102) , title , config.get_localized_string(30108)) # 'se ha añadido a favoritos' return # TODO: Mover a modulo descargadoslist elif opciones[seleccion]==config.get_localized_string(30156): #"Quitar de lista de descargas": # La categoría es el nombre del fichero en la lista de descargas os.remove(urllib.unquote_plus( category )) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30106)) # 'Se ha quitado de lista de descargas' return # TODO: Mover a modulo descargadoslist elif opciones[seleccion]==config.get_localized_string(30157): #"Añadir a lista de descargas": from core import descargadoslist from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(title)) keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() descargadoslist.savebookmark(title,url,thumbnail,server,plot) advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30101) , title , config.get_localized_string(30109)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion]==config.get_localized_string(30161): #"Añadir a Biblioteca": # Library from core import library library.savelibrary(title,url,thumbnail,server,plot,canal=canal,category=category,Serie=Serie) return elif opciones[seleccion]==config.get_localized_string(30162): #"Buscar Trailer": config.setSetting("subtitulo", "false") xbmc.executebuiltin("Container.Update(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s)" % ( sys.argv[ 0 ] , "trailertools" , "buscartrailer" , urllib.quote_plus( category ) , urllib.quote_plus( title ) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( "" ) , server )) return # Si no hay mediaurl es porque el vídeo no está :) logger.info("[xbmctools.py] mediaurl="+mediaurl) if mediaurl=="": alertnodisponibleserver(server) return # Crea un listitem para pasárselo al reproductor # Obtención datos de la Biblioteca (solo strms que estén en la biblioteca) if strmfile: logger.info("[xbmctools.py] 1") listitem = getLibraryInfo(mediaurl) else: logger.info("[xbmctools.py] 2") listitem = xbmcgui.ListItem( title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) listitem.setInfo( "video", { "Title": title, "Plot" : plot , "Studio" : canal , "Genre" : category } ) # Lanza el reproductor if strmfile: #Si es un fichero strm no hace falta el play logger.info("[xbmctools.py] 3") xbmcplugin.setResolvedUrl(int(sys.argv[ 1 ]),True,listitem) else: logger.info("[xbmctools.py] 4") launchplayer(mediaurl, listitem) if (config.get_setting("subtitulo") == "true") and (opciones[seleccion].startswith("Ver")): xbmc.Player().setSubtitles(os.path.join( config.DATA_PATH, 'subtitulo.srt' ) ) config.setSetting("subtitulo", "false")
def savebookmark(canal=CHANNELNAME,titulo="",url="",thumbnail="",server="",plot="",fulltitle="",savepath=DOWNLOAD_LIST_PATH): favoritos.savebookmark(canal,titulo,url,thumbnail,server,plot,fulltitle,savepath)
def playvideoEx(canal, server, url, category, title, thumbnail, plot, desdefavoritos, desdedescargados, desderrordescargas, strmfile=False, Serie=""): logger.info("[xbmctools.py] playvideo") logger.info("[xbmctools.py] playvideo canal=" + canal) logger.info("[xbmctools.py] playvideo server=" + server) logger.info("[xbmctools.py] playvideo url=" + url) logger.info("[xbmctools.py] playvideo category=" + category) logger.info("[xbmctools.py] playvideo serie=" + Serie) # Parametrizacion especifica import parametrizacion # Abre el diálogo de selección opciones = [] default_action = config.get_setting("default_action") # Los vídeos de Megavídeo sólo se pueden ver en calidad alta con cuenta premium # Los vídeos de Megaupload sólo se pueden ver con cuenta premium, en otro caso pide captcha if (server == "Megavideo" or server == "Megaupload" ) and config.get_setting("megavideopremium") == "true": opciones.append( config.get_localized_string(30150) + " [" + server + "]") # "Ver en calidad alta" # Si la accion por defecto es "Ver en calidad alta", la seleccion se hace ya if default_action == "2": seleccion = len(opciones) - 1 # Los vídeos de Megavídeo o Megaupload se pueden ver en calidad baja sin cuenta premium, aunque con el límite if (server == "Megavideo" or server == "Megaupload"): opciones.append(config.get_localized_string(30152) + " [Megavideo]") # "Ver en calidad baja" # Si la accion por defecto es "Ver en calidad baja", la seleccion se hace ya if default_action == "1": seleccion = len(opciones) - 1 else: opciones.append( config.get_localized_string(30151) + " [" + server + "]") # "Ver en calidad normal" # Si la accion por defecto es "Ver en calidad baja", la seleccion se hace ya if default_action <> "0": #Si hay alguna calidad elegida (alta o baja) seleccionarmos esta para los no megavideo seleccion = len(opciones) - 1 if (parametrizacion.DOWNLOAD_ENABLED): opciones.append(config.get_localized_string(30153)) # "Descargar" if desdefavoritos: opciones.append( config.get_localized_string(30154)) # "Quitar de favoritos" else: opciones.append( config.get_localized_string(30155)) # "Añadir a favoritos" if (parametrizacion.DOWNLOAD_ENABLED): if desdedescargados: opciones.append(config.get_localized_string( 30156)) # "Quitar de lista de descargas" else: opciones.append(config.get_localized_string( 30157)) # "Añadir a lista de descargas" opciones.append( config.get_localized_string(30158)) # "Enviar a JDownloader" if default_action == "3": seleccion = len(opciones) - 1 if (parametrizacion.DOWNLOAD_ENABLED): if desderrordescargas: opciones.append(config.get_localized_string( 30159)) # "Borrar descarga definitivamente" opciones.append(config.get_localized_string( 30160)) # "Pasar de nuevo a lista de descargas" if not strmfile: if category in LIBRARY_CATEGORIES: opciones.append( config.get_localized_string(30161)) # "Añadir a Biblioteca" # Busqueda de trailers en youtube if not canal in ["Trailer", "ecarteleratrailers"]: opciones.append(config.get_localized_string(30162)) # "Buscar Trailer" # Si la accion por defecto es "Preguntar", pregunta if default_action == "0": dia = xbmcgui.Dialog() seleccion = dia.select(config.get_localized_string(30163), opciones) # "Elige una opción" #dia.close() logger.info("seleccion=%d" % seleccion) logger.info("seleccion=%s" % opciones[seleccion]) # No ha elegido nada, lo más probable porque haya dado al ESC if seleccion == -1: if strmfile: #Para evitar el error "Uno o más elementos fallaron" al cancelar la selección desde fichero strm listitem = xbmcgui.ListItem(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) xbmcplugin.setResolvedUrl(int(sys.argv[1]), False, listitem) # JUR Added if config.get_setting("subtitulo") == "true": config.setSetting("subtitulo", "false") return if opciones[seleccion] == config.get_localized_string( 30158): # "Enviar a JDownloader" if server == "Megaupload": d = {"web": "http://www.megaupload.com/?d=" + url} else: d = {"web": "http://www.megavideo.com/?v=" + url} from core import scrapertools data = scrapertools.cachePage( config.get_setting("jdownloader") + "/action/add/links/grabber0/start1/" + urllib.urlencode(d) + " " + thumbnail) return # Ver en calidad alta if opciones[seleccion].startswith( config.get_localized_string(30150)): # "Ver en calidad alta" if server == "Megaupload": mediaurl = servertools.getmegauploadhigh(url) else: mediaurl = servertools.getmegavideohigh(url) # Ver (calidad baja megavideo o resto servidores) elif opciones[seleccion].startswith(config.get_localized_string( 30151)) or opciones[seleccion].startswith( config.get_localized_string( 30152)): # Ver en calidad (normal o baja) if server == "Megaupload": mediaurl = servertools.getmegauploadlow(url) if mediaurl == "": alertanomegauploadlow(server) return elif server == "Megavideo": # Advertencia límite 72 minutos megavideo if config.get_setting("megavideopremium") == "false": advertencia = xbmcgui.Dialog() resultado = advertencia.ok(config.get_localized_string(30052), config.get_localized_string(30053), config.get_localized_string(30054)) mediaurl = servertools.getmegavideolow(url) else: mediaurl = servertools.findurl(url, server) # Descargar elif opciones[seleccion] == config.get_localized_string( 30153): # "Descargar" if server == "Megaupload": if config.get_setting("megavideopremium") == "false": mediaurl = servertools.getmegauploadlow(url) else: mediaurl = servertools.getmegauploadhigh(url) elif server == "Megavideo": if config.get_setting("megavideopremium") == "false": mediaurl = servertools.getmegavideolow(url) else: mediaurl = servertools.getmegavideohigh(url) else: mediaurl = servertools.findurl(url, server) from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(title)) keyboard.doModal() if (keyboard.isConfirmed()): title = keyboard.getText() downloadtools.downloadtitle(mediaurl, title) return elif opciones[seleccion] == config.get_localized_string( 30154): #"Quitar de favoritos" from core import favoritos # La categoría es el nombre del fichero en favoritos favoritos.deletebookmark(category) advertencia = xbmcgui.Dialog() resultado = advertencia.ok( config.get_localized_string(30102), title, config.get_localized_string(30105)) # 'Se ha quitado de favoritos' xbmc.executebuiltin("Container.Refresh") return # TODO: Mover a modulo descargadoslist elif opciones[seleccion] == config.get_localized_string( 30159): #"Borrar descarga definitivamente" # La categoría es el nombre del fichero en favoritos os.remove(urllib.unquote_plus(category)) advertencia = xbmcgui.Dialog() resultado = advertencia.ok( config.get_localized_string(30101), title, config.get_localized_string(30106)) # 'Se ha quitado de la lista' return # TODO: Mover a modulo descargadoslist elif opciones[seleccion] == config.get_localized_string( 30160): #"Pasar de nuevo a lista de descargas": from core import descargadoslist # La categoría es el nombre del fichero en favoritos, así que lee el fichero titulo, thumbnail, plot, server, url = descargadoslist.readbookmarkfile( urllib.unquote_plus(category), "") # Lo añade a la lista de descargas descargadoslist.savebookmark(title, url, thumbnail, server, plot) # Y lo borra de la lista de errores os.remove(urllib.unquote_plus(category)) advertencia = xbmcgui.Dialog() resultado = advertencia.ok( config.get_localized_string(30101), title, config.get_localized_string( 30107)) # 'Ha pasado de nuevo a la lista de descargas' return # TODO: Mover a modulo favoritos elif opciones[seleccion] == config.get_localized_string( 30155): #"Añadir a favoritos": from core import favoritos from core import downloadtools keyboard = xbmc.Keyboard( downloadtools.limpia_nombre_excepto_1(title) + " [" + canal + "]") keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() favoritos.savebookmark(title, url, thumbnail, server, plot) advertencia = xbmcgui.Dialog() resultado = advertencia.ok( config.get_localized_string(30102), title, config.get_localized_string( 30108)) # 'se ha añadido a favoritos' return # TODO: Mover a modulo descargadoslist elif opciones[seleccion] == config.get_localized_string( 30156): #"Quitar de lista de descargas": # La categoría es el nombre del fichero en la lista de descargas os.remove(urllib.unquote_plus(category)) advertencia = xbmcgui.Dialog() resultado = advertencia.ok( config.get_localized_string(30101), title, config.get_localized_string( 30106)) # 'Se ha quitado de lista de descargas' return # TODO: Mover a modulo descargadoslist elif opciones[seleccion] == config.get_localized_string( 30157): #"Añadir a lista de descargas": from core import descargadoslist from core import downloadtools keyboard = xbmc.Keyboard(downloadtools.limpia_nombre_excepto_1(title)) keyboard.doModal() if keyboard.isConfirmed(): title = keyboard.getText() descargadoslist.savebookmark(title, url, thumbnail, server, plot) advertencia = xbmcgui.Dialog() resultado = advertencia.ok( config.get_localized_string(30101), title, config.get_localized_string( 30109)) # 'se ha añadido a la lista de descargas' return elif opciones[seleccion] == config.get_localized_string( 30161): #"Añadir a Biblioteca": # Library from core import library library.savelibrary(title, url, thumbnail, server, plot, canal=canal, category=category, Serie=Serie) return elif opciones[seleccion] == config.get_localized_string( 30162): #"Buscar Trailer": config.setSetting("subtitulo", "false") xbmc.executebuiltin( "Container.Update(%s?channel=%s&action=%s&category=%s&title=%s&url=%s&thumbnail=%s&plot=%s&server=%s)" % (sys.argv[0], "trailertools", "buscartrailer", urllib.quote_plus(category), urllib.quote_plus(title), urllib.quote_plus(url), urllib.quote_plus(thumbnail), urllib.quote_plus(""), server)) return # Si no hay mediaurl es porque el vídeo no está :) logger.info("[xbmctools.py] mediaurl=" + mediaurl) if mediaurl == "": alertnodisponibleserver(server) return # Crea un listitem para pasárselo al reproductor # Obtención datos de la Biblioteca (solo strms que estén en la biblioteca) if strmfile: logger.info("[xbmctools.py] 1") listitem = getLibraryInfo(mediaurl) else: logger.info("[xbmctools.py] 2") listitem = xbmcgui.ListItem(title, iconImage="DefaultVideo.png", thumbnailImage=thumbnail) listitem.setInfo("video", { "Title": title, "Plot": plot, "Studio": canal, "Genre": category }) # Lanza el reproductor if strmfile: #Si es un fichero strm no hace falta el play logger.info("[xbmctools.py] 3") xbmcplugin.setResolvedUrl(int(sys.argv[1]), True, listitem) else: logger.info("[xbmctools.py] 4") launchplayer(mediaurl, listitem) if (config.get_setting("subtitulo") == "true") and (opciones[seleccion].startswith("Ver")): xbmc.Player().setSubtitles( os.path.join(config.DATA_PATH, 'subtitulo.srt')) config.setSetting("subtitulo", "false")