Página 5 de 6

Re: Cambio de xml a json

Publicado: 12 Feb 2016, 11:59
por SeiTaN
recapitulando...

En channels:

- animeflv.xml
- animeflv.py

Y lo que guardemos de configuración especifica para el canal en userdata.. en json


Pongo mi caso, a ver si me lo solucionáis en xml, porque con json está tirado de hacer y me funciona...

un canal tiene unos idiomas, los cuales uso para mi sistema de filtrado y para no duplicar lo quiero sacar a canal.xml.

Si vamos a usar channeltools con xml, como accedo a esto con regexp?:

json

Código: Seleccionar todo

'LANG_FILTER': {'es': 'Español', 'la': 'Latino', 'vos': 'VOS', 'vo': 'VO', 'japovose': 'VOSE', 'jp-sub': 'VOSE'}
xml

Código: Seleccionar todo

	<LANG_FILTER>
		<es>Español</es>
		<la>Latino</la>
		<vos>VOS</vos>
		<vo>VO</vo>
		<japovose>VOSE</japovose>
		<jp-sub>VOSE</jp-sub>
	</LANG_FILTER>

Re: Cambio de xml a json

Publicado: 12 Feb 2016, 17:26
por jesus
Depende de cómo lo quieras usar, eso tampoco se puede hacer con los settings de XBMC y probablemente es de lo más retorcido que me he encontrado nunca :)

Si lo que quieres es poner o quitar idiomas, no he pensado demasiado en la sintaxis final pero yo haría algo como esto:

Código: Seleccionar todo

   <settings>
      <active>true</active>
      <include_in_global_search>true</include_in_global_search>
      <allowed_content_es>true</allowed_content_es>
      <allowed_content_la>true</allowed_content_la>
      ...
   </settings>
Así el usuario puede poner o quitar idiomas simplemente cambiando checks de true a false.

Para la traducción de las etiquetas podemos usar atributos, más apropiado que meterlo todo en el fichero de configuración:

Código: Seleccionar todo

   <settings>
      <active [b]label="90203"[/b]>true</active>
      <include_in_global_search [b]label="90204"[/b]>true</include_in_global_search>
      <allowed_content_es [b]label="90205"[/b]>true</allowed_content_es>
      <allowed_content_la [b]label="90206"[/b]>true</allowed_content_la>
      ...
   </settings>
El tema de JSON vs XML no tiene nada que ver con la capacidad de expresión de cada uno, si no me equivoco ambos son equivalentes. Probablemente XML sea mucho más potente...

Re: Cambio de xml a json

Publicado: 12 Feb 2016, 21:04
por super_berny
Bueno como decia Jack el Destripador... vamos por partes :lol:
SeiTaN escribió:recapitulando...

En channels:

- animeflv.xml
- animeflv.py

Y lo que guardemos de configuración especifica para el canal en userdata.. en json
Esto ya esta decidido, asi que los hinchas del JSON debemos acomodarnos a ello. :P
SeiTaN escribió:un canal tiene unos idiomas, los cuales uso para mi sistema de filtrado y para no duplicar lo quiero sacar a canal.xml.

Si vamos a usar channeltools con xml, como accedo a esto con regexp?:
Jesus, lo q quiere hacer Seitan en incluir en el xml una lista de los idiomas q usan en la web, tal y como aparecen alli. Es decir si utilizan ESP pues esa sera una entrada de su lista, pero si utilizan Español o Castellano pues seran estas otras. Desde aqui no va a seleccionar nada (eso lo hace en otra parte del codigo) no confundirlo. De hecho esto iria dentro de la seccion <channel> y no en <settings> ya que es una CARACTERISTICA del canal y no un PARAMETRO CONFIGURABLE.

Seitan, para acceder al xml con regex lo podriamos hacer como ahora mismo se hace con el resto de parametros (channeltools.get_channel_parameters). Aunque creo q lo q preguntas en concreto es la expresion regular q deberias utilizar en tu ejemplo. Te recomiendo busques en google: regex online y hagas ahi tus pruebas (no te las digo yo por q no me he puesto a mirarlas)

He estando pensando una solucion salomonica q contentara al los JSONistas y a los XML-ForEver :lol: :lol: y creo q la he encontrado:
Podriamos hacer una funcion jsontools.xml2json() de tal manera q dada una cadena q represente un archivo xml obtengas un json. Asi podriamos tener el archivo canal.xml y el q quiera podra trabajarlo como json (y de paso me ahorro reconvertir mi codigo :lol: )
¿que os parece?

Por otra parte, Jesus, el tema de las etiquetas label es correcto. Pero creo q habia leido alguna limitacion con el numero de etiquetas disponibles ¿es asi?
En cuanto a que parametros se consideran settings de un canal ya los iremos viendo, pero la seccion <channel> actual se mantiene. ¿en esto coincidimos no?

Re: Cambio de xml a json

Publicado: 13 Feb 2016, 03:39
por SeiTaN
super_berny escribió: Aunque creo q lo q preguntas en concreto es la expresion regular q deberias utilizar en tu ejemplo. Te recomiendo busques en google: regex online y hagas ahi tus pruebas (no te las digo yo por q no me he puesto a mirarlas)
EXACTO... creeme que lo he intentado durante horas, pero no he conseguido sacarlo, se me da mal el regexp por eso ya que insistís con el xml estaría bien que me dijerais como convertir...

Código: Seleccionar todo

<LANG_FILTER>
      <es>Español</es>
      <la>Latino</la>
      <vos>VOS</vos>
      <vo>VO</vo>
      <japovose>VOSE</japovose>
      <jp-sub>VOSE</jp-sub>
   </LANG_FILTER>
en esto...

Código: Seleccionar todo

'LANG_FILTER': {'es': 'Español', 'la': 'Latino', 'vos': 'VOS', 'vo': 'VO', 'japovose': 'VOSE', 'jp-sub': 'VOSE'}
O traducido en modo neno.. ya que me jodeis la marrana con no usar json en ese fichero, dadme una solución :lol: :lol:

Re: Cambio de xml a json

Publicado: 13 Feb 2016, 11:05
por robalo
@SeiTaN, esa parte es uso exclusivo para el scraper de idiomas del canal seriesblanco, dónde la idea principal, era subtituir una función tipo "seriesflv.get_nombre_idioma".
Yo sigo pensando que cuando alguien decide modificar un canal y por lo que sea cree que algo debe de estar fuera del archivo .py no necesita pedir permiso para crear archivos de confuguración para el canal sea del formato que sea. Para gustos colores.
También pieso que los temas relacionados con el scraper del canal no se deben de incluir en el .xml del canal.

Como nota, deberías añadir un par de claves más "japo" y "jp" para "VOSE"

Código: Seleccionar todo

{'es':'Español','la':'Latino','vos':'VOS','vo':'VO', 'japovose':'VOSE', 'jp-sub':'VOSE', 'jpsub':'VOSE', 'japo':'VOSE', 'jp':'VOSE'}

Re: Cambio de xml a json

Publicado: 13 Feb 2016, 11:50
por robalo
robalo escribió:Como nota, deberías añadir un par de claves más "japo" y "jp" para "VOSE"

Código: Seleccionar todo

{'es':'Español','la':'Latino','vos':'VOS','vo':'VO', 'japovose':'VOSE', 'jp-sub':'VOSE', 'jpsub':'VOSE', 'japo':'VOSE', 'jp':'VOSE'}
En realidad son tres, no me habia fijado que lo llevas un pelín atrasado, "jpsub", "japo" y "jp" para "VOSE" :)

Re: Cambio de xml a json

Publicado: 13 Feb 2016, 11:56
por jesus
super_berny escribió: Jesus, lo q quiere hacer Seitan en incluir en el xml una lista de los idiomas q usan en la web, tal y como aparecen alli. Es decir si utilizan ESP pues esa sera una entrada de su lista, pero si utilizan Español o Castellano pues seran estas otras. Desde aqui no va a seleccionar nada (eso lo hace en otra parte del codigo) no confundirlo. De hecho esto iria dentro de la seccion <channel> y no en <settings> ya que es una CARACTERISTICA del canal y no un PARAMETRO CONFIGURABLE.
Si no es un parámetro configurable, ¿lo que necesitas es simplemente una lista de palabras?

Para eso el tema de las traducciones igual es demasiado, además un canal suele ser para un idioma.

¿Qué tal esto?

Código: Seleccionar todo

<languages>
      <language label="es">Español</language>
      <language label="vos">VOS</language>
...
</languages>
Me ofrezco a haceros la expresión regular si es esto lo que necesitais :)
super_berny escribió: He estando pensando una solucion salomonica q contentara al los JSONistas y a los XML-ForEver :lol: :lol: y creo q la he encontrado:
Podriamos hacer una funcion jsontools.xml2json() de tal manera q dada una cadena q represente un archivo xml obtengas un json. Asi podriamos tener el archivo canal.xml y el q quiera podra trabajarlo como json (y de paso me ahorro reconvertir mi codigo :lol: )
¿que os parece?
La referencia de "salomónica" está bien por las connotaciones religiosas... esto es casi una discusión filosófica ja ja ja

Si os va bien, adelante... so frikis :)
super_berny escribió:Por otra parte, Jesus, el tema de las etiquetas label es correcto. Pero creo q habia leido alguna limitacion con el numero de etiquetas disponibles ¿es asi?
En cuanto a que parametros se consideran settings de un canal ya los iremos viendo, pero la seccion <channel> actual se mantiene. ¿en esto coincidimos no?
Si haces un elemento con muchas etiquetas, igual tienes que repensar la estructura del xml... así que nunca me lo he preguntado.

También podemos hacer algo así:

Código: Seleccionar todo

<languages>
      <language><code>es</code><title>Español</title></language>
      <language><code>vos</code><title>VOS</title></language>
...
</languages>

Re: Cambio de xml a json

Publicado: 13 Feb 2016, 12:00
por SeiTaN
robalo escribió:@SeiTaN, esa parte es uso exclusivo para el scraper de idiomas del canal seriesblanco, dónde la idea principal, era subtituir una función tipo "seriesflv.get_nombre_idioma".
Yo sigo pensando que cuando alguien decide modificar un canal y por lo que sea cree que algo debe de estar fuera del archivo .py no necesita pedir permiso para crear archivos de confuguración para el canal sea del formato que sea. Para gustos colores.
Si son ficheros especificos de configuración para el usuario si, en el caso de que sean datos genéricos entiendo que Jesús tiene razón y se debe unificar. Y en mi caso pienso que debe ir en el xml al igual que se saco el channeltype fuera del py.
robalo escribió:También pieso que los temas relacionados con el scraper del canal no se deben de incluir en el .xml del canal.
Lo pongo aparte porque mi fichero de filtertools, dependiendo del canal que se filtra, éste tiene los "tags" de idiomas de distinta manera, en seriesblanco es "Español", en fullHD es "ESP", y lo más sencillo es acceder desde channeltools para que cada canal tenga sus propios idiomas y sea lo más transparente posible.

Yo pensé una serie de opciones que deseché antes de meterlo en el xml:
- ¿modificar el idioma para los canales que discriminan los idiomas y unificar criterios? No contemple esta opción porque habrá gente que esta acostumbrado a la nomenclatura del canal en cuestión y sería tocar muchos ficheros.
- ¿Crear un indice de idiomas en mi propio "filtertools"? Está hecho de manera temporal hasta que se aclarara este tema y no lo veo serio ni limpio, ya que duplica codigo.
- ¿usar variables internas como __channel__ especifica para idiomas y acceder con un eval()? Por falta de conocimiento del plugin no estaba seguro si era la opción acertada.

¿cual sería tu sugerencia?
robalo escribió: Como nota, deberías añadir un par de claves más "japo" y "jp" para "VOSE"

Código: Seleccionar todo

{'es':'Español','la':'Latino','vos':'VOS','vo':'VO', 'japovose':'VOSE', 'jp-sub':'VOSE', 'jpsub':'VOSE', 'japo':'VOSE', 'jp':'VOSE'}
Lo añado ahora ;)

Gracias a todos por dar ideas y exponer vuestros argumentos :)

Re: Cambio de xml a json

Publicado: 13 Feb 2016, 14:47
por super_berny
jejeje pobre Seitan lleva meses con su filtro parado y ahora venimos todos a tocarle los codigones :lol: :lol: :lol:

Bueno la verdad es q llevo toda la mañana con regex para intentar hacer lo q pedias y no lo he consegido :oops: :oops: He de reconocer q tampoco en esto soy un experto (en realida no soy experto en nada util :D ). Pero tengo una pequeña solucion, en principio seria temporal hasta q podamos tener el xmlTojson generico (q sea capaz de convertir cualquier nodo y no solo algunos).

Lo primero seria cambiar el xml por algo asi:

Código: Seleccionar todo

<LANG_FILTER>
    <lang label="es">Español</lang>
    <lang label="la">Latino</lang>
    <lang label="vos">VOS</lang>
    <lang label="vo">VO</lang>
    <lang label="japovose">VOSE</lang>
    <lang label="jp-sub">VOSE</lang>
</LANG_FILTER>

Depues modificar channeltools.get_channel_parameters Por debajo de la linea 53:

Código: Seleccionar todo

        # Busqueda de idiomas prefijados en el canal
        lang_filter= {}
        matches = scrapertools.find_multiple_matches(data, '<lang label="([^"]*)">([^<]*)</lang>')
        for match in matches:
            lang_filter[match[0]] = match[1] 
        channel_parameters["LANG_FILTER"]= lang_filter
y la manera de llamarlo desde tu codigo (para el canal test.py):

Código: Seleccionar todo

    from core import channeltools
    parametros = channeltools.get_channel_parameters("test")
    parametro_lang_filter= parametros["LANG_FILTER"] 
Con esto obtienes:

Código: Seleccionar todo

{'la': 'Latino', 'vo': 'VO', 'jp-sub': 'VOSE', 'vos': 'VOS', 'japovose': 'VOSE', 'es': 'Espa\xc3\xb1ol'}
Te dejo como tarea pendiente solucionar el tema de la 'ñ' :lol: :lol: :lol:

Re: Cambio de xml a json

Publicado: 13 Feb 2016, 15:01
por SeiTaN
super_berny escribió:jejeje pobre Seitan lleva meses con su filtro parado y ahora venimos todos a tocarle los codigones :lol: :lol: :lol:

Bueno la verdad es q llevo toda la mañana con regex para intentar hacer lo q pedias y no lo he consegido :oops: :oops: He de reconocer q tampoco en esto soy un experto (en realida no soy experto en nada util :D ).
No se si alegrarme que no sea el único torpe :lol:
super_berny escribió: Con esto obtienes:

Código: Seleccionar todo

{'la': 'Latino', 'vo': 'VO', 'jp-sub': 'VOSE', 'vos': 'VOS', 'japovose': 'VOSE', 'es': 'Espa\xc3\xb1ol'}
Te dejo como tarea pendiente solucionar el tema de la 'ñ' :lol: :lol: :lol:
La ñ sólo se pinta mal al escribir en el log, al hacer referencia se usa obtiene correctamente, asi que ya estaría bien correctamente.

Muchas gracias por tu tiempo.