automatizar download de informação

neutral

Power Member
eu tenho certos sites que vou regularmente buscar fichas, pdf's etc. existe alguma maneira de automatizar esta acção? como sincronizar? ou pelo menos avisar sempre que houver mais pdf's?
 
Podes sempre criar um cronjob com o wget, mas precisas de saber os nomes dos ficheiros a sacar ou pelo menos conseguir "adivinhar" a nomenclatura usada.
 
existe alguma maneira de automatizar esta acção? como sincronizar? ou pelo menos avisar sempre que houver mais pdf's?
Se souberes programar Perl, com LWP fazes isso com uma perna às costas.

EDIT
Um script rudimentar:
Código:
#!/usr/bin/perl
# FILE: check_content.pl
use strict;
use warnings;
use LWP::UserAgent;
use Digest::SHA1 qw/sha1_hex/;

my $LOCAL_FILE = q|/tmp/check_webcontent|;
my $URL = q|http://www.techzonept.com/index.php|;

check();

sub check {

    my $ua = LWP::UserAgent->new;
    $ua->agent("MyApp/1.0");
    my $req = HTTP::Request->new(GET => $URL);
    my $res = $ua->request($req);
    my $actual_hash = sha1_hex($res->content());

    if ( -f $LOCAL_FILE ) {
        if ( read_sha1() ne $actual_hash ) {
            write_sha1($actual_hash);
            alert_me();
        }
    } else {
        write_sha1($actual_hash);
        alert_me();
    }

    return;

}

sub read_sha1 {
    open my $FILE, '<', $LOCAL_FILE or die "$!\n";
    my $hash = <$FILE>;
    close $FILE;
    return $hash;
}

sub write_sha1 {
    my $hash = shift;
    open my $FILE, '>', $LOCAL_FILE or die "$!\n";
    print $FILE $hash;
    close $FILE;
    return;
}

sub alert_me {
    print qx|/usr/bin/xmessage Alteracões em $URL|;
    return;
}
 
Última edição:
não sei programar em perl. para já só haskell :P mas pelo que percebi nesse script só tenho que alterar o url que está a techzone certo? muito obrigado :)
 
mas pelo que percebi nesse script só tenho que alterar o url que está a techzone certo?
Precisamente.
Provavelmente terás de instalar os módulos LWP e Digest::SHA1

Código:
# cpan LWP Digest::SHA1
Vais respondendo às perguntas do 'instalador' e em dois minutos tens isso a funcionar.
 
penso que consegui instalar isso. agora copio o script para um ficheiro com outra url e depois?
Depois tens duas hipóteses:

A) $ chmod +x nome_do_script.pl
e executas: $ /path/to/script.pl

B) $ perl /path/to/script.pl

Nota que o alerta é uma mera janela (xmessage). Não podes por isso assim na crontab. Como é que queres receber a notificação? mail?

EDIT
Para enviar e-mail se a página tiver sido modificada, substitui a função alert_me() pela seguinte:

Código:
sub alert_me {

    use Mail::Sendmail;

    sendmail(
        To        => q|[email protected]|,
        From      => q|[email protected]|,
        Subject   => q|Notificação...|,
        Message   => qq|A página $URL foi modificada!\n|,
        smtp      => q|mail.server.com|,
    ) or die $Mail::Sendmail::error;

    return;
}

Terás de instalar o módulo Mail::Sendmail:
Código:
# cpan Mail::Sendmail
 
Última edição:
Back
Topo