RSS Feed

Un feed es la forma de hacer que de forma automatizada se puedan consultar las más recientes actualizaciones de contenido en la web. Agregué dicha funcionalidad al blog usando Perl, y tuvo de inmediato aceptación por parte de los crawlers de Yahoo, Google y MSN.

El asunto fué en realidad muy sencillo. Hice la elección de entre los formatos que estaban a la mano de RSS. La página de Wikipedia tiene toda la explicación y las ligas necesarias. El formato en XML es muy simple y fácil de estructurar.

Tomé la decisión de hacer el script en Perl porque es mi lenguaje de elección cuando hago scripts, aunque hay por ahí algunas soluciones que ya lo hacen directamente en PHP, que es el lenguaje en el que hice el CMS en el que está montado el blog. ¿Porqué un script por separado? Porque el script me dá la facilidad de actualizar todos los feeds que penden del CMS al mismo tiempo, mediante una entrada en el crontab.

El script en cuestión hace uso de las bibliotecas DBI y POSIX qw(strftime), para conectarse al backend MySQL y para el formato de las fechas (cuando leí la especificación se me hizo raro que no usaran TIME() de UNIX, que es un formato menos "pesado" que andar poniendo cadenas con los nombres de los meses, por ejemplo).

La generación del header del archivo sería:

# Imprime el header del feed
print <

$feed_name
$feed_url
$feed_description
$build_time
$build_time
http://blogs.law.harvard.edu/tech/rss
$generator
$editor
$webmaster

FIN

Y la generación de cada uno de los "ítems" es muy simple:

print <

$ref->{'title'}
$guid

$uacute

$time_string
$guid

FIN

Siguiendo una iteración del tipo WHILE() a cada uno de los elementos encontrados en un query a MySQL con la estructura particular de mi base de datos.

Poniendo al final algo como:

# Imprime el final del feed
print <

FIN

El único problema que encontré fué que en ninguna parte de la especificación dice que no se puede hacer un nest de HTML dentro de , por lo que tuve que convertir las entidades HTML, y ninguno de los paquetes disponibles en CPAN hacía "limpiamente" su trabajo con el dialecto HTML que arroja mi editor web de mi CMS, así que tuve que convertir a mano los caracteres <, > y áéíóú para que funcionara correctamente.

Todos los navegadores recientes leen directamente los archivos RSS (y se pueden suscribir), así que las pruebas fueron muy sencillas. Algunos lectores de feeds permiten inscribirse usanro un URL especialmente formado con el URL del archivo RSS, tal es el caso de

Google Reader

(que recomiendo ampliamente), así que incluí una liga para tal efecto en el blog.

Distribuir contenido