コード例 #1
0
ファイル: launcher.py プロジェクト: Hernanarce/pelisalacarta
def add_to_library(item):
    if "item_action" in item: 
      item.action = item.item_action
      del item.item_action

    
    if not item.fulltitle=="":
        item.title = item.fulltitle
    library.savelibrary(item)
    platformtools.dialog_ok("Pelisalacarta", config.get_localized_string(30101) +"\n"+ item.title +"\n"+ config.get_localized_string(30135))
    return
コード例 #2
0
ファイル: launcher.py プロジェクト: shorbete/pelisalacarta
def add_to_library(item):
    if "item_action" in item: 
      item.action = item.item_action
      del item.item_action

    
    if not item.fulltitle=="":
        item.title = item.fulltitle
    library.savelibrary(item)
    platformtools.dialog_ok("Pelisalacarta", config.get_localized_string(30101) +"\n"+ item.title +"\n"+ config.get_localized_string(30135))
    return
コード例 #3
0
ファイル: moviezet.py プロジェクト: vdeku/xbmc-tvalacarta
def addlist2Library(item):
    logger.info("[moviezet.py] addlist2Library")

    from core import library
    import xbmcgui
    itemlist = []
    # Descarga la página
    data = scrapertools.cachePage(item.url)
    extra = item.extra.split("|")

    # Extrae las entradas (carpetas)
    patronvideos  = '<li onclick=\'listSeries\(3,"([^"]+)"\)\'><span class=\'nume\'>([^<]+)</span>([^<]+)</li>'
    matches = re.compile(patronvideos,re.DOTALL).findall(data)
    scrapertools.printMatches(matches)

    pDialog = xbmcgui.DialogProgress()
    ret = pDialog.create('pelisalacarta', 'Añadiendo episodios...')
    pDialog.update(0, 'Añadiendo episodio...')
    totalepisodes = len(matches)
    logger.info ("[cuevana.py - addlist2Library] Total Episodios:"+str(totalepisodes))
    i = 0
    errores = 0
    nuevos = 0
    for match in matches:
        scrapedtitle = "S"+extra[1]+"E"+match[1]+" "+match[2].strip()
        Serie = extra[0]
        server = "Megaupload"
        i = i + 1
        pDialog.update(i*100/totalepisodes, 'Añadiendo episodio...',scrapedtitle)
        if (pDialog.iscanceled()):
            return
        url = "http://www.cuevana.tv/list_search_info.php?episodio="+match[0]
        scrapedthumbnail = ""
        scrapedplot = ""
        if (DEBUG):
            logger.info("scrapedtitle="+scrapedtitle)
            logger.info("url="+url) #OPCION 2.
            logger.info("scrapedthumbnail="+scrapedthumbnail)
            logger.info("Episodio "+str(i)+" de "+str(totalepisodes)+"("+str(i*100/totalepisodes)+"%)")
        try:
            nuevos = nuevos + library.savelibrary(scrapedtitle,url,scrapedthumbnail,server,scrapedplot,canal=CHANNELNAME,category="Series",Serie=Serie,verbose=False,accion="strm_detail",pedirnombre=False)
        except IOError:
            logger.info("Error al grabar el archivo "+scrapedtitle)
            errores = errores + 1
    if errores > 0:
        logger.info ("[cuevana.py - addlist2Library] No se pudo añadir "+str(errores)+" episodios")

    library.update(totalepisodes,errores,nuevos)
コード例 #4
0
def addlist2Library(params,url,category,verbose=True):
    """Adds al episodes of a given show to the library
    
        What it really does is create strm files containing plugin calls
        to the pelisalacarta plugin on each episode.
        For this to work you have to manually add the pelisalacarta-library path
        to the library with the apropiate Content provider (tvdb works just fine)
    """
    logger.info("[tvshack.py] addlist2Library")

    if params.has_key("Serie"):
        serie = params.get("Serie")
    else:
        serie = ""
    
    if verbose:
        pDialog = xbmcgui.DialogProgress()
        pDialog.create('pelisalacarta', 'A�adiendo episodios...')

    listaEp = devuelveListaEpisodios (params,url,category)
    episodios = 0
    errores = 0
    nuevos = 0
    for i,ep in enumerate(listaEp):
        if verbose:
            pDialog.update(i*100/len(listaEp), 'A�adiendo episodio...',ep['title'])
            if (pDialog.iscanceled()):
                return
        try:
            nuevos = nuevos + library.savelibrary(ep['title'],ep['url'],ep['thumbnail'],"",ep['plot'],canal=CHANNELNAME,category="Series",Serie=serie,verbose=False,accion="strm_detail",pedirnombre=False)
            episodios = episodios + 1
        except IOError:
            logger.info("Error al grabar el archivo "+ep['title'])
            errores = errores + 1

    if verbose:
        pDialog.close()
    if errores > 0:
        logger.info ("[tvshack.py - addlist2Library] No se pudo a�adir "+str(errores)+" episodios") 

    if verbose:
        library.update(episodios,errores,nuevos)

    return nuevos
コード例 #5
0
ファイル: xbmctools.py プロジェクト: hmemar/xbmc-tvalacarta
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")
コード例 #6
0
def addlist2Library(params,url,category):
    logger.info("[seriesyonkis.py] addlist2Library")

    # Descarga la página
    data = scrapertools.cachePage(url)
    #logger.info(data)

    if params.has_key("Serie"):
        Serie = params.get("Serie")
    else:
        Serie = ""

    if params.has_key("server"):
        server = params.get("server")
    else:
        server = ""

    if params.has_key("thumbnail"):
        thumbnail = params.get("thumbnail")
    else:
        thumbnail = ""

    # Extrae las entradas (carpetas)
    patronvideos  = '<a href="(http://www.seriesyonkis.com/capitulo[^"]+)"[^>]+>([^<]+)</a>'
    matches = re.compile(patronvideos,re.DOTALL).findall(data)
    scrapertools.printMatches(matches)

    pDialog = xbmcgui.DialogProgress()
    ret = pDialog.create('pelisalacarta', 'Añadiendo episodios...')
    pDialog.update(0, 'Añadiendo episodio...')
    totalepisodes = len(matches)
    logger.info ("[seriesyonkis.py - addlist2Library] Total Episodios:"+str(totalepisodes))
    i = 0
    errores = 0
    nuevos = 0
    for match in matches:
        # Titulo
        scrapedtitle = match[1]
        i = i + 1
        pDialog.update(i*100/totalepisodes, 'Añadiendo episodio...',scrapedtitle)
        if (pDialog.iscanceled()):
            return

        # URL
        #  Tenemos 2 opciones. Scrapear todos los episodios en el momento de añadirlos 
        #  a la biblioteca o bien dejarlo para cuando se vea cada episodio. Esto segundo
        #  añade los episodios mucho más rápido, pero implica añadir una función
        #  strm_detail en cada módulo de canal. Por el bien del rendimiento elijo la
        #  segunda opción de momento (hacer la primera es simplemente descomentar un par de
        #  líneas.
        #  QUIZÁ SEA BUENO PARAMETRIZARLO (PONER OPCIÓN EN LA CONFIGURACIÓN DEL PLUGIN)
        #  PARA DEJAR QUE EL USUARIO DECIDA DONDE Y CUANDO QUIERE ESPERAR.
        url = match [0]
        # JUR-Las 3 líneas siguientes son para OPCIÓN 1
        #scrapedurl = scrapvideoURL(url)
        #if scrapedurl == "":
        #    errores = errores + 1
            
        # Thumbnail
        scrapedthumbnail = ""
        
        # procesa el resto
        scrapedplot = ""
        # Depuracion
        if (DEBUG):
            logger.info("scrapedtitle="+scrapedtitle)
#            logger.info("scrapedurl="+scrapedurl) #OPCION 1.
            logger.info("url="+url) #OPCION 2.
            logger.info("scrapedthumbnail="+scrapedthumbnail)
            logger.info("Serie="+Serie)
            logger.info("Episodio "+str(i)+" de "+str(totalepisodes)+"("+str(i*100/totalepisodes)+"%)")

        # Añade a la librería #Comentada la opción 2. Para cambiar invertir los comentarios
        #OPCION 1:
        #library.savelibrary(scrapedtitle,scrapedurl,scrapedthumbnail,server,scrapedplot,canal=CHANNELNAME,category="Series",Serie=Serie,verbose=False)
        #OPCION 2
        try:
            nuevos = nuevos + library.savelibrary(scrapedtitle,url,scrapedthumbnail,server,scrapedplot,canal=CHANNELNAME,category="Series",Serie=Serie,verbose=False,accion="strm_detail",pedirnombre=False)
        except IOError:
            logger.info("Error al grabar el archivo "+scrapedtitle)
            errores = errores + 1
        
#    xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
    pDialog.close()
    
    #Actualización de la biblioteca
    if errores > 0:
        logger.info ("[seriesyonkis.py - addlist2Library] No se pudo añadir "+str(errores)+" episodios") 
    library.update(totalepisodes,errores,nuevos)

    return nuevos
コード例 #7
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")