def ItemInfo(parent, item, windowmode):
    item.title = unicode(item.title,"utf-8","ignore").encode("utf8")
    item.fulltitle = unicode(item.fulltitle,"utf-8","ignore").encode("utf8")
    item.plot = unicode(item.plot,"utf-8","ignore").encode("utf8")
    titulo = item.title
    
    import time   
    if item.duration:
      if item.duration > 3599: 
        Tiempo = time.strftime("%H:%M:%S", time.gmtime(item.duration))
      else:
        Tiempo= time.strftime("%M:%S", time.gmtime(item.duration))
    if item.action <> "mainlist":
      if config.get_setting("duracionentitulo")=="true" and item.duration: titulo = titulo + " [COLOR gold](" + Tiempo + ")[/COLOR]" 
      if config.get_setting("calidadentitulo")=="true" and item.quality: titulo = titulo + " [COLOR orange][" + item.quality + "][/COLOR]"   
      if config.get_setting("idiomaentitulo")=="true" and item.language: titulo = titulo + " [COLOR green][" + item.language + "][/COLOR]"
      
    #Si el item tiene fulltitle este manda sobre lo anterior, se mostrara este. 
    if item.fulltitle:
      titulo=item.fulltitle
    thumbnail = item.thumbnail
    if thumbnail == "" and item.folder == True: thumbnail = "%s/thumb_folder.png"
    if thumbnail == "" and item.folder == False: thumbnail = "%s/thumb_nofolder.png"

    if windowmode == 2:
      if "%sthumb_atras.png" in thumbnail: thumbnail = thumbnail %(os.path.join(config.get_runtime_path(), 'resources', "images","icon_"))
      if "%s" in thumbnail: thumbnail = thumbnail %(config.get_thumbnail_path(""))
    else:
      if "%sthumb_atras.png" in thumbnail: thumbnail = thumbnail %(os.path.join(config.get_runtime_path(), 'resources', "images",""))
      if "%s" in thumbnail: thumbnail = thumbnail %(config.get_thumbnail_path("bannermenu"))
    
    return item, titulo, thumbnail
示例#2
0
  def render_items(self, itemlist, parentitem):
    from core.item import Item
        
    if (parentitem.channel=="channelselector" and parentitem.action=="mainlist") or (parentitem.channel=="novedades" and parentitem.action=="mainlist") or (parentitem.channel=="buscador" and parentitem.action=="mainlist") or (parentitem.channel=="channelselector" and parentitem.action=="channeltypes"):
      viewmode = 0
    elif parentitem.channel=="channelselector" and parentitem.action=="listchannels":
      viewmode = 1
    else:
      viewmode = 2
    
    if not (parentitem.channel=="channelselector" and parentitem.action=="mainlist") and not itemlist[0].action=="go_back":
      if viewmode !=2:
        itemlist.insert(0,Item(title="Atrás", action="go_back",thumbnail=os.path.join(config.get_runtime_path(),"resources","images","bannermenu","thumb_atras.png")))
      else:
        itemlist.insert(0,Item(title="Atrás", action="go_back",thumbnail=os.path.join(config.get_runtime_path(),"resources","images","squares","thumb_atras.png")))
           
    for item in itemlist:
        if item.thumbnail == "" and item.action == "search": item.thumbnail = config.get_thumbnail_path() + "thumb_buscar.png"
        if item.thumbnail == "" and item.folder == True: item.thumbnail = "http://media.tvalacarta.info/pelisalacarta/thumb_folder.png"
        if item.thumbnail == "" and item.folder == False: item.thumbnail = "http://media.tvalacarta.info/pelisalacarta/thumb_nofolder.png"
        
        if "http://media.tvalacarta.info/" in item.thumbnail and not item.thumbnail.startswith("http://media.tvalacarta.info/pelisalacarta/thumb_"):
          if viewmode != 2: 
            item.thumbnail = config.get_thumbnail_path("bannermenu") + os.path.basename(item.thumbnail)
          else:
            item.thumbnail = config.get_thumbnail_path() + os.path.basename(item.thumbnail)
        
        #Estas imagenes no estan en bannermenu, asi que si queremos bannermenu, para que no se vean mal las quitamos    
        elif viewmode != 2 and item.thumbnail.startswith("http://media.tvalacarta.info/pelisalacarta/thumb_"):
          item.thumbnail = ""
            
        if item.fanart == "":
            channel_fanart = os.path.join(config.get_runtime_path(), 'resources', 'images', 'fanart', item.channel + '.jpg')
            if os.path.exists(channel_fanart):
                item.fanart = channel_fanart
            else:
                item.fanart = os.path.join(config.get_runtime_path(), "fanart.jpg")

        if item.category == "":
            item.category = parentitem.category

        if item.fulltitle == "":
            item.fulltitle = item.title

        self.AddNewItem(item, totalItems=len(itemlist))
        

    JsonData = {}
    JsonData["action"]="EndItems"
    JsonData["data"]={}
    JsonData["data"]["itemlist"]=self.item_list
    JsonData["data"]["mode"]=viewmode   
    JsonData["data"]["host"]=self.controller.host

    ID = self.send_message(JsonData)
    self.item_list= []
    while self.get_data(ID) == None:
      continue
def mainlist(item):
    logger.info("[configuracion.py] mainlist")
    if config.get_setting("enableadultmode") == "true":
        itemlist = []
        print config.get_thumbnail_path()
        itemlist.append( Item(title='Abrir configuración',channel='configuracion', action='open_settings', folder=False, thumbnail = config.get_thumbnail_path() + "configuracion.png"))
        itemlist.append( Item(title='Modificar contraseña para adultos',channel='', action='modificar_password', folder=False, thumbnail = config.get_thumbnail_path() + "configuracion.png"))
        return itemlist
    else:
        open_settings(None)
def ItemInfo(parent, item, windowmode):
    item.title = unicode(item.title, "utf-8", "ignore").encode("utf8")
    item.fulltitle = unicode(item.fulltitle, "utf-8", "ignore").encode("utf8")
    item.plot = unicode(item.plot, "utf-8", "ignore").encode("utf8")
    titulo = item.title

    import time
    if item.duration:
        if item.duration > 3599:
            Tiempo = time.strftime("%H:%M:%S", time.gmtime(item.duration))
        else:
            Tiempo = time.strftime("%M:%S", time.gmtime(item.duration))
    if item.action <> "mainlist":
        if config.get_setting("duracionentitulo") == "true" and item.duration:
            titulo = titulo + " [COLOR gold](" + Tiempo + ")[/COLOR]"
        if config.get_setting("calidadentitulo") == "true" and item.quality:
            titulo = titulo + " [COLOR orange][" + item.quality + "][/COLOR]"
        if config.get_setting("idiomaentitulo") == "true" and item.language:
            titulo = titulo + " [COLOR green][" + item.language + "][/COLOR]"

    #Si el item tiene fulltitle este manda sobre lo anterior, se mostrara este.
    if item.fulltitle:
        titulo = item.fulltitle
    thumbnail = item.thumbnail
    if thumbnail == "" and item.folder == True:
        thumbnail = "%s/thumb_folder.png"
    if thumbnail == "" and item.folder == False:
        thumbnail = "%s/thumb_nofolder.png"

    if windowmode == 2:
        if "%sthumb_atras.png" in thumbnail:
            thumbnail = thumbnail % (os.path.join(
                config.get_runtime_path(), 'resources', "images", "icon_"))
        if "%s" in thumbnail:
            thumbnail = thumbnail % (config.get_thumbnail_path(""))
    else:
        if "%sthumb_atras.png" in thumbnail:
            thumbnail = thumbnail % (os.path.join(config.get_runtime_path(),
                                                  'resources', "images", ""))
        if "%s" in thumbnail:
            thumbnail = thumbnail % (config.get_thumbnail_path("bannermenu"))

    return item, titulo, thumbnail
示例#5
0
def buscar(Globalitemlist, modulo, texto):
    import threading
    import urlparse
    import time
    Inicio = time.time()
    Threads[threading.current_thread().name] = {
        "Canal": modulo.channel,
        "Inicio": Inicio,
        "Tiempo": None
    }
    ListaCanales = []

    try:
        exec "from channels import " + modulo.channel + " as channel"
        mainlist_itemlist = channel.mainlist(Item())
        for item in mainlist_itemlist:
            if item.action == "search":
                url = item.url
                itemlist = []
                itemlist.extend(channel.search(item, texto))
                if config.get_setting("buscador_resultados") == "1":
                    if len(itemlist) > 0:
                        cantidad = str(len(itemlist))
                        if len(itemlist) > 1:
                            if itemlist[len(itemlist) -
                                        1].action <> itemlist[len(itemlist) -
                                                              2].action:
                                cantidad = str(len(itemlist)) + "+"
                        ListaCanales.append(
                            Item(channel=__channel__,
                                 thumbnail=urlparse.urljoin(
                                     config.get_thumbnail_path(),
                                     modulo.channel + ".png"),
                                 action='buscar_canal',
                                 url=modulo.channel + "{}" + url + "{}" +
                                 texto,
                                 title=modulo.title + " (" + cantidad + ")"))
                else:

                    if len(itemlist) > 1:
                        if itemlist[len(itemlist) -
                                    1].action <> itemlist[len(itemlist) -
                                                          2].action:
                            itemlist.remove(itemlist[len(itemlist) - 1])
                    ListaCanales.extend(itemlist)

    except:
        logger.info("No se puede buscar en: " + modulo.channel)
    Globalitemlist.extend(ListaCanales)
    if config.get_setting("buscador_multithread") == "1":
        Threads[
            threading.current_thread().name]["Tiempo"] = time.time() - Inicio
def channels_list(category='*'):
    langlistv = ["","ES","EN","IT","PT"] # Esto no me gusta mucho
    idioma = langlistv[int(config.get_setting("languagefilter"))]
    
    itemlist = []
    if category=='*': 
        itemlist.append( Item( viewmode="movie", title="Tengo una URL", channel="tengourl", action='mainlist',language="", category="F,S,D,A", type="generic"))
    if config.get_setting("personalchannel")=="true":
        itemlist.append( Item( title=config.get_setting("personalchannelname"), channel="personal", action='mainlist', language="", category="*", type="generic",thumbnail= config.get_setting("personalchannellogo")))
    if config.get_setting("personalchannel2")=="true":
        itemlist.append( Item( title=config.get_setting("personalchannelname2"), channel="personal2", action='mainlist', language="", category="*", type="generic",thumbnail=config.get_setting("personalchannellogo2")))
    if config.get_setting("personalchannel3")=="true":
        itemlist.append( Item( title=config.get_setting("personalchannelname3"), channel="personal3", action='mainlist', language="", category="*", type="generic",thumbnail=config.get_setting("personalchannellogo3")))
    if config.get_setting("personalchannel4")=="true":
        itemlist.append( Item( title=config.get_setting("personalchannelname4"), channel="personal4", action='mainlist', language="", category="*", type="generic", thumbnail=config.get_setting("personalchannellogo4")))
    if config.get_setting("personalchannel5")=="true":
        itemlist.append( Item( title=config.get_setting("personalchannelname5"), channel="personal5", action='mainlist', language="", category="*", type="generic", thumbnail=config.get_setting("personalchannellogo5")))
    
    if os.path.exists(PATH_LIST_CHANNELS_JSON): # Si existe list_channels.json lo abrimos...
        indice_canales= json.load(open(PATH_LIST_CHANNELS_JSON))
    else: # Si no existe list_channels.json lo creamos
        indice_canales= updater.comparar_canales()
        
    for channel in sorted(indice_canales):
        
        # Control parental
        if config.get_setting("enableadultmode") == "false" and indice_canales[channel]['adult']=='true': continue 
        
        # Canales especiales (personal.py, libreria.py, etc..)
        if indice_canales[channel]['title']=='' or not(indice_canales[channel]['type'] == "generic" or indice_canales[channel]['type'] == "xbmc"): continue
        
        # Filtrado por categoria y añadimos plot
        categoria= indice_canales[channel]['category'].encode('utf8')
        if category<>"*" and category not in categoria: continue
        plot = categoria.replace("VOS","Versión original subtitulada").replace("F","Películas").replace("S","Series").replace("D","Documentales").replace("A","Anime").replace(",",", ")
        
        # Filtrado por idioma
        if indice_canales[channel]['language'] !='' and idioma !="" and idioma not in indice_canales[channel]['language']: continue
        
        # Añadimos el thumbnail
        thumbnail= indice_canales[channel]['thumbnail']
        if thumbnail=='':
            thumbnail=urlparse.urljoin(config.get_thumbnail_path(),indice_canales[channel]['channel'] +".png")
        
        itemlist.append(Item(title= indice_canales[channel]['title'].encode('utf8'), channel=indice_canales[channel]['channel'].encode('utf8'), action='mainlist', language=indice_canales[channel]['language'], category=categoria, type=indice_canales[channel]['type'], thumbnail= thumbnail, plot=plot)) 
        #logger.info("[channelselector] channel: " + str(channel))
    return itemlist
示例#7
0
    def UpdateInfo(self):
        try:
            item = self.itemlist[self.control_list.getSelectedPosition()]
        except:
            self.getControl(201).setImage("")
            self.getControl(202).setText("")
            self.getControl(203).setText("")
            self.getControl(204).setVisible(True)
            self.getControl(205).setVisible(True)
            return

        if self.control_list.getId() == 303:
            if not item.action == "go_back" and not item.action == "search":
                if item.thumbnail != "" and not "thumb_error" in item.thumbnail and not "thumb_folder" in item.thumbnail and not "thumb_nofolder" in item.thumbnail:
                    if "%s" in item.thumbnail:
                        thumbnail = item.thumbnail % (
                            config.get_thumbnail_path(""))
                    else:
                        thumbnail = item.thumbnail
                    self.getControl(201).setImage(thumbnail)
                    self.getControl(202).setText(item.title)
                    self.getControl(203).setText(item.plot)
                    self.getControl(204).setVisible(False)
                    self.getControl(205).setVisible(False)
                else:
                    self.getControl(201).setImage("")
                    self.getControl(202).setText("")
                    self.getControl(203).setText("")
                    self.getControl(204).setVisible(True)
                    self.getControl(205).setVisible(True)
            else:
                self.getControl(201).setImage("")
                self.getControl(202).setText("")
                self.getControl(203).setText("")
                self.getControl(204).setVisible(True)
                self.getControl(205).setVisible(True)
        else:
            self.getControl(201).setImage("")
            self.getControl(202).setText("")
            self.getControl(203).setText("")
            self.getControl(204).setVisible(True)
            self.getControl(205).setVisible(True)
示例#8
0
 def UpdateInfo(self):
   try:
     item = self.itemlist[self.control_list.getSelectedPosition()]
   except:
     self.getControl(201).setImage("") 
     self.getControl(202).setText("") 
     self.getControl(203).setText("")
     self.getControl(204).setVisible(True)
     self.getControl(205).setVisible(True)
     return
   
   if self.control_list.getId() == 303:
     if not item.action =="go_back" and not item.action == "search":
       if item.thumbnail!="" and not "thumb_error" in item.thumbnail and not "thumb_folder" in item.thumbnail and not "thumb_nofolder" in item.thumbnail: 
         if "%s" in item.thumbnail: thumbnail = item.thumbnail %(config.get_thumbnail_path(""))
         else: thumbnail = item.thumbnail
         self.getControl(201).setImage(thumbnail) 
         self.getControl(202).setText(item.title) 
         self.getControl(203).setText(item.plot)
         self.getControl(204).setVisible(False)
         self.getControl(205).setVisible(False)
       else:
         self.getControl(201).setImage("") 
         self.getControl(202).setText("") 
         self.getControl(203).setText("")
         self.getControl(204).setVisible(True)
         self.getControl(205).setVisible(True)
     else:
       self.getControl(201).setImage("") 
       self.getControl(202).setText("") 
       self.getControl(203).setText("")
       self.getControl(204).setVisible(True)
       self.getControl(205).setVisible(True)
   else:
     self.getControl(201).setImage("") 
     self.getControl(202).setText("") 
     self.getControl(203).setText("")
     self.getControl(204).setVisible(True)
     self.getControl(205).setVisible(True)
def channeltypes(item):
    logger.info("channelselector.channeltypes")
       
    itemlist = []
    itemlist.append( Item( title=config.get_localized_string(30121) , channel="channelselector" , action="listchannels" , category="*"   , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"channelselector")))
    itemlist.append( Item( title=config.get_localized_string(30122) , channel="channelselector" , action="listchannels" , category="F"   , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"peliculas")))
    itemlist.append( Item( title=config.get_localized_string(30123) , channel="channelselector" , action="listchannels" , category="S"   , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"series")))
    itemlist.append( Item( title=config.get_localized_string(30124) , channel="channelselector" , action="listchannels" , category="A"   , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"anime")))
    itemlist.append( Item( title=config.get_localized_string(30125) , channel="channelselector" , action="listchannels" , category="D"   , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"documentales")))
    itemlist.append( Item( title=config.get_localized_string(30136) , channel="channelselector" , action="listchannels" , category="VOS" , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"versionoriginal")))
    itemlist.append( Item( title=config.get_localized_string(30126) , channel="channelselector" , action="listchannels" , category="M"   , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"musica")))
    itemlist.append( Item( title=config.get_localized_string(30127) , channel="channelselector" , action="listchannels" , category="G"   , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"servidores")))
    #itemlist.append( Item( title=config.get_localized_string(30134) , channel="channelselector" , action="listchannels" , category="NEW" , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"novedades")))
        
    return itemlist
def mainlist(item):
    logger.info("channelselector.mainlist")

    # Obtiene el idioma, y el literal
    idioma = config.get_setting("languagefilter")
    logger.info("channelselector.mainlist idioma=%s" % idioma)
    langlistv = [config.get_localized_string(30025),config.get_localized_string(30026),config.get_localized_string(30027),config.get_localized_string(30028),config.get_localized_string(30029)]
    try:
        idiomav = langlistv[int(idioma)]
    except:
        idiomav = langlistv[0]
   
    # Añade los canales que forman el menú principal
    itemlist = []
    itemlist.append( Item(title=config.get_localized_string(30118)+" ("+idiomav+")" , channel="channelselector" , action="listchannels", category='*', thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"channelselector.png") ) ) # Canales
    itemlist.append( Item(title=config.get_localized_string(30119)+" ("+idiomav+")" , channel="channelselector" , action="channeltypes", thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"channelselector.png") ) ) # Seleccione una categoria
    itemlist.append( Item(title=config.get_localized_string(30103) , channel="buscador" , action="mainlist" , thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"buscador.png")) )
    itemlist.append( Item(title=config.get_localized_string(30128) , channel="trailertools" , action="mainlist" , thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"trailertools.png")) )
    itemlist.append( Item(title=config.get_localized_string(30102) , channel="favoritos" , action="mainlist" , thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"favoritos.png")) )
    if config.get_platform() in ("wiimc","rss") :itemlist.append( Item(title="Wiideoteca (Beta)" , channel="wiideoteca" , action="mainlist", thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"wiideoteca.png")) )
    if config.get_platform()=="rss":itemlist.append( Item(title="pyLOAD (Beta)" , channel="pyload" , action="mainlist" , thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"pyload.png")) )
    itemlist.append( Item(title=config.get_localized_string(30101) , channel="descargas" , action="mainlist", thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"descargas.png")) )
    
    if "xbmceden" in config.get_platform():
        itemlist.append( Item(title=config.get_localized_string(30100) , channel="configuracion" , action="mainlist", thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"configuracion.png"), folder=False) )
    else:
        itemlist.append( Item(title=config.get_localized_string(30100) , channel="configuracion" , action="mainlist", thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"configuracion.png")) )

    if config.get_platform()!="rss": itemlist.append( Item(title=config.get_localized_string(30104) , channel="ayuda" , action="mainlist", thumbnail = urlparse.urljoin(config.get_thumbnail_path(),"ayuda.png")) )
     
    return itemlist
示例#11
0
    def render_items(self, itemlist, parent_item):
        """
        Función encargada de mostrar el itemlist, se pasa como parametros el itemlist y el item del que procede
        @type itemlist: list
        @param itemlist: lista de elementos a mostrar

        @type parent_item: item
        @param parent_item: elemento padre
        """

        # Si el itemlist no es un list salimos
        if not type(itemlist) == list:
            JsonData = {}
            JsonData["action"] = "HideLoading"
            JsonData["data"] = {}
            self.send_message(JsonData)
            return

        # Si no hay ningun item, mostramos un aviso
        if not len(itemlist):
            itemlist.append(Item(title="No hay elementos que mostrar"))

        if parent_item.channel == "channelselector" and not parent_item.action == "filterchannels":
            parent_item.viewmode = "banner"
        elif parent_item.channel == "channelselector" and parent_item.action == "filterchannels":
            parent_item.viewmode = "channel"

        #Item Atrás
        if not (parent_item.channel == "channelselector" and parent_item.action
                == "mainlist") and not itemlist[0].action == "go_back":
            if parent_item.viewmode in ["banner", "channel"]:
                itemlist.insert(
                    0,
                    Item(title="Atrás",
                         action="go_back",
                         thumbnail=os.path.join(config.get_runtime_path(),
                                                "resources", "images",
                                                "bannermenu",
                                                "thumb_atras.png")))
            else:
                itemlist.insert(
                    0,
                    Item(title="Atrás",
                         action="go_back",
                         thumbnail=os.path.join(config.get_runtime_path(),
                                                "resources", "images",
                                                "squares", "thumb_atras.png")))

        JsonData = {}
        JsonData["action"] = "EndItems"
        JsonData["data"] = {}
        JsonData["data"]["itemlist"] = []
        JsonData["data"]["viewmode"] = parent_item.viewmode
        JsonData["data"]["category"] = parent_item.category.capitalize()
        JsonData["data"]["host"] = self.controller.host

        # Recorremos el itemlist
        for item in itemlist:

            if not item.thumbnail and item.action == "search":
                item.thumbnail = config.get_thumbnail_path(
                ) + "thumb_buscar.png"
            if not item.thumbnail and item.folder == True:
                item.thumbnail = "http://media.tvalacarta.info/pelisalacarta/thumb_folder.png"
            if not item.thumbnail and item.folder == False:
                item.thumbnail = "http://media.tvalacarta.info/pelisalacarta/thumb_nofolder.png"
            if "http://media.tvalacarta.info/" in item.thumbnail and not item.thumbnail.startswith(
                    "http://media.tvalacarta.info/pelisalacarta/thumb_"):

                if parent_item.viewmode in ["banner", "channel"]:
                    item.thumbnail = config.get_thumbnail_path(
                        "bannermenu") + os.path.basename(item.thumbnail)
                else:
                    item.thumbnail = config.get_thumbnail_path(
                    ) + os.path.basename(item.thumbnail)

            #Estas imagenes no estan en bannermenu, asi que si queremos bannermenu, para que no se vean mal las quitamos
            elif parent_item.viewmode in [
                    "banner", "channel"
            ] and item.thumbnail.startswith(
                    "http://media.tvalacarta.info/pelisalacarta/thumb_"):
                item.thumbnail = ""

            # Si el item no contiene categoria,le ponemos la del item padre
            if item.category == "":
                item.category = parent_item.category

            # Si el item no contiene fanart,le ponemos la del item padre
            if item.fanart == "":
                item.fanart = parent_item.fanart

            title = item.title.replace(" ", "&nbsp;")
            # Formatear titulo
            if item.text_color:
                title = '[COLOR %s]%s[/COLOR]' % (item.text_color, title)
            if item.text_blod:
                title = '[B]%s[/B]' % title
            if item.text_italic:
                title = '[I]%s[/I]' % title

            matches = re.compile("(\[I\])(?:.*?)(\[\/I\])").findall(title)
            for match in matches:
                title = title.replace(match[0],
                                      "<i>").replace(match[1], "</i>")

            matches = re.compile("(\[B\])(?:.*?)(\[\/B\])").findall(title)
            for match in matches:
                title = title.replace(match[0],
                                      "<b>").replace(match[1], "</b>")

            matches = re.compile(
                "(\[COLOR ([^\]]+)\])(?:.*?)(\[\/COLOR\])").findall(title)
            for match in matches:
                title = title.replace(match[0],
                                      "<span style='color:" + match[1] +
                                      "'>").replace(match[2], "</span>")

            JsonItem = {}
            JsonItem["title"] = title
            JsonItem["thumbnail"] = item.thumbnail
            JsonItem["fanart"] = item.fanart
            JsonItem["plot"] = item.plot
            JsonItem["action"] = item.action
            JsonItem["url"] = item.tourl()
            JsonItem["context"] = []
            if not item.action == "go_back":
                for Comando in self.set_context_commands(item, parent_item):
                    JsonItem["context"].append({
                        "title": Comando[0],
                        "url": Comando[1]
                    })

            JsonData["data"]["itemlist"].append(JsonItem)

        ID = self.send_message(JsonData)
        self.get_data(ID)
示例#12
0
    def render_items(self, itemlist, parent_item):
        """
        Función encargada de mostrar el itemlist, se pasa como parametros el itemlist y el item del que procede
        @type itemlist: list
        @param itemlist: lista de elementos a mostrar

        @type parent_item: item
        @param parent_item: elemento padre
        """

        # Si el itemlist no es un list salimos
        if not type(itemlist) == list:
            JsonData = {}
            JsonData["action"]="HideLoading"
            JsonData["data"] = {}
            self.send_message(JsonData)
            return

        # Si no hay ningun item, mostramos un aviso
        if not len(itemlist):
            itemlist.append(Item(title="No hay elementos que mostrar"))
        
        if parent_item.channel == "channelselector" and not parent_item.action == "filterchannels":
          parent_item.viewmode = "banner"
        elif parent_item.channel == "channelselector" and  parent_item.action == "filterchannels":
          parent_item.viewmode = "channel"

        
        #Item Atrás
        if not (parent_item.channel=="channelselector" and parent_item.action=="mainlist") and not itemlist[0].action=="go_back":
          if parent_item.viewmode in ["banner", "channel"]:
            itemlist.insert(0,Item(title="Atrás", action="go_back",thumbnail=os.path.join(config.get_runtime_path(),"resources","images","bannermenu","thumb_atras.png")))
          else:
            itemlist.insert(0,Item(title="Atrás", action="go_back",thumbnail=os.path.join(config.get_runtime_path(),"resources","images","squares","thumb_atras.png")))
               
        JsonData = {}
        JsonData["action"] = "EndItems"
        JsonData["data"] = {}
        JsonData["data"]["itemlist"] = []
        JsonData["data"]["viewmode"] = parent_item.viewmode   
        JsonData["data"]["category"] = parent_item.category.capitalize()
        JsonData["data"]["host"] = self.controller.host
        
        # Recorremos el itemlist
        for item in itemlist:
                
            if not item.thumbnail and item.action == "search": item.thumbnail = config.get_thumbnail_path() + "thumb_buscar.png"
            if not item.thumbnail and item.folder == True: item.thumbnail = "http://media.tvalacarta.info/pelisalacarta/thumb_folder.png"
            if not item.thumbnail and item.folder == False: item.thumbnail = "http://media.tvalacarta.info/pelisalacarta/thumb_nofolder.png"
            if "http://media.tvalacarta.info/" in item.thumbnail and not item.thumbnail.startswith("http://media.tvalacarta.info/pelisalacarta/thumb_"):
            
              if parent_item.viewmode in ["banner", "channel"]: 
                item.thumbnail = config.get_thumbnail_path("bannermenu") + os.path.basename(item.thumbnail)
              else:
                item.thumbnail = config.get_thumbnail_path() + os.path.basename(item.thumbnail)
            
            #Estas imagenes no estan en bannermenu, asi que si queremos bannermenu, para que no se vean mal las quitamos    
            elif parent_item.viewmode in ["banner", "channel"] and item.thumbnail.startswith("http://media.tvalacarta.info/pelisalacarta/thumb_"):
              item.thumbnail = ""
              

            # Si el item no contiene categoria,le ponemos la del item padre
            if item.category == "":
                item.category = parent_item.category

            # Si el item no contiene fanart,le ponemos la del item padre
            if item.fanart == "":
                item.fanart = parent_item.fanart
            
            title = item.title.replace(" ", "&nbsp;")
            # Formatear titulo
            if item.text_color:
                title = '[COLOR %s]%s[/COLOR]' % (item.text_color, title)
            if item.text_blod:
                title = '[B]%s[/B]' % title
            if item.text_italic:
                title = '[I]%s[/I]' % title
            
            
            matches = re.compile("(\[I\])(?:.*?)(\[\/I\])").findall(title)
            for match in matches:
              title=title.replace(match[0], "<i>").replace(match[1],"</i>")
              
            matches = re.compile("(\[B\])(?:.*?)(\[\/B\])").findall(title)
            for match in matches:
              title=title.replace(match[0], "<b>").replace(match[1],"</b>")
              
            matches = re.compile("(\[COLOR ([^\]]+)\])(?:.*?)(\[\/COLOR\])").findall(title)
            for match in matches:
              title=title.replace(match[0],"<span style='color:"+match[1]+"'>").replace(match[2],"</span>")
              
            JsonItem = {}
            JsonItem["title"]=title
            JsonItem["thumbnail"]= item.thumbnail
            JsonItem["fanart"]=item.fanart
            JsonItem["plot"]=item.plot
            JsonItem["action"]=item.action
            JsonItem["url"]=item.tourl()
            JsonItem["context"]=[]
            if not item.action == "go_back":
              for Comando in self.set_context_commands(item, parent_item):
                JsonItem["context"].append({"title":Comando[0],"url": Comando[1]})
              
            JsonData["data"]["itemlist"].append(JsonItem)


        ID = self.send_message(JsonData)
        self.get_data(ID)
def mainlist(item):
    logger.info("channelselector.mainlist")

    # Obtiene el idioma, y el literal
    idioma = config.get_setting("languagefilter")
    logger.info("channelselector.mainlist idioma=%s" % idioma)
    langlistv = [
        config.get_localized_string(30025),
        config.get_localized_string(30026),
        config.get_localized_string(30027),
        config.get_localized_string(30028),
        config.get_localized_string(30029)
    ]
    try:
        idiomav = langlistv[int(idioma)]
    except:
        idiomav = langlistv[0]

    # Añade los canales que forman el menú principal
    itemlist = []
    itemlist.append(
        Item(title=config.get_localized_string(30118) + " (" + idiomav + ")",
             channel="channelselector",
             action="listchannels",
             category='*',
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "channelselector.png")))  # Canales
    itemlist.append(
        Item(title=config.get_localized_string(30119) + " (" + idiomav + ")",
             channel="channelselector",
             action="channeltypes",
             thumbnail=urlparse.urljoin(
                 config.get_thumbnail_path(),
                 "channelselector.png")))  # Seleccione una categoria
    itemlist.append(
        Item(title=config.get_localized_string(30103),
             channel="buscador",
             action="mainlist",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "buscador.png")))
    itemlist.append(
        Item(title=config.get_localized_string(30128),
             channel="trailertools",
             action="mainlist",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "trailertools.png")))
    itemlist.append(
        Item(title=config.get_localized_string(30102),
             channel="favoritos",
             action="mainlist",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "favoritos.png")))
    if config.get_platform() in ("wiimc", "rss"):
        itemlist.append(
            Item(title="Wiideoteca (Beta)",
                 channel="wiideoteca",
                 action="mainlist",
                 thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                            "wiideoteca.png")))
    if config.get_platform() == "rss":
        itemlist.append(
            Item(title="pyLOAD (Beta)",
                 channel="pyload",
                 action="mainlist",
                 thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                            "pyload.png")))
    itemlist.append(
        Item(title=config.get_localized_string(30101),
             channel="descargas",
             action="mainlist",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "descargas.png")))

    if "xbmceden" in config.get_platform():
        itemlist.append(
            Item(title=config.get_localized_string(30100),
                 channel="configuracion",
                 action="mainlist",
                 thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                            "configuracion.png"),
                 folder=False))
    else:
        itemlist.append(
            Item(title=config.get_localized_string(30100),
                 channel="configuracion",
                 action="mainlist",
                 thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                            "configuracion.png")))

    if config.get_platform() != "rss":
        itemlist.append(
            Item(title=config.get_localized_string(30104),
                 channel="ayuda",
                 action="mainlist",
                 thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                            "ayuda.png")))

    return itemlist
def channels_list(category='*'):
    langlistv = ["", "ES", "EN", "IT", "PT"]  # Esto no me gusta mucho
    idioma = langlistv[int(config.get_setting("languagefilter"))]

    itemlist = []
    if category == '*':
        itemlist.append(
            Item(viewmode="movie",
                 title="Tengo una URL",
                 channel="tengourl",
                 action='mainlist',
                 language="",
                 category="F,S,D,A",
                 type="generic"))
    if config.get_setting("personalchannel") == "true":
        itemlist.append(
            Item(title=config.get_setting("personalchannelname"),
                 channel="personal",
                 action='mainlist',
                 language="",
                 category="*",
                 type="generic",
                 thumbnail=config.get_setting("personalchannellogo")))
    if config.get_setting("personalchannel2") == "true":
        itemlist.append(
            Item(title=config.get_setting("personalchannelname2"),
                 channel="personal2",
                 action='mainlist',
                 language="",
                 category="*",
                 type="generic",
                 thumbnail=config.get_setting("personalchannellogo2")))
    if config.get_setting("personalchannel3") == "true":
        itemlist.append(
            Item(title=config.get_setting("personalchannelname3"),
                 channel="personal3",
                 action='mainlist',
                 language="",
                 category="*",
                 type="generic",
                 thumbnail=config.get_setting("personalchannellogo3")))
    if config.get_setting("personalchannel4") == "true":
        itemlist.append(
            Item(title=config.get_setting("personalchannelname4"),
                 channel="personal4",
                 action='mainlist',
                 language="",
                 category="*",
                 type="generic",
                 thumbnail=config.get_setting("personalchannellogo4")))
    if config.get_setting("personalchannel5") == "true":
        itemlist.append(
            Item(title=config.get_setting("personalchannelname5"),
                 channel="personal5",
                 action='mainlist',
                 language="",
                 category="*",
                 type="generic",
                 thumbnail=config.get_setting("personalchannellogo5")))

    if os.path.exists(PATH_LIST_CHANNELS_JSON
                      ):  # Si existe list_channels.json lo abrimos...
        indice_canales = json.load(open(PATH_LIST_CHANNELS_JSON))
    else:  # Si no existe list_channels.json lo creamos
        indice_canales = updater.comparar_canales()

    for channel in sorted(indice_canales):

        # Control parental
        if config.get_setting("enableadultmode") == "false" and indice_canales[
                channel]['adult'] == 'true':
            continue

        # Canales especiales (personal.py, libreria.py, etc..)
        if indice_canales[channel]['title'] == '' or not (
                indice_canales[channel]['type'] == "generic"
                or indice_canales[channel]['type'] == "xbmc"):
            continue

        # Filtrado por categoria y añadimos plot
        categoria = indice_canales[channel]['category'].encode('utf8')
        if category <> "*" and category not in categoria: continue
        plot = categoria.replace(
            "VOS",
            "Versión original subtitulada").replace("F", "Películas").replace(
                "S", "Series").replace("D", "Documentales").replace(
                    "A", "Anime").replace(",", ", ")

        # Filtrado por idioma
        if indice_canales[channel][
                'language'] != '' and idioma != "" and idioma not in indice_canales[
                    channel]['language']:
            continue

        # Añadimos el thumbnail
        thumbnail = indice_canales[channel]['thumbnail']
        if thumbnail == '':
            thumbnail = urlparse.urljoin(
                config.get_thumbnail_path(),
                indice_canales[channel]['channel'] + ".png")

        itemlist.append(
            Item(title=indice_canales[channel]['title'].encode('utf8'),
                 channel=indice_canales[channel]['channel'].encode('utf8'),
                 action='mainlist',
                 language=indice_canales[channel]['language'],
                 category=categoria,
                 type=indice_canales[channel]['type'],
                 thumbnail=thumbnail,
                 plot=plot))
        #logger.info("[channelselector] channel: " + str(channel))
    return itemlist
示例#15
0
def buscar(Globalitemlist,modulo, texto):
    import threading
    import urlparse
    import time
    Inicio = time.time()
    Threads[threading.current_thread().name] = {"Canal":modulo.channel,"Inicio": Inicio,"Tiempo":None}
    ListaCanales = []

    try:
      exec "from channels import "+modulo.channel+" as channel"
      mainlist_itemlist = channel.mainlist(Item())
      for item in mainlist_itemlist:
          if item.action =="search":
            url = item.url
            itemlist = []
            itemlist.extend(channel.search(item, texto))
            if config.get_setting("buscador_resultados") =="1":
              if len(itemlist)>0:  
                cantidad = str(len(itemlist))
                if len(itemlist) >1:
                  if itemlist[len(itemlist)-1].action <> itemlist[len(itemlist)-2].action:
                    cantidad = str(len(itemlist)) + "+"
                ListaCanales.append( Item(channel=__channel__ , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),modulo.channel+".png"),action='buscar_canal', url=modulo.channel +"{}"+ url +"{}"+ texto, title=modulo.title + " (" + cantidad + ")" ))
            else:
              
              if len(itemlist) >1:
                if itemlist[len(itemlist)-1].action <> itemlist[len(itemlist)-2].action:
                    itemlist.remove(itemlist[len(itemlist)-1])
              ListaCanales.extend(itemlist)
              
    except:
      logger.info("No se puede buscar en: "+ modulo.channel)  
    Globalitemlist.extend( ListaCanales)
    if config.get_setting("buscador_multithread") =="1":
      Threads[threading.current_thread().name]["Tiempo"]=time.time()-Inicio
def channeltypes(item):
    logger.info("channelselector.channeltypes")

    itemlist = []
    itemlist.append(
        Item(title=config.get_localized_string(30121),
             channel="channelselector",
             action="listchannels",
             category="*",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "channelselector")))
    itemlist.append(
        Item(title=config.get_localized_string(30122),
             channel="channelselector",
             action="listchannels",
             category="F",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "peliculas")))
    itemlist.append(
        Item(title=config.get_localized_string(30123),
             channel="channelselector",
             action="listchannels",
             category="S",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "series")))
    itemlist.append(
        Item(title=config.get_localized_string(30124),
             channel="channelselector",
             action="listchannels",
             category="A",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(), "anime")))
    itemlist.append(
        Item(title=config.get_localized_string(30125),
             channel="channelselector",
             action="listchannels",
             category="D",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "documentales")))
    itemlist.append(
        Item(title=config.get_localized_string(30136),
             channel="channelselector",
             action="listchannels",
             category="VOS",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "versionoriginal")))
    itemlist.append(
        Item(title=config.get_localized_string(30126),
             channel="channelselector",
             action="listchannels",
             category="M",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "musica")))
    itemlist.append(
        Item(title=config.get_localized_string(30127),
             channel="channelselector",
             action="listchannels",
             category="G",
             thumbnail=urlparse.urljoin(config.get_thumbnail_path(),
                                        "servidores")))
    #itemlist.append( Item( title=config.get_localized_string(30134) , channel="channelselector" , action="listchannels" , category="NEW" , thumbnail=urlparse.urljoin(config.get_thumbnail_path(),"novedades")))

    return itemlist
def listchannels(item):
    itemlist = []
    try:
        idioma = config.get_setting("languagefilter")
        logger.info("channelselector.filterchannels idioma=%s" % idioma)
        langlistv = ["","ES","EN","IT","PT"]
        idiomav = langlistv[int(idioma)]
        logger.info("channelselector.filterchannels idiomav=%s" % idiomav)
    except:
        idiomav=""

    folderchannels =  []
    disabledchannels =  []
    channelslist =[]
    hiddenchannels = ["__init__.py","ayuda.py"]
    
    for channel in os.listdir(os.path.join(config.get_runtime_path(),"pelisalacarta","channels")):
      if channel.endswith(".py") and not channel in  hiddenchannels:

          f = open(os.path.join(config.get_runtime_path(),"pelisalacarta","channels",channel),"r")
          txt = f.read(1024)
          f.close()
          patron = '(__([^_]+)__[ ]*=[ ]*["]*[\']*([^"\r\n]*)["]*[\']*[\r]*[\n]*)'
          matches = re.compile(patron,re.DOTALL).findall(txt)
          Propiedades = {}
          for Todo, key, valor in matches:
            try:
              Propiedades[key] =  int(valor)
            except:
              if valor == "True":
                Propiedades[key] =  True
              elif valor == "False":
                Propiedades[key] =  False
              else:
                Propiedades[key] =  valor

          
          #Filtro canales desactivados
          if not Propiedades["disabled"]:
            #Filtro Canales adultos
            if (Propiedades["adult"] and (config.get_setting("enableadultmode") == "true")) or not Propiedades["adult"]:
            #Filtro Categoria
              if item.category=="*" or item.category in Propiedades["category"]:
                #Filtro Idioma
                if Propiedades["language"]=="" or idiomav=="" or idiomav in Propiedades["language"]:
                  #Canal TengoUrl al principio de trodo
                  if Propiedades["channel"]=="tengourl":
                    channelslist.append(Item(title=Propiedades["title"], channel=Propiedades["channel"],action="mainlist", thumbnail=Propiedades["thumbnail"], fanart=Propiedades["fanart"], type=Propiedades["type"], category=Propiedades["category"], language=Propiedades["language"] ))
                  else:
                    folderchannels.append(Item(title=Propiedades["title"], channel=Propiedades["channel"],action="mainlist", thumbnail=Propiedades["thumbnail"], fanart=Propiedades["fanart"], type=Propiedades["type"], category=Propiedades["category"], language=Propiedades["language"] ))
                    
    if config.get_setting("personalchannel")=="true":
        channelslist.append( Item( title=config.get_setting("personalchannelname") ,action="mainlist", channel="personal" ,thumbnail=config.get_setting("personalchannellogo"), language="" , category="F,S,D,A" , type="generic"  ))
    if config.get_setting("personalchannel2")=="true":
        channelslist.append( Item( title=config.get_setting("personalchannelname2") ,action="mainlist", channel="personal2" ,thumbnail=config.get_setting("personalchannellogo2"), language="" , category="F,S,D,A" , type="generic"  ))
    if config.get_setting("personalchannel3")=="true":
        channelslist.append( Item( title=config.get_setting("personalchannelname3") ,action="mainlist", channel="personal3" ,thumbnail=config.get_setting("personalchannellogo3"), language="" , category="F,S,D,A" , type="generic"  ))
    if config.get_setting("personalchannel4")=="true":
        channelslist.append( Item( title=config.get_setting("personalchannelname4") ,action="mainlist", channel="personal4" ,thumbnail=config.get_setting("personalchannellogo4"), language="" , category="F,S,D,A" , type="generic"  ))
    if config.get_setting("personalchannel5")=="true":
        channelslist.append( Item( title=config.get_setting("personalchannelname5") ,action="mainlist", channel="personal5" ,thumbnail=config.get_setting("personalchannellogo5"), language="" , category="F,S,D,A" , type="generic"  ))

    folderchannels.sort(key=lambda item: item.title.lower().strip())
    channelslist.extend(folderchannels)

    for channel in channelslist:
        if channel.thumbnail == "": channel.thumbnail = urlparse.urljoin(config.get_thumbnail_path(),channel.channel+".png")
        channel.plot = channel.category.replace("VOS","Versión original subtitulada").replace("F","Películas").replace("S","Series").replace("D","Documentales").replace("A","Anime").replace(",",", ")
        itemlist.append(channel)

    return itemlist