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
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
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
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 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
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(" ", " ") # 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 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(" ", " ") # 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
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