El que la sigue la consigue

Después de insultar a su madre varias vaces seguidas, encontré la forma de eliminar los malditos <br> del feedparser: utilizando Tidy.

Tidy es un aplicación que puede ser muy útil cuando se trata de limpiar código y hacerlo 100% validable. Desde hace algún tiempo lo uso en la creación de mis sitios desde la linea de comandos para ver donde se me escapó cerrar un div (sí, hago mis páginas web en Vi)

Feedparser contiene ya en su código la posibilidad de utilizar Tidy mediante algunas extensiones experimentales de Python, perlo luego de haberme puesto a intrusearlo a las tantas de la madrugada, con ASI cada pepa y dejándome la reverenda sopa en el código que generó, decidí dejarlo a un lado (recuerdan la «cagadita» que me dejó con python 2.3?)

Hace un rato, y despues de intentar revertir tanto pichicate feo en el código (mi sapiencia de python es paupérrima), comencé a leer la documentación de mxTidy y saz!, he ahi el problema con la generación de código. Por default, feedparser utiliza Tidy en modo ascii, escapando todos los caracteres > 127. Duh!.

--- orig/feedparser.py  2004-07-03 19:00:02.000000000 -0400
+++ feedparser.py       2004-07-08 01:26:46.000000000 -0400
@@ -941,7 +941,12 @@
     p.feed(htmlSource)
     data = p.output()
     if mxtidy:
-        nerrors, nwarnings, data, errordata = mxtidy.tidy(
-         data,
-         output_xhtml=1, numeric_entities=1, wrap=0)
+        nerrors, nwarnings, data, errordata = mxtidy.tidy(
+         data,
+         output_xhtml=1,
+         numeric_entities=1,
+         wrap=0,
+         char_encoding="utf8")
         if data.count('<body'):
             data = data.split('<body', 1)[1]
             if data.count('>'):

Que exelente es encontrar buena documentación.

Solo me queda luchar con el problema de La ratonera:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in
 position 13: ordinal not in range(128)

Y luego a pelear en el porque el xml generado por los templates no lo pesca ni en bajada Feedreader, entre otros.

Update 1 : Y como iba diciendo, ya los RSS validan, tanto el 1.0 como el 2.0. Se trataba de utilizar ESCAPE=”HTML” en las variables TMPL_VAR que provocaban problemas, como algunos especímenes suscritos a quienes no voy a hechar al agua, que no escapan los ampersand de sus links, menos los meten en un cdata ;)

Listo?, algún otro alegato? (lo de la ratonera aun npi, al parecer es a causa de que el servidor M$ me envía una cabecera ascii y luego los datos en otro encoding (1252 tal vez?), que por supuesto es considerado basura si contiene caracteres > 127 … seguire cabeceandome … mañana)

Update 2 : Otra utilidad para Tidy es la de wrap. En Planet Gnome tengo un problema: alguna y algotra vez un susodicho me ensarta con un <pre> de mil quinientas lineas de ancho, lo que se ve horrible en la generación del sitio. De usar tidy en ese caso, puedo obligar un wrap de un máximo determinado de líneas.

Y yo que me estaba cabeceando como insertarle un salto de línea a una cadena cada cierto número de carácteres …

  • http://www.dewback.cl/ fabian

    Sí, no es un problema del cuerpo del feed, sino que del «missmatch» de encoding en los headers http que el servidor me envia, al parecer.

    Y con mi pericia en python ….

  • http://www.zocalo.cl/ratonera Wontolla

    Mmmh.. según el validador de rss, los mios están buenos. Pero si necesitas que modifique algo, me avisas :)

    salu2

  • http://www.dewback.cl/ fabian

    Done.

    :)

  • http://sinsombrero.blogspot.com Isa

    Holap. Acabo de cambiarme de casita (http://sinsombrero.blogspot.com)
    y ahora tengo XML y eso, por si me puedes inscribir en el Planetario Blogs. Espero que me visites, gracias ;)