Aunque no se escriba json, en esta nueva revolución tecnológica, la palabra json está intrísica (que mal suena esta palabra, creo que es la primera vez que la uso ) esá en todas las conversaciones relacionadas con arrays, así que el str() y exec "" + str es una forma fácil y sin quebraderos de cabezas
Item
Re: Item
Mensaje por robalo » 23 Nov 2015, 09:35
Aunque no se escriba json, en esta nueva revolución tecnológica, la palabra json está intrísica (que mal suena esta palabra, creo que es la primera vez que la uso ) esá en todas las conversaciones relacionadas con arrays, así que el str() y exec "" + str es una forma fácil y sin quebraderos de cabezas
Re: Item
Mensaje por SeiTaN » 23 Nov 2015, 10:53
Si existe ese tipo de datos es por que ha surgido una necesidad y por tanto se usa:
- str, int, list, dict, tuple...
Cada uno tiene su utilidad, que el string sea el comodín no quiere decir que el resto de tipos de datos no sea igual de válido
Y paro ya de venderte la moto xD
Publicidad
Re: Item
Mensaje por SeiTaN » 23 Nov 2015, 12:19
Me acabas de dar la razón inconscientemente jajajaja, un diccionario es un diccionario, si lo quieres vestir como un string puro y duro es otra cosa.robalo escribió:Eso depende de como quieras enredar las cosas, puedemos asosciar las palabras que queramos a lo que queramos pero nunca dejará de ser lo que es.
Si nos ponemos exquisitos en java todo hereda de Object, para que usar otra cosa xD
Re: Item
Mensaje por divadr » 23 Nov 2015, 12:21
La clase Ítem tiene una serie de campos que con unos valores por defecto, pero eso no quita que tu no puedas añadir el que quieras y que no puedas cambiarle el tipo de contenido es decir:
Código: Seleccionar todo
ítem = Ítem(title="titulo", url="http://..:", extra={"id":1, "categoria": "Series"})
Código: Seleccionar todo
ítem = Ítem(title="titulo", url="http://..:")
ítem.id = 1
ítem.categoria= "series
actualmente la forma de crear esa cadena de texto se la siguiente:
Código: Seleccionar todo
itemurl = '%s?fanart=%s&channel=%s&action=%s&category=%s&title=%s&fulltitle=%s&url=%s&thumbnail=%s&plot=%s&extradata=%s&Serie=%s&show=%s' % ( sys.argv[ 0 ] , fanart, canal , accion , urllib.quote_plus( category ) , urllib.quote_plus(title) , urllib.quote_plus(fulltitle) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( plot ) , urllib.quote_plus( extradata ) , Serie, urllib.quote_plus( show ))
Código: Seleccionar todo
class Item(object):
#Yo solo dejaría los campos imprescindibles para el launcher, ya que cada uno puede añadir los que quiera
channel = ""
title = ""
url = ""
thumbnail = ""
plot = ""
fanart = ""
folder = True
action = ""
server = "directo"
extra = ""
show = ""
category = ""
language = ""
type = ""
context = ""
subtitle = ""
totalItems =0
fulltitle = ""
viewmode = "list"
#Función de inicialización que permite añadir tantos campos como quieras
def __init__(self, **kwargs):
for arg in kwargs:
exec "self."+arg+"=kwargs[arg]"
#Devuelve el ítem en un string con todos los campos, para ver en el log
def tostring(self):
devuelve=""
for property, value in sorted(vars(self).iteritems()):
if not devuelve:
devuelve = property + "=["+str(value)+"]"
else:
devuelve = devuelve + ", " + property + "=["+str(value)+"]"
return devuelve
#Serializa todas las propiedades. para crear una url, en base64 y urllib.quote para que no hayan caracteres raros que den problemas en la url
def tourl(self):
import json
import base64
import urllib
JSONItem = {}
for property, value in vars(self).iteritems():
JSONItem[property]= value
return urllib.quote(base64.b64encode(json.dumps(JSONItem)))
#Deserializa todas las propiedades. y vuelve a generar el ítem completo desde la url
def fromurl(self,cadena):
import base64
import json
import urllib
JSONItem = json.loads(base64.b64decode(urllib.unquote(cadena)))
for key in JSONItem:
if type(JSONItem[key]) == unicode:
value = JSONItem[key].encode("utf8")
else:
value = JSONItem[key]
exec "self."+key+" = value"
Código: Seleccionar todo
itemurl = '%s?fanart=%s&channel=%s&action=%s&category=%s&title=%s&fulltitle=%s&url=%s&thumbnail=%s&plot=%s&extradata=%s&Serie=%s&show=%s' % ( sys.argv[ 0 ] , fanart, canal , accion , urllib.quote_plus( category ) , urllib.quote_plus(title) , urllib.quote_plus(fulltitle) , urllib.quote_plus( url ) , urllib.quote_plus( thumbnail ) , urllib.quote_plus( plot ) , urllib.quote_plus( extradata ) , Serie, urllib.quote_plus( show ))
Código: Seleccionar todo
itemurl = sys.argv[ 0 ] + "?" + ítem.tourl()
Código: Seleccionar todo
def extract_parameters()
ítem = Ítem()
ítem.fromurl(sys.argv[2].replace("?",""))
retrun ítem
-
- Mensajes: 801
- Registrado: 12 Jun 2014, 23:28
Re: Item
Mensaje por super_berny » 23 Nov 2015, 13:13
Si tubiese q poner algun pero seria q yo reduciria aun mas la lista de campos propuesta para el Item y me miraria con lupa la codificacion base64, ahora no recuerdo muy bien pero diria q me dio problema con la biblioteca de kodi.
Por otro lado cuidado con utilizar campos del Item para otra cosa. En el ejemplo de item.extra, el launcher espera una cadena (y posiblemente varias subcadenas separadas mediante '|')
Objeto Item
Modulo tmdb
Mejorando nuestros canales
Github y Pelisalacarta
Tips Github y Pelisalacarta
Re: Item
Mensaje por divadr » 23 Nov 2015, 13:21
el tema de base64 yo lo estoy usando en mis versiones hace mucho tiempo y nunca he tenido ningun problema pero para la url tiene q ser base64 y loego urllib.quote porque hay caracteres de base64 en concreto "=" que no es compatible con las url
Re: Item
Mensaje por SeiTaN » 23 Nov 2015, 18:04
¿No tendría que estar seteando el valor por cada lugar que pase el objeto? Como se hace hasta ahora
defino en la clase A y metodo 1
Código: Seleccionar todo
item.fromurl("vengo de la clase A, metodo 1")
clase A --> clase b --> clase C
En C si muestro fromurl
Código: Seleccionar todo
print item.fromurl --> "vengo de la clase A, metodo 1"
Re: Item
Mensaje por divadr » 23 Nov 2015, 18:09
La unica modificacion es en el launcher y xbmctools lo demas se sigue usando como hasta ahora pero con la posibilidad de añadir el campo que cada cual mecesite
- 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 22 invitados