martes, 20 de mayo de 2008

Actualizar webs cada X segundos

En muchas ocasiones nos encontramos esperando a la actualización de una web para ver unas notas, alguna noticia, etc.
El caso se agrava cuando esa página no tiene sindicación (RSS, Atom...) y es entonces cuando se produce el "síndrome del F5", vamos, que nos pasamos todo el día dándole a actualizar.

Pues me acabo de fabricar un scrip en perl que hace justamente eso, actualizar cada cierto tiempo y mostrar los cambios en la página que le indiquemos.

#!/usr/bin/perl
use LWP::Simple;
use Digest::MD5 qw(md5_hex);

unless(@ARGV > 1){ die "Uso: $0 url sleeptime" }
my $url=shift(@ARGV);
my $sleeptime=shift(@ARGV);

my $page = get $url;
die "No se encuentra: $url" unless defined $page;

my $lastPage=$page;
my $last=md5_hex($page);
my $new=$last;

while(1){
$page = get $url;
die "No se encuentra: $url" unless defined $page;

$new=md5_hex($page);
if($last ne $new){
open(LAST, ">lastPage.html");
print LAST $lastPage;
close(LAST);
open(PAGE, ">page.html");
print PAGE $page;
close(PAGE);
system("diff -bBiw lastPage.html page.html");
system("rm lastPage.html page.html");
$lastPage=$page;
$last=$new;
}

sleep($sleeptime);
}

Se ejecuta de la siguiente forma: ./update url tiempo_entre_actualizaciones

0 comentarios: