Item

-
- Mensajes: 321
- Registrado: 02 Feb 2015, 15:12
Re: Item
Mensaje por supercopito » 22 Mar 2015, 07:35
-
- Mensajes: 801
- Registrado: 12 Jun 2014, 23:28
Re: Item
Mensaje por super_berny » 30 Mar 2015, 07:56
Por otro lado he estado viendo los canales multicolor del compañero nemo1978, y me preguntaba ... si los items representan elementos de un menu ¿no seria coherente añadirles un campo COLOR y que fuera el launcher el responsable de "pintar" el item al mostrarlo?
Objeto Item
Modulo tmdb
Mejorando nuestros canales
Github y Pelisalacarta
Tips Github y Pelisalacarta
Publicidad
Re: Item
Mensaje por robalo » 30 Mar 2015, 12:17
Lo que si se debe hacer, no sólo para los colores, también para todos los datos extras que nos gusta poner al título, es reservar el scrapedtitle para show.
Para los que nos gusta los colores tambén deberiamos tener el detalle de pensar en otras plataformas, como html, para que se vierán los colores y no [COLOR .....]... con algo parecido a esto:
Código: Seleccionar todo
if (config.get_platform().startswith("mediaserver"):
title = bbcode_kodi2html(text)
[......]
def bbcode_kodi2html(text):
text = re.sub(r'\[COLOR\s([^\]]+)\]',
r'<span style="color: \1">',
text)
text = text.replace('[/COLOR]','</span>')
text = text.replace('[CR]',' <br>')
text = text.replace('[B]',' <b>')
text = text.replace('[/B]','</b>')
text = text.replace('"color: yellow"','"color: gold"')
text = text.replace('"color: white"','"color: auto"')
return text
Re: Item
Mensaje por divadr » 30 Mar 2015, 14:20
Esque si es para los datos extra (Calidad, duración, etc) yo veo mas practico poner esos datos en capos para ellos, y luego cada platadorma en función de la configuración de usuario, se encargue de mostrarlo, y añadirle los colores que el usuario haya configurado.
En cambio si lo que pretendes es que todo el ítem lo pinte de un color, yo veo mas practico añadir un campo color, y que cada launcher lo interprete, y si no soporta esa función, pues lo mostrara del color por defecto, y dejar el título para lo que es...
Pensad que una cosa es el ítem.title, y otra el texto que se pinta en pantalla, no tienen porque coincidir.
Yo pienso lo siguiente:
ítem.title: el titulo de la película (que no se cambie para nada y que solo contenga el titulo)
ítem.fulltitle: en caso de que quieras mostrar otra cosa que no sea el titulo (por ejemplo "ver en [servidorx]") si el campo ítem.fulltitle contiene algo, significa que el canal quiere que se pinte el texto de una determinada manera y en ese caso el launcher pinta ese texto, pero el ítem.title sigue intacto. y cuando le demos a descargar por ejemplo, el titulo que saldrá será el de la peli y no "ver en [servidorx]" ...
Si no se especifica nada en el ítem.fulltitle, el launcher pinta en función de la configuración, algo asi: "Titulo de la película" + "[DVD-RIP]" + "(1:10:25)" y aquí seria donde se añaden los colores, para cada información un color y el usuario podría elegirlos en la configuración.
pero todo la cuestión de colores e información extra estaría en el launcher, y si el launcher lo soporta lo mostrará... sino pues mostrara el title o fulltitle tal cual y ya esta.
No hay que olvidarse que hay mas plataformas que kodi y HTML... y si las cosas comunes no se hacen pensado mas en global, luego nos complicamos mucho la vida...
Re: Item
Mensaje por robalo » 30 Mar 2015, 14:51
Código: Seleccionar todo
respuesta = bbcode_kodi2html( respuesta.replace("{$itemlist}",itemlist_string) )
except:
import sys
for line in sys.exc_info():
logger.error( "%s" % line )
return respuesta
def bbcode_kodi2html(text):
import re
text = re.sub(r'\[COLOR\s([^\]]+)\]',
r'<span style="color: \1">',
text)
text = text.replace('[/COLOR]','</span>')
text = text.replace('[CR]',' <br>')
text = text.replace('[B]',' <b>')
text = text.replace('[/B]','</b>')
text = text.replace('"color: yellow"','"color: gold"')
text = text.replace('"color: white"','"color: auto"')
return text
Demomento a modo perosonal, con los atributos que tiene actualmente la clase Item, voy sobrao y si le quitas unas pocas también.
Yo esperaría a la versión 4 y ver el planteamiento
Re: Item
Mensaje por neno1978 » 30 Abr 2015, 20:22

Yo personalmente creo al contrario q el master, q no estaría de mas algún atributo q otro para item, aunq tiene toda la razón en lo referente a los item extra y la amplitud q se le puede dar con split, la verdad es q en mis canales q comentabais , aveces siento q se me qedan cortos los atributos y utilizo algunos q no tienen esa función, algo q no me acaba de gustar. Quizás implementar la posibilidad de usar extra1, extra2 , tampoco estaría tan mal. Eso , si , coincidiendo plenamente con el master Robalo, creo q deberíamos esperar a ver la nueva versión .
En lo referente a los colores robalo, con el código q has expuesto; se solucionaría para las otras plataformas?
Re: Item
Mensaje por SeiTaN » 22 Nov 2015, 13:39
como la clase Item solo tiene atributos de tipo str, tuve que liar una bastante grande para poder hacer mi filtrado de enlaces por serie.
Código: Seleccionar todo
Item.extra = str(listado_de_filtros) + "##" + nombre_serie + "##" + str(conf_serie_actual)
Cada vez que tenía que tratar con algún tipo de dato tenía que estar dividiendo "extra" en elementos y luego dependiendo del elemento pasarlo a dict y luego para pasarlo el proceso contrario.
Por lo que se me ha ocurrido hacer dos modificaciones en Item.
1) añadir un campo diccionario.
Código: Seleccionar todo
class Item(object):
channel = ""
title = ""
url = ""
page = ""
thumbnail = ""
plot = ""
duration = ""
fanart = ""
folder = ""
action = ""
server = "directo"
extra = ""
show = ""
category = ""
childcount = 0
language = ""
type = ""
context = ""
subtitle = ""
totalItems =0
overlay = None
password = ""
fulltitle = ""
viewmode = "list"
dictionary = {}
Esto vendría bien por el tema de navegacion entre menús, ya que "action" es muy genérico y se utiliza entre los metodos de los canales y otras partes del plugin. Y nos provoca el problema ya que es una navegación lineal y no nos permite hacer saltos.
Código: Seleccionar todo
{"navegacion": {"from": "metodo_de_donde_vengo", "to": "metodo_al_que_voy"}}

2) Implementar un método que permita a través de un diccionario que setee los campos cuyo "key" exista en Item.
Código: Seleccionar todo
def from_dict(self, dictionary):
for k, v in dictionary.items():
setattr(self, k, v)
si tenemos un diccionario con los datos necesarios, estos se setearian automaticamente y con los campos que no existieran en Item no pasaría nada.
Ejemplos:
Código: Seleccionar todo
def prueba():
logger.info("--- pruebaaaa")
# dict constructor con dict literal
dictionary1 = dict(title="titulo", url="url", idioma="idioma", action="action",
dictionary={"cadena1": "mierda", "cadena2": {"idioma": "es",
"calidad_no_permitida": ["sd", "hditunes"]}})
# dict literal
dictionary2 = {"title": "titulo", "cadena2": {"idioma": "es", "calidad_no_permitida": ["sd", "hditunes"]},
"dictionary": {"campo1": "valor1", "campo2": "valor2", "campo3": ["valor3_1", "valor3_2"]}}
# dict literal con dict literal
dictionary3 = {"title": "titulo", "cadena2": {"idioma": "es", "calidad_no_permitida": ["sd", "hditunes"]},
"dictionary": {"url": "url", "campo2": "valor2", "campo3": ["valor3_1", "valor3_2"]}}
# dict literal con dict constructor
dictionary4 = {"title": "titulo", "cadena2": {"idioma": "es", "calidad_no_permitida": ["sd", "hditunes"]},
"dictionary": dict(url="url", campo2="valor2", campo3=["valor3_1", "valor3_2"])}
logger.info("--- pruebaaaa defino el dictionary")
item1 = Item()
item1.from_dict(dictionary1)
item2 = Item()
item2.from_dict(dictionary2)
item3 = Item()
item3.from_dict(dictionary3)
item4 = Item()
item4.from_dict(dictionary4)
logger.info("--- pruebaaaa item1 to string: {0}".format(item1.tostring()))
logger.info("--- pruebaaaa item2 to string: {0}".format(item2.tostring()))
logger.info("--- pruebaaaa item3 to string: {0}".format(item3.tostring()))
logger.info("--- pruebaaaa item4 to string: {0}".format(item4.tostring()))
Saludos.LOG escribió: 12:56:59 T:8288 NOTICE: --- pruebaaaa
12:56:59 T:8288 NOTICE: --- pruebaaaa defino el dictionary
12:56:59 T:8288 NOTICE: --- pruebaaaa item1 to string: title=[titulo], url=[url], thumbnail=[], action=[action], show=[], category=[], dictionary=[{'cadena1': 'mierda', 'cadena2': {'calidad_no_permitida': ['sd', 'hditunes'], 'idioma': 'es'}}]
12:56:59 T:8288 NOTICE: --- pruebaaaa item2 to string: title=[titulo], url=[], thumbnail=[], action=[], show=[], category=[], dictionary=[{'campo1': 'valor1', 'campo2': 'valor2', 'campo3': ['valor3_1', 'valor3_2']}]
12:56:59 T:8288 NOTICE: --- pruebaaaa item3 to string: title=[titulo], url=[], thumbnail=[], action=[], show=[], category=[], dictionary=[{'url': 'url', 'campo2': 'valor2', 'campo3': ['valor3_1', 'valor3_2']}]
12:56:59 T:8288 NOTICE: --- pruebaaaa item4 to string: title=[titulo], url=[], thumbnail=[], action=[], show=[], category=[], dictionary=[{'url': 'url', 'campo2': 'valor2', 'campo3': ['valor3_1', 'valor3_2']}]
Re: Item
Mensaje por robalo » 23 Nov 2015, 00:56



Se que es gusta mucho el tema json pero si se pasa de todo lo que savemos y cuando lees json entiendes array de repente te das cuenta que no necesitas librerías json para hacer lo que hacemos.
Para pasar un array en un atributo tipo string solo se tendría que escribir 'atributo=str(array)' y para recuperarlo 'exec "array = " + item.atributo'
- Ayuda sobre plugins
- ↳ tvalacarta
- ↳ Problemas (no me funciona...)
- ↳ Preguntas (cómo se hace...)
- ↳ Sugerencias (estaría bien que hubiera...)
- ↳ pelisalacarta
- ↳ Problemas (no me funciona...)
- ↳ Preguntas (cómo se hace...)
- ↳ Sugerencias (estaría bien que hubiera...)
- ↳ pelisalacarta (For Italian users)
- ↳ Problemi (Non mi funziona...)
- ↳ Domande (Come fare a...)
- ↳ Suggerimenti (Sarebbe bello che...)
- ↳ mywebtv
- ↳ Problemas (no me funciona...)
- ↳ Preguntas (cómo se hace...)
- ↳ Sugerencias (estaría bien que hubiera...)
- ↳ MediaExplorer
- ↳ Balandro
- ↳ Otros plugins
- ↳ Alfa
- ↳ Alfa (For Italian users)
- ↳ Tutoriales
- Ayuda sobre mediacenters
- ↳ XBMC / Kodi
- ↳ Plex
- ↳ Android
- ↳ Raspberry Pi
- ↳ Boxee
- ↳ WiiMC
- ↳ Enigma 2
- ↳ Otros media center
- Sugerencias
- ↳ Nuevos canales
- ↳ Mejoras
- Desarrolladores
- Comunidad
¿Qué es Mi media center?
Este es el foro oficial de soporte para pelisalacarta, tvalacarta y mywebtv.
También es un lugar para compartir tus experiencias con dispositivos multimedia y software media center, puede que encuentres algo interesante que ni siquiera sabías que se podía hacer.
Primeros pasos en Kodi
Si estás empezando con Kodi, o si estás interesado en sacarle más partido, puedes echar un vistazo a esta colección de video-tutoriales.
Aprenderás a crear y optimizar tu biblioteca, a instalar add-ons, a buscar subtítulos...
Cómo reportar un problema
Si tienes un problema en alguno de los plugins y quieres reportarlo, no olvides incluir el log.
Para que resulte útil tienes que activar la opción de "log completo" en el plugin, luego reiniciar Kodi y dar los pasos necesarios hasta que se produzca el problema.
Luego copia tu fichero de log, siguiendo las instrucciones que se describen en este enlace, e inclúyelo al final de la descripción de tu problema.
Aprende a programar para Kodi
Si sabes programar, esta serie de tutoriales que describen paso a paso cómo desarrollar tu propio add-on para Kodi.
Y si quieres añadir tus propios canales a pelisalacarta también te contamos paso a paso cómo hacerlo en este enlace.
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 11 invitados