Beispiel #1
0
def listar_busquedas(params,url,category):
	print "listar_busquedas()"
	channel2 = ""
	# Despliega las busquedas anteriormente guardadas
	try:
		presets = config.get_setting("presets_buscados")
		channel_preset  = params.get("channel")
		if channel_preset != CHANNELNAME:
			channel2 = channel_preset
		print "channel_preset :%s" %channel_preset
		accion = params.get("action")
		matches = ""
		if "|" in presets:
			matches = presets.split("|")
			addfolder( "buscador"   , config.get_localized_string(30103)+"..." , matches[0] , "por_teclado", channel2 ) # Buscar
		else:
			addfolder( "buscador"   , config.get_localized_string(30103)+"..." , "" , "por_teclado", channel2 )
		if len(matches)>0:	
			for match in matches:
				
				title=scrapedurl = match
		
				addfolder( channel_preset , title , scrapedurl , "searchresults" )
		elif presets != "":
		
			title = scrapedurl = presets
			addfolder( channel_preset , title , scrapedurl , "searchresults" )
	except:
		addfolder( "buscador"   , config.get_localized_string(30103)+"..." , "" , "por_teclado" , channel2 )
		
	# Cierra el directorio
	xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category=category )
	xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_NONE )
	xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
Beispiel #2
0
def alertnoencontrado(titulo):
	advertencia = xbmcgui.Dialog()
	#'Trailer no encontrado'
	#'El Trailer para "%s"'
	#'no se ha podido localizar.'
	#'�Deseas seguir buscando con el teclado?'
	tituloq = '"'+titulo+'"'
	resultado = advertencia.yesno(config.get_localized_string(30114), config.get_localized_string(30115) % tituloq, config.get_localized_string(30116),config.get_localized_string(30117))
	return(resultado)
Beispiel #3
0
def set_opcion(item, seleccion, opciones, video_urls):
    logger.info()
    # logger.debug(item.tostring('\n'))
    salir = False
    # 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)
        xbmcplugin.setResolvedUrl(int(sys.argv[1]), False, listitem)

    # "Descargar"
    elif opciones[seleccion] == config.get_localized_string(30153):
        from channels import downloads
        if item.contentType == "list" or item.contentType == "tvshow":
            item.contentType = "video"
        item.play_menu = True
        downloads.save_download(item)
        salir = True

    # "Quitar de favoritos"
    elif opciones[seleccion] == config.get_localized_string(30154):
        from channels import favorites
        favorites.delFavourite(item)
        salir = True

    # "Añadir a favoritos":
    elif opciones[seleccion] == config.get_localized_string(30155):
        from channels import favorites
        item.from_channel = "favorites"
        favorites.addFavourite(item)
        salir = True

    # "Añadir a videoteca":
    elif opciones[seleccion] == config.get_localized_string(30161):
        titulo = item.fulltitle
        if titulo == "":
            titulo = item.title

        new_item = item.clone(title=titulo, action="play_from_library", category="Cine",
                              fulltitle=item.fulltitle, channel=item.channel)

        from core import videolibrarytools
        videolibrarytools.add_movie(new_item)

        salir = True

    # "Buscar Trailer":
    elif opciones[seleccion] == config.get_localized_string(30162):
        config.set_setting("subtitulo", False)
        xbmc.executebuiltin("XBMC.RunPlugin(%s?%s)" %
                            (sys.argv[0], item.clone(channel="trailertools", action="buscartrailer",
                                                     contextual=True).tourl()))
        salir = True

    return salir
    def AbrirConfig(self, Opciones):
        from core import config

        SetData(None)
        JsonData = {}
        JsonOpciones = {}
        JsonOpciones["Count"] = 0
        for Opcion in Opciones:
            try:
                Opcion[0] = config.get_localized_string(int(Opcion[0]))
            except:
                pass
            try:
                ops = Opcion[3].split("|")
                for x, op in enumerate(ops):
                    ops[x] = config.get_localized_string(int(ops[x]))
                Opcion[3] = "|".join(ops)
            except:
                pass
            try:
                Opcion[8] = config.get_localized_string(int(Opcion[8]))
            except:
                pass

            JsonOpciones["Label" + str(JsonOpciones["Count"])] = Opcion[0]
            JsonOpciones["Id" + str(JsonOpciones["Count"])] = Opcion[1]
            JsonOpciones["Type" + str(JsonOpciones["Count"])] = Opcion[2]
            JsonOpciones["Lvalues" + str(JsonOpciones["Count"])] = Opcion[3]
            JsonOpciones["Values" + str(JsonOpciones["Count"])] = Opcion[4]
            JsonOpciones["Value" + str(JsonOpciones["Count"])] = Opcion[5]
            JsonOpciones["Option" + str(JsonOpciones["Count"])] = Opcion[6]
            JsonOpciones["Enabled" + str(JsonOpciones["Count"])] = Opcion[7]
            JsonOpciones["Category" + str(JsonOpciones["Count"])] = Opcion[8]
            JsonOpciones["Count"] += 1

        JsonData["Action"] = "OpenConfig"
        JsonData["Options"] = JsonOpciones

        SendMessage(json.dumps(JsonData))
        # logger.info("-----------------------------------------------------------------------")
        # logger.info("Petición de 'OpenConfig' enviada")
        while GetData() == None:
            continue
        # logger.info("Respuesta Recibida: " + GetData())
        # logger.info("-----------------------------------------------------------------------")

        if GetData():
            if GetData() <> "-1":
                JsonRespuesta = json.loads(GetData())
                import config

                config.set_settings(JsonRespuesta)
            JsonData = {}
            JsonData["Action"] = "HideLoading"
            SendMessage(json.dumps(JsonData))
Beispiel #5
0
def set_opcion(item, seleccion, opciones, video_urls):
    logger.info()
    # logger.debug(item.tostring('\n'))
    salir = False
    # 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)

        if config.get_platform(True)['num_version'] >= 16.0:
            listitem.setArt({
                'icon': "DefaultVideo.png",
                'thumb': item.thumbnail
            })
        else:
            listitem.setIconImage("DefaultVideo.png")
            listitem.setThumbnailImage(item.thumbnail)

        xbmcplugin.setResolvedUrl(int(sys.argv[1]), False, listitem)

    # "Descargar"
    elif opciones[seleccion] == config.get_localized_string(30153):
        from channels import downloads
        if item.contentType == "list" or item.contentType == "tvshow":
            item.contentType = "video"
        item.play_menu = True
        downloads.save_download(item)
        salir = True

    # "Quitar de favoritos"
    elif opciones[seleccion] == config.get_localized_string(30154):
        from channels import favorites
        favorites.delFavourite(item)
        salir = True

    # "Añadir a favoritos":
    elif opciones[seleccion] == config.get_localized_string(30155):
        from channels import favorites
        item.from_channel = "favorites"
        favorites.addFavourite(item)
        salir = True

    # "Buscar Trailer":
    elif opciones[seleccion] == config.get_localized_string(30162):
        config.set_setting("subtitulo", False)
        xbmc.executebuiltin("XBMC.RunPlugin(%s?%s)" %
                            (sys.argv[0],
                             item.clone(channel="trailertools",
                                        action="buscartrailer",
                                        contextual=True).tourl()))
        salir = True

    return salir
Beispiel #6
0
def GetTrailerbyKeyboard(titulo,category):
	print "[trailertools.py] Modulo: GetTrailerbyKeyboard(titulo = %s , category = %s)"  % (titulo,category)
	devuelve = []
	keyboard = xbmc.Keyboard('default','heading')
	keyboard.setDefault(titulo)
	if titulo == "":
		keyboard.setHeading(config.get_localized_string(30112)) #"Introduce el Titulo a buscar"
	else:
		keyboard.setHeading(config.get_localized_string(30113)) #'Puedes recortar el titulo � bien cambiar a otro idioma'
	keyboard.doModal()
	if (keyboard.isConfirmed()):
		tecleado = keyboard.getText()
		if len(tecleado)>0:
			devuelve = gettrailer(tecleado,category)
			return devuelve
		else:return []
	else:return []	
Beispiel #7
0
def listar_busquedas(params, url, category):
    print "listar_busquedas()"
    channel2 = ""
    # Despliega las busquedas anteriormente guardadas
    try:
        presets = config.get_setting("presets_buscados")
        channel_preset = params.get("channel")
        if channel_preset != CHANNELNAME:
            channel2 = channel_preset
        print "channel_preset :%s" % channel_preset
        accion = params.get("action")
        matches = ""
        if "|" in presets:
            matches = presets.split("|")
            addfolder("buscador",
                      config.get_localized_string(30103) + "...", matches[0],
                      "por_teclado", channel2)  # Buscar
        else:
            addfolder("buscador",
                      config.get_localized_string(30103) + "...", "",
                      "por_teclado", channel2)
        if len(matches) > 0:
            for match in matches:

                title = scrapedurl = match

                addfolder(channel_preset, title, scrapedurl, "searchresults")
        elif presets != "":

            title = scrapedurl = presets
            addfolder(channel_preset, title, scrapedurl, "searchresults")
    except:
        addfolder("buscador",
                  config.get_localized_string(30103) + "...", "",
                  "por_teclado", channel2)

    # Cierra el directorio
    xbmcplugin.setPluginCategory(handle=int(sys.argv[1]), category=category)
    xbmcplugin.addSortMethod(handle=int(sys.argv[1]),
                             sortMethod=xbmcplugin.SORT_METHOD_NONE)
    xbmcplugin.endOfDirectory(handle=int(sys.argv[1]), succeeded=True)
Beispiel #8
0
def addfolder( canal , nombre , url , accion , channel2 = "" ):
	logger.info('[buscador.py] addfolder( "'+nombre+'" , "' + url + '" , "'+accion+'")"')
	listitem = xbmcgui.ListItem( nombre , iconImage="DefaultFolder.png")
	itemurl = '%s?channel=%s&action=%s&category=%s&url=%s&channel2=%s' % ( sys.argv[ 0 ] , canal , accion , urllib.quote_plus(nombre) , urllib.quote_plus(url),channel2 )
	
	
	if accion != "por_teclado":
		contextCommands = []
		DeleteCommand = "XBMC.RunPlugin(%s?channel=buscador&action=borrar_busqueda&title=%s&url=%s)" % ( sys.argv[ 0 ]  ,  urllib.quote_plus( nombre ) , urllib.quote_plus( url ) )
		contextCommands.append((config.get_localized_string( 30300 ),DeleteCommand))
		listitem.addContextMenuItems ( contextCommands, replaceItems=False)
		
	xbmcplugin.addDirectoryItem( handle = pluginhandle, url = itemurl , listitem=listitem, isFolder=True)
Beispiel #9
0
def get_seleccion(default_action, opciones, seleccion, video_urls):
    # preguntar
    if default_action == 0:
        # "Elige una opción"
        seleccion = dialog_select(config.get_localized_string(30163), opciones)
    # Ver en calidad baja
    elif default_action == 1:
        seleccion = 0
    # Ver en alta calidad
    elif default_action == 2:
        seleccion = len(video_urls) - 1
    else:
        seleccion = 0
    return seleccion
Beispiel #10
0
def buscartrailer(params,url,category):
	print "[trailertools.py] Modulo: buscartrailer()"
	thumbnail = ""
	videotitle = title = urllib.unquote_plus( params.get("title") ).strip()
	if config.get_localized_string(30110) in videotitle: #"Buscar tailer para"
		videotitle = videotitle.replace(config.get_localized_string(30110),"").strip()
	if config.get_localized_string(30111) in videotitle: #"Insatisfecho?, busca otra vez : "
		videotitle = videotitle.replace(config.get_localized_string(30111),"").strip()
	
		listavideos = GetTrailerbyKeyboard(videotitle.strip(),category)
	else:
		listavideos = gettrailer(videotitle.strip().strip(),category)
	if len(listavideos)>0:
		for video in listavideos:
			titulo = video[1]
			url        = video[0]
			thumbnail  = video[2]
			xbmctools.addnewvideo( "trailertools" , "youtubeplay" , category , "Directo" ,  titulo , url , thumbnail , "Ver Video" )
	
	xbmctools.addnewfolder( CHANNELNAME , "buscartrailer" , category , config.get_localized_string(30111)+" "+videotitle , url , os.path.join(IMAGES_PATH, 'trailertools.png'), "" ) #"Insatisfecho?, busca otra vez : "		
	# Propiedades
	xbmcplugin.setPluginCategory( handle=int( sys.argv[ 1 ] ), category=category )
	xbmcplugin.addSortMethod( handle=int( sys.argv[ 1 ] ), sortMethod=xbmcplugin.SORT_METHOD_NONE )
	xbmcplugin.endOfDirectory( handle=int( sys.argv[ 1 ] ), succeeded=True )
Beispiel #11
0
def addfolder(canal, nombre, url, accion, channel2=""):
    logger.info('[buscador.py] addfolder( "' + nombre + '" , "' + url +
                '" , "' + accion + '")"')
    listitem = xbmcgui.ListItem(nombre, iconImage="DefaultFolder.png")
    itemurl = '%s?channel=%s&action=%s&category=%s&url=%s&channel2=%s' % (
        sys.argv[0], canal, accion, urllib.quote_plus(nombre),
        urllib.quote_plus(url), channel2)

    if accion != "por_teclado":
        contextCommands = []
        DeleteCommand = "XBMC.RunPlugin(%s?channel=buscador&action=borrar_busqueda&title=%s&url=%s)" % (
            sys.argv[0], urllib.quote_plus(nombre), urllib.quote_plus(url))
        contextCommands.append(
            (config.get_localized_string(30300), DeleteCommand))
        listitem.addContextMenuItems(contextCommands, replaceItems=False)

    xbmcplugin.addDirectoryItem(handle=pluginhandle,
                                url=itemurl,
                                listitem=listitem,
                                isFolder=True)
Beispiel #12
0
def get_dialogo_opciones(item, default_action, strm):
    logger.info()
    # logger.debug(item.tostring('\n'))
    from core import servertools

    opciones = []
    error = False

    try:
        item.server = item.server.lower()
    except AttributeError:
        item.server = ""

    if item.server == "":
        item.server = "directo"

    # Si no es el modo normal, no muestra el diálogo porque cuelga XBMC
    muestra_dialogo = (config.get_setting("player_mode") == 0 and not strm)

    # Extrae las URL de los vídeos, y si no puedes verlo te dice el motivo
    # Permitir varias calidades para server "directo"
    if item.video_urls:
        video_urls, puedes, motivo = item.video_urls, True, ""
    else:
        video_urls, puedes, motivo = servertools.resolve_video_urls_for_playing(
            item.server, item.url, item.password, muestra_dialogo)

    seleccion = 0
    # 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:
            # "Descargar"
            opcion = config.get_localized_string(30153)
            opciones.append(opcion)

            if item.isFavourite:
                # "Quitar de favoritos"
                opciones.append(config.get_localized_string(30154))
            else:
                # "Añadir a favoritos"
                opciones.append(config.get_localized_string(30155))

            if not strm and item.contentType == 'movie':
                # "Añadir a videoteca"
                opciones.append(config.get_localized_string(30161))

        if default_action == 3:
            seleccion = len(opciones) - 1

        # Busqueda de trailers en youtube
        if item.channel not in ["Trailer", "ecarteleratrailers"]:
            # "Buscar Trailer"
            opciones.append(config.get_localized_string(30162))

    # Si no puedes ver el vídeo te informa
    else:
        if item.server != "":
            if "<br/>" in motivo:
                dialog_ok("No puedes ver ese vídeo porque...",
                          motivo.split("<br/>")[0],
                          motivo.split("<br/>")[1], item.url)
            else:
                dialog_ok("No puedes ver ese vídeo porque...", motivo,
                          item.url)
        else:
            dialog_ok("No puedes ver ese vídeo porque...",
                      "El servidor donde está alojado no está",
                      "soportado en alfa todavía", item.url)

        if item.channel == "favorites":
            # "Quitar de favoritos"
            opciones.append(config.get_localized_string(30154))

        if len(opciones) == 0:
            error = True

    return opciones, video_urls, seleccion, error
Beispiel #13
0
def alert_unsopported_server():
    # 'Servidor no soportado o desconocido' , 'Prueba en otro servidor o en otro canal'
    dialog_ok(config.get_localized_string(30065),
              config.get_localized_string(30058))
Beispiel #14
0
def alert_no_disponible_server(server):
    # 'El vídeo ya no está en %s' , 'Prueba en otro servidor o en otro canal'
    dialog_ok(config.get_localized_string(30055),
              (config.get_localized_string(30057) % server),
              config.get_localized_string(30058))
Beispiel #15
0
def set_context_commands(item, parent_item):
    """
    Función para generar los menus contextuales.
        1. Partiendo de los datos de item.context
             a. Metodo antiguo item.context tipo str separando las opciones por "|" (ejemplo: item.context = "1|2|3")
                (solo predefinidos)
            b. Metodo list: item.context es un list con las diferentes opciones del menu:
                - Predefinidos: Se cargara una opcion predefinida con un nombre.
                    item.context = ["1","2","3"]

                - dict(): Se cargara el item actual modificando los campos que se incluyan en el dict() en caso de
                    modificar los campos channel y action estos serán guardados en from_channel y from_action.
                    item.context = [{"title":"Nombre del menu", "action": "action del menu",
                                        "channel":"channel del menu"}, {...}]

        2. Añadiendo opciones segun criterios
            Se pueden añadir opciones al menu contextual a items que cumplan ciertas condiciones.


        3. Añadiendo opciones a todos los items
            Se pueden añadir opciones al menu contextual para todos los items

        4. Se pueden deshabilitar las opciones del menu contextual añadiendo un comando 'no_context' al item.context.
            Las opciones que Kodi, el skin u otro añadido añada al menu contextual no se pueden deshabilitar.

    @param item: elemento que contiene los menu contextuales
    @type item: item
    @param parent_item:
    @type parent_item: item
    """
    context_commands = []
    num_version_xbmc = config.get_platform(True)['num_version']

    # Creamos un list con las diferentes opciones incluidas en item.context
    if type(item.context) == str:
        context = item.context.split("|")
    elif type(item.context) == list:
        context = item.context
    else:
        context = []

    # Opciones segun item.context
    for command in context:
        # Predefinidos
        if type(command) == str:
            if command == "no_context":
                return []

        # Formato dict
        if type(command) == dict:
            # Los parametros del dict, se sobreescriben al nuevo context_item en caso de sobreescribir "action" y
            # "channel", los datos originales se guardan en "from_action" y "from_channel"
            if "action" in command:
                command["from_action"] = item.action
            if "channel" in command:
                command["from_channel"] = item.channel

            if "goto" in command:
                context_commands.append(
                    (command["title"], "XBMC.Container.Refresh (%s?%s)" %
                     (sys.argv[0], item.clone(**command).tourl())))
            else:
                context_commands.append(
                    (command["title"], "XBMC.RunPlugin(%s?%s)" %
                     (sys.argv[0], item.clone(**command).tourl())))

    # Opciones segun criterios, solo si el item no es un tag (etiqueta), ni es "Añadir a la videoteca", etc...
    if item.action and item.action not in [
            "add_pelicula_to_library", "add_serie_to_library", "buscartrailer"
    ]:
        # Mostrar informacion: si el item tiene plot suponemos q es una serie, temporada, capitulo o pelicula
        if item.infoLabels['plot'] and (num_version_xbmc < 17.0
                                        or item.contentType == 'season'):
            context_commands.append(("Información", "XBMC.Action(Info)"))

        # ExtendedInfo: Si esta instalado el addon y se cumplen una serie de condiciones
        if xbmc.getCondVisibility('System.HasAddon(script.extendedinfo)') \
                and config.get_setting("extended_info") == True:
            if item.contentType == "episode" and item.contentEpisodeNumber and item.contentSeason \
                    and (item.infoLabels['tmdb_id'] or item.contentSerieName):
                param = "tvshow_id =%s, tvshow=%s, season=%s, episode=%s" \
                        % (item.infoLabels['tmdb_id'], item.contentSerieName, item.contentSeason,
                           item.contentEpisodeNumber)
                context_commands.append((
                    "ExtendedInfo",
                    "XBMC.RunScript(script.extendedinfo,info=extendedepisodeinfo,%s)"
                    % param))

            elif item.contentType == "season" and item.contentSeason \
                    and (item.infoLabels['tmdb_id'] or item.contentSerieName):
                param = "tvshow_id =%s,tvshow=%s, season=%s" \
                        % (item.infoLabels['tmdb_id'], item.contentSerieName, item.contentSeason)
                context_commands.append(
                    ("ExtendedInfo",
                     "XBMC.RunScript(script.extendedinfo,info=seasoninfo,%s)" %
                     param))

            elif item.contentType == "tvshow" and (
                    item.infoLabels['tmdb_id'] or item.infoLabels['tvdb_id']
                    or item.infoLabels['imdb_id'] or item.contentSerieName):
                param = "id =%s,tvdb_id=%s,imdb_id=%s,name=%s" \
                        % (item.infoLabels['tmdb_id'], item.infoLabels['tvdb_id'], item.infoLabels['imdb_id'],
                           item.contentSerieName)
                context_commands.append((
                    "ExtendedInfo",
                    "XBMC.RunScript(script.extendedinfo,info=extendedtvinfo,%s)"
                    % param))

            elif item.contentType == "movie" and (item.infoLabels['tmdb_id']
                                                  or item.infoLabels['imdb_id']
                                                  or item.contentTitle):
                param = "id =%s,imdb_id=%s,name=%s" \
                        % (item.infoLabels['tmdb_id'], item.infoLabels['imdb_id'], item.contentTitle)
                context_commands.append(
                    ("ExtendedInfo",
                     "XBMC.RunScript(script.extendedinfo,info=extendedinfo,%s)"
                     % param))

        # InfoPlus
        if config.get_setting("infoplus") == True:
            if item.infoLabels['tmdb_id'] or item.infoLabels['imdb_id'] or item.infoLabels['tvdb_id'] or \
                    (item.contentTitle and item.infoLabels["year"]) or item.contentSerieName:
                context_commands.append(
                    ("InfoPlus", "XBMC.RunPlugin(%s?%s)" %
                     (sys.argv[0],
                      item.clone(channel="infoplus",
                                 action="start",
                                 from_channel=item.channel).tourl())))

        # Ir al Menu Principal (channel.mainlist)
        if parent_item.channel not in ["news", "channelselector"] and item.action != "mainlist" \
                and parent_item.action != "mainlist":
            context_commands.append(
                ("Ir al Menu Principal", "XBMC.Container.Refresh (%s?%s)" %
                 (sys.argv[0], Item(channel=item.channel,
                                    action="mainlist").tourl())))

        # Añadir a Favoritos
        if num_version_xbmc < 17.0 and \
                ((item.channel not in ["favorites", "videolibrary", "help", ""]
                  or item.action in ["update_videolibrary"]) and parent_item.channel != "favorites"):
            context_commands.append(
                (config.get_localized_string(30155), "XBMC.RunPlugin(%s?%s)" %
                 (sys.argv[0],
                  item.clone(channel="favorites",
                             action="addFavourite",
                             from_channel=item.channel,
                             from_action=item.action).tourl())))
        #Buscar en otros canales
        if item.contentType in ['movie', 'tvshow'
                                ] and item.channel != 'search':
            # Buscar en otros canales
            if item.contentSerieName != '':
                item.wanted = item.contentSerieName
            else:
                item.wanted = item.contentTitle
            context_commands.append(
                ("[COLOR yellow]Buscar en otros canales[/COLOR]",
                 "XBMC.Container.Update (%s?%s)" %
                 (sys.argv[0],
                  item.clone(channel='search',
                             action="do_search",
                             from_channel=item.channel,
                             contextual=True).tourl())))
        #Definir como Pagina de inicio
        if config.get_setting('start_page'):
            if item.action not in ['findvideos', 'play']:
                context_commands.insert(
                    0,
                    ("[COLOR 0xffccff00]Definir como pagina de inicio[/COLOR]",
                     "XBMC.RunPlugin(%s?%s)" %
                     (sys.argv[0],
                      Item(channel='side_menu',
                           action="set_custom_start",
                           parent=item.tourl()).tourl())))

        if item.channel != "videolibrary":
            # Añadir Serie a la videoteca
            if item.action in ["episodios", "get_episodios"
                               ] and item.contentSerieName:
                context_commands.append(
                    ("Añadir Serie a Videoteca", "XBMC.RunPlugin(%s?%s)" %
                     (sys.argv[0],
                      item.clone(action="add_serie_to_library",
                                 from_action=item.action).tourl())))
            # Añadir Pelicula a videoteca
            elif item.action in [
                    "detail", "findvideos"
            ] and item.contentType == 'movie' and item.contentTitle:
                context_commands.append(
                    ("Añadir Pelicula a Videoteca", "XBMC.RunPlugin(%s?%s)" %
                     (sys.argv[0],
                      item.clone(action="add_pelicula_to_library",
                                 from_action=item.action).tourl())))

        if item.channel != "downloads":
            # Descargar pelicula
            if item.contentType == "movie" and item.contentTitle:
                context_commands.append(
                    ("Descargar Pelicula", "XBMC.RunPlugin(%s?%s)" %
                     (sys.argv[0],
                      item.clone(channel="downloads",
                                 action="save_download",
                                 from_channel=item.channel,
                                 from_action=item.action).tourl())))

            elif item.contentSerieName:
                # Descargar serie
                if item.contentType == "tvshow":
                    context_commands.append(
                        ("Descargar Serie", "XBMC.RunPlugin(%s?%s)" %
                         (sys.argv[0],
                          item.clone(channel="downloads",
                                     action="save_download",
                                     from_channel=item.channel,
                                     from_action=item.action).tourl())))

                # Descargar episodio
                if item.contentType == "episode":
                    context_commands.append(
                        ("Descargar Episodio", "XBMC.RunPlugin(%s?%s)" %
                         (sys.argv[0],
                          item.clone(channel="downloads",
                                     action="save_download",
                                     from_channel=item.channel,
                                     from_action=item.action).tourl())))

                # Descargar temporada
                if item.contentType == "season":
                    context_commands.append(
                        ("Descargar Temporada", "XBMC.RunPlugin(%s?%s)" %
                         (sys.argv[0],
                          item.clone(channel="downloads",
                                     action="save_download",
                                     from_channel=item.channel,
                                     from_action=item.action).tourl())))

        # Abrir configuración
        if parent_item.channel not in ["setting", "news", "search"]:
            context_commands.append(
                ("Abrir Configuración", "XBMC.Container.Update(%s?%s)" %
                 (sys.argv[0], Item(channel="setting",
                                    action="mainlist").tourl())))

        # Buscar Trailer
        if item.action == "findvideos" or "buscar_trailer" in context:
            context_commands.append(
                ("Buscar Trailer", "XBMC.RunPlugin(%s?%s)" %
                 (sys.argv[0],
                  item.clone(channel="trailertools",
                             action="buscartrailer",
                             contextual=True).tourl())))

    # Añadir SuperFavourites al menu contextual (1.0.53 o superior necesario)
    sf_file_path = xbmc.translatePath(
        "special://home/addons/plugin.program.super.favourites/LaunchSFMenu.py"
    )
    check_sf = os.path.exists(sf_file_path)
    if check_sf and xbmc.getCondVisibility(
            'System.HasAddon("plugin.program.super.favourites")'):
        context_commands.append((
            "Super Favourites Menu",
            "XBMC.RunScript(special://home/addons/plugin.program.super.favourites/LaunchSFMenu.py)"
        ))

    context_commands = sorted(context_commands, key=lambda comand: comand[0])
    # Menu Rapido
    context_commands.insert(0, ("[COLOR 0xffccff00]<Menú Rápido>[/COLOR]",
                                "XBMC.Container.Update (%s?%s)" %
                                (sys.argv[0],
                                 Item(channel='side_menu',
                                      action="open_menu",
                                      parent=parent_item.tourl()).tourl())))
    return context_commands