def extraevideos(patronvideos,data,category,title,thumbnail,plot,servidor):
    logger.info("patron="+patronvideos)
    matches = re.compile(patronvideos,re.DOTALL).findall(data)
    scrapertools.printMatches(matches)        

    if len(matches)>0:
        
        # A�ade al listado de XBMC
        if servidor == "Directo":
            xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title, matches[0] , thumbnail , plot )

        elif servidor == "Veoh":
            veohurl = servertools.findurl(matches[0],"veoh")
            logger.info(" veohurl = " +veohurl)

            if len(veohurl)>0:
                if  veohurl=="http://./default.asp":
                    advertencia = xbmcgui.Dialog()
                    resultado = advertencia.ok('El Video Documental' , title , 'no existe en Veoh','visite la pagina www.documaniatv.com para reportarlo' )
                    return
                logger.info(" newmatches = "+veohurl)
                xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title, veohurl , thumbnail , plot )
            else:
                 advertencia = xbmcgui.Dialog()
                 resultado = advertencia.ok('El Video Documental' , title , 'no existe en Veoh')
                 return 
    
        elif servidor == "Google":
            url = "http://www.flashvideodownloader.org/download.php?u=http://video.google.com/videoplay?docid="+matches[0]
            logger.info(" Url = "+url)
            data = scrapertools.cachePage(url)
            newpatron = '</script>.*?<a href="(.*?)" title="Click to Download">'
            newmatches = re.compile(newpatron,re.DOTALL).findall(data)
            if len(newmatches)>0:
                logger.info(" newmatches = "+newmatches[0])
                xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title, newmatches[0] , thumbnail , plot )
        
        elif servidor == "Stagevu":
            url= "http://stagevu.com/video/"+matches[0]
            url = servertools.findurl(url,servidor)
            
            logger.info(" url = "+url)
            videotitle = "Video en Stagevu"
            server = servidor
            xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title.strip().replace(server,"").replace("  "," ") + " - " + videotitle , url , thumbnail , plot )
def extraevideos(patronvideos,data,category,title,thumbnail,plot,servidor):
    logger.info("patron="+patronvideos)
    matches = re.compile(patronvideos,re.DOTALL).findall(data)
    scrapertools.printMatches(matches)        

    if len(matches)>0 :
        # A�ade al listado de XBMC
        if servidor == "Directo":
            if "youtube.com" in  matches[0]:
                from youtube import Extract_id
                url = Extract_id(matches[0])
                xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Youtube" , "%s [YOUTUBE]" %title , url , thumbnail , plot )
            else:
                xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , "%s [Directo]" %title, matches[0] , thumbnail , plot )

        elif servidor == "Veoh":
        
            veohurl = servertools.findurl(matches[0],"veoh")
            logger.info(" veohurl = " +veohurl)

            if len(veohurl)>0:
                if  veohurl=="http://./default.asp":
                    advertencia = xbmcgui.Dialog()
                    resultado = advertencia.ok('El Video Video' , title , 'no existe en Veoh','visite la pagina www.sonolatino.com para reportarlo' )
                    return
                logger.info(" newmatches = "+veohurl)
                xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title, veohurl , thumbnail , plot )
            else:
                advertencia = xbmcgui.Dialog()
                resultado = advertencia.ok('El Video Video' , title , 'no existe en Veoh')
                return 

        elif servidor == "Google":
            url = "http://www.flashvideodownloader.org/download.php?u=http://video.google.com/videoplay?docid="+matches[0]
            logger.info(" Url = "+url)
            data1 = scrapertools.cachePage(url)
            newpatron = '</script>.*?<a href="(.*?)" title="Click to Download">'
            newmatches = re.compile(newpatron,re.DOTALL).findall(data1)
            if len(newmatches)>0:
                logger.info(" newmatches = "+newmatches[0])
                xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title, newmatches[0] , thumbnail , plot )

        elif servidor == "Stagevu":
            url= "http://stagevu.com/video/"+matches[0]
            url = servertools.findurl(url,servidor)
            
            logger.info(" url = "+url)
            
            
            videotitle = "Video en Stagevu"
            server = servidor
            xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title.strip().replace(server,"").replace("  "," ") + " - " + videotitle , url , thumbnail , plot )
        
        elif servidor == "izlesene":
            url = "http://www.izlesene.com/actions/video/embed.php?video="+matches[0]
            data1 = scrapertools.cachePage(url)
            newpatron = "fURL=([^\&]+)\&vduration=([^\&]+)\&"
            newmatches = re.compile(newpatron,re.DOTALL).findall(data1)
            if len(newmatches)>0:
                logger.info(" izlesene furl = "+newmatches[0][0])
                url = "http://dcdn.nokta.com/%s%s" %(newmatches[0][0], "_1_5_1.xml")
                xbmctools.addnewvideo( CHANNELNAME , "play" , category , "izlesene" , "%s (%s) [IZLESENE]" %(title,newmatches[0][1]) , url , thumbnail , plot )
        
        elif servidor == "Dailymotion":
            if "/" in matches[0]:
                idd = matches[0].split("/")
                id  = idd[len(idd)-1]
            else:
                id = matches[0]
            daily = 'http://www.dailymotion.com/video/%s'%id
            data2 = scrapertools.cachePage(daily)
            Lowres=re.compile('%22sdURL%22%3A%22(.+?)%22').findall(data2)
            if len(Lowres)>0:
                videourl = urllib.unquote(Lowres[0])
                videourl = videourl.replace("\/","/")
                
                    
                subtitle = "[FLV-Directo-Dailymotion]"
                xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title + " - "+subtitle, videourl , thumbnail , plot )
            
            # Busca el enlace al video con formato HQ (H264)        
            Highres=re.compile('%22hqURL%22%3A%22(.+?)%22').findall(data2)
            if len(Highres)>0:
                videourl = urllib.unquote(Highres[0])
                videourl = videourl.replace("\/","/")
                
                        
                subtitle = "[h264-Directo-Dailymotion-este video no es soportado en versiones antiguas o xbox plataforma]"
                xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title + " - "+subtitle, videourl , thumbnail , plot )
        
        elif servidor == "Vimeo":
            subtitle = "[Vimeo]"
            xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Vimeo" , title + " - "+subtitle, matches[0] , thumbnail , plot )
        ## -------------------------
        
        elif servidor == "Yahoo":
            import yahoo
            subtitle  = "[Yahoo]"
            video_url = yahoo.geturl(matches[0])
            if len(video_url)>0:
                if "rtmp" in video_url:
                    addnewvideo( CHANNELNAME , "playRtmp" , category , "Directo" , title + " - "+subtitle, video_url , thumbnail , plot )
                else:
                    xbmctools.addnewvideo( CHANNELNAME , "play" , category , "Directo" , title + " - "+subtitle, video_url , thumbnail , plot )
Exemplo n.º 3
0
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")
Exemplo n.º 4
0
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")