Página 2 de 3
Re: busqueda global
Publicado: 27 Feb 2016, 21:11
por SeiTaN
Hola super_berny, a mi eso me ha pasado en el trabajo, al igual que json tiene sus cosas, en xml hay que escapar determinados caracteres para que sea valido, prueba con &
Saludos.
Re: busqueda global
Publicado: 27 Feb 2016, 21:21
por super_berny
SeiTaN escribió:Hola super_berny, a mi eso me ha pasado en el trabajo, al igual que json tiene sus cosas, en xml hay que escapar determinados caracteres para que sea valido, prueba con &
Saludos.
Fijate q se trata de una url, si la escarpo no encuentra la imagen

Re: busqueda global
Publicado: 27 Feb 2016, 21:51
por SeiTaN
Código: Seleccionar todo
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<channel>
<id>pelismagnet</id>
<name>PelisMagnet</name>
<active>true</active>
<adult>false</adult>
<language>es</language>
<fanart></fanart>
<thumbnail><![CDATA[https://scontent-mad1-1.xx.fbcdn.net/hphotos-xap1/v/t1.0-9/12347847_1076909009009716_7103785122088615061_n.jpg?oh=7e01f94af38ae5bac10e1d02d36f695b&oe=570141FA]]></thumbnail>
<bannermenu>http://media.tvalacarta.info/pelisalacarta/bannermenu/pelismagnet.png</bannermenu>
<update_url>https://raw.githubusercontent.com/tvalacarta/pelisalacarta/master/python/main-classic/channels/</update_url>
<version>1.1</version>
<date>21/02/2016</date>
<changes>a�?�±adida funcionalidad de series, mejorar en graficos e informaci�?�³n mostrada</changes>
<categories>
<category>torrent</category>
<category>movie</category>
<category>serie</category>
<category>documentary</category>
</categories>
<settings>
<id>include_in_global_search</id>
<type>bool</type>
<label>Incluir en busqueda global</label>
<default>false</default>
<enabled>true</enabled>
<visible>true</visible>
</settings>
</channel>
<![CDATA[xxxxx
]]> te permite ignorar la validación de su contenido por lo que te pongo arriba ya es xml válido, a ver si te sirve

Re: busqueda global
Publicado: 28 Feb 2016, 10:21
por jesus
El problema es que no usamos el parser XML para leer el fichero, sino expresiones regulares.
Por eso da igual que no esté escapada la "&"...
Podemos usar CDATA, y detectarlo en la expresión regular, pero ¿para qué necesitas validar el xml en primer lugar?
Re: busqueda global
Publicado: 28 Feb 2016, 11:21
por SeiTaN
jesus escribió:El problema es que no usamos el parser XML para leer el fichero, sino expresiones regulares.
Yo diría lo contrario, es la solución, ya que xml tb es bastante puñetero para validar

Usamos la sintaxis xml, como se podría usar html, si le cambias la extensión el addon se lo tragaría igual ya que como comentas se usan expresiones regulares.
Si usasemos xml como lo que es, para acceder a su estructura mediante nodos, se complica en tanto en cuanto lo hace su estructura, la solución fácil sería usar librerias. Mientras que un json válido es un simple diccionario y su estructura nos daría igual.
Re: busqueda global
Publicado: 28 Feb 2016, 12:51
por robalo
jesus creo que lo mejor va a ser renombrar todos los xml con sólo el nombre del canal, sin extención y quitar las marcas innecesarias y obligar, si se le puede llamar así, el uso de 'find_multiple_matches(data,patron)' que es la idea de la existencia del archivo, funcional y de fácil edición para cualquiera.
channel.bajui
Código: Seleccionar todo
<id>bajui</id>
<name>Bajui</name>
<language>es</language>
<update_url></update_url>
<active>true</active>
<include_in_global_search>false</include_in_global_search>
<version>1</version>
<adult>false</adult>
<date>28/08/2015</date>
<changes>First pelisalacarta 4 release</changes>
<fanart></fanart>
<thumbnail></thumbnail>
<category>movie</category>
<category>serie</category>
<category>documentary</category>
<category>vos</category>
Re: busqueda global
Publicado: 28 Feb 2016, 16:37
por super_berny
robalo escribió:jesus creo que lo mejor va a ser renombrar todos los xml...
Pero mira q os gusta ser extremistas.
No hace falta cambiar nada. Intento hacer modificaciones q añadan funcionalidades sin que por ello lo que hay ahora mismo deje de funcionar o almenos funcione con unos minimos cambios. Por ejemplo, cuando propuse los tan denostados channel.json lo hice de forma paralela a los xml de modo q funcionara con los dos tipos de archivos. Cuando introduje en algunos de mis canales los infoLabels lo hice de tal modo q no afectara al resto de canales (como no podia ser de otro modo), etc..
Como ya dije en otro hilo los channel.json fueron rechazados y ya esta. No voy a insistir en ellos ni reabrir debates cerrados (asi no se avanza), pero eso no implica q no los use internamente para otras cosas. Lo que hice fue crear una funcion en jsontools para convertir los xml a json y poder seguir utilizando el codigo de guitools q ya tenia con unos minimos cambios.
De todos los xml q hay actualmente en la rema develop de github solo 3 me han dado algun problema:
- En uno habia una etiqueta de cierre erronea (ponia </version> cuando deberia poner </changes> o algo asi)
- Otro no estaba codificado como UTF-8 (aunque en el encabezado pusiera UTF-8) y daba error con la palabra 'añadido'
- Y por ultimo el que ha motivado todo esta discusion absurda. La solucion pasa por utilizar un acortador de url o cambiar de servidor la imagen.
Si en el futuro me encuantro con algun otro xml q me de problemas pues ya lo modificare o buscare la solucion.
SeiTaN escribió:<![CDATA[xxxxx]]> te permite ignorar la validación
Como bien dice Jesus añadir CDATA obligaria a modificar la expresion regular para q channeltools.get_channel_parameters retorne correctamente el thumbnail y no es lo que quiero. A lo mejor mañana aparece otro canal q utiliza una url para el fanart q tampoco valida ¿modificaremos otra vez la funcion para un solo canal? Creo q es mas sencillo modificar el XML si se puede.
jesus escribió:Podemos usar CDATA, y detectarlo en la expresión regular, pero ¿para qué necesitas validar el xml en primer lugar?
Para que la funcion jsontools.xmlTojson funcione el XML debe ser correcto, sino no funciona. Del mismo modo q el scraper no funcionara si se cambian los tags, por ejemplo si en un canal tenemos <active>true</adult> cuando busquemos channel_parameters["active"] petara. Con ello quiero decir q es necesario utilizar algunas convenciones.
Re: busqueda global
Publicado: 28 Feb 2016, 17:32
por SeiTaN
No recuerdo las razones por que se dijo que no se iba a usar json en vez de "el mal llamado xml", por lo tanto la comparación es "fichero de texto plano vs json".
Problemas que pueden surgir del json:
- Problema. No es un fichero json valido.
- Solución. Si da error no se carga el canal, al igual que se hace ahora cuando no se encuentra el fichero .xml
- Problema. Hay que controlar si no existe la clave.
- Esto pasa igual que con las expresiones regulares, la puedes liar y no devuelve nada y que el resto de fichero no se carga, con .json valido(el punto anterior), si tienes que acceder a una clave o haces un try/excepts o simplemente tiras del metodo dict.get("clave", ""), y si no encuentra la clave te devolvería vacío.
Así de memoría no recuerdo más posibles problemas que puedan darse.
El replantearnos su uso, viene de la manera de poder configurar los canales de manera específica e independiente, sin tener que modificar settings.xml. Si se siguiera usando los .xml como hasta ahora las expresiones regulares cumplen perfectamente su función.
Yo de momento he conseguido mi modificación de manera simple una vez que he aprendido un poco más de expresiones regulares.
En el caso del desarrollo de super_berny es un engorro, al menos me lo parece, coger todos los valores de su parte y convertirlo en un diccionario, y si modifica alguna cosa va a tener que tocar de nuevo, ya que no es conversión de xml a json, porque no se trata como xml, es modificar la función que recupera los datos para esa expresión regular; cuando leer el .json ya te lo convierte en un diccionario y no te tienes que preocupar.
Saludos.
Re: busqueda global
Publicado: 28 Feb 2016, 21:22
por robalo
"Extremistas"

Interesante conclusión
super_berny escribió:Para que la funcion jsontools.xmlTojson funcione el XML debe ser correcto, sino no funciona. Del mismo modo q el scraper no funcionara si se cambian los tags, por ejemplo si en un canal tenemos <active>true</adult> cuando busquemos channel_parameters["active"] petara. Con ello quiero decir q es necesario utilizar algunas convenciones.
Más de lo mismo, se eliminan más marcas innecesarias
<active>true</active>
por
<active>true
active=true
active:true
etc...
Re: busqueda global
Publicado: 28 Feb 2016, 21:40
por SeiTaN
robalo escribió:"Extremistas"

Interesante conclusión
super_berny escribió:Para que la funcion jsontools.xmlTojson funcione el XML debe ser correcto, sino no funciona. Del mismo modo q el scraper no funcionara si se cambian los tags, por ejemplo si en un canal tenemos <active>true</adult> cuando busquemos channel_parameters["active"] petara. Con ello quiero decir q es necesario utilizar algunas convenciones.
Más de lo mismo, se eliminan más marcas innecesarias
<active>true</active>
por
<active>true
active=true
active:true
etc...
Y extremista quizás se quede corto, mejor taliban

, querer cambiar el nombre de chorrocientos ficheros cuando no molesta el nombre
