Después de insultar a su madre varias vaces seguidas, encontré la forma de eliminar los malditos
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

 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 …