viernes, 8 de mayo de 2009

AAP Práctica 5

En ésta práctica se nos pedía la creación de un Planet. Yo me he querido basar en la experiencia que tengo de usar Google Reader e intenté hacer algo parecido.
Antes de entrar en la explicación de cómo lo he implementado, dejo el enlace para que se pueda ver el resultado final.

Para conseguir que funcionase tuve que crear un CGI que obtuviera la fuente que se le indicara y lo mostrara con un cierto estilo. El código en Perl es el siguiente:
#!/usr/bin/perl

use CGI qw(:standard);
use XML::RSS;
use LWP::Simple qw(get);

my $numero_elementos = param('num_elementos');
my $url = param('url');

#Baja fichero
if (!defined($url)){
print header( -type => 'text/html' );
print '<body style="text-align:center; vertical-align:center">'.
'<h1>Bienvenido al lector RSS</h1>'.
'<p>Elige de la izquierda las noticias que quieres leer.</p>'.
'</body>';
}
else{
if (!defined($numero_elementos)) { $numero_elementos = 7; }
my $rdf = get($url);
my $rss = new XML::RSS;
$rss->parse($rdf);
my $salida = '<body>'.
'<h1><a href="'.$rss->{'channel'}->{'link'}.'" target="_blank">'.$rss->{'channel'}->{'title'}.'</a></h1>'.
'<p>'.$rss->{'channel'}->{'description'}.'</p>';
print header( -type => 'text/html' );

for (my $i = 0; $i < $numero_elementos;$i ++ ) {
$salida = $salida.
'<div style="border:dotted; background-color:lightblue ">'.
'<h2><a href="'.$rss->{'items'}[$i]->{'link'}.'" target="_blank">'.$rss->{'items'}[$i]->{'title'}.'</a></h2>'.
'<h4>'.$rss->{'items'}[$i]->{'pubDate'}.'</h4>'.
'<p>'.$rss->{'items'}[$i]->{'description'}.'</p>'.
'</div>';
}
$salida = $salida.'</body>';
print $salida;
}


A continuación, como quería añadirle la funcionalidad de poder agregar más fuentes, diseñé el sistema de modo que se leyeran las fuentes desde un fichero XML. Este fichero lo he llamado enlaces.xml. Además, creé otro CGI en perl que modificara el archivo con el fin de ampliar la lista de fuentes RSS.

Por último diseñé la interfaz gráfica en HTML y Javascript haciendo mis primeros pinitos con AJAX y jQuery.

Todos los archivos necesarios para la práctica están aquí.

No hay comentarios:

Publicar un comentario