[Rio-pm] ajude o "firefox download day" com Perl!

breno breno em rio.pm.org
Terça Junho 17 15:18:09 PDT 2008


Pessoal,

como vcs talvez saibam, hoje saiu o Firefox 3!!! E a Mozilla
Foundation está fazendo um estardalhaço com o evento, querendo entrar
para o Guinness ("Livro dos Recordes") como o maior número de
downloads de um único software em 24h.

Para quem quiser dar "uma maozinha" a eles, segue abaixo um pequeno
programa que fica baixando o arquivo ad-eternun (leia-se até que vcs
deliberadamente interrompam o programa com ctrl-c ou coisa que o
valha):

-------------------------8<-------------------------
#!/usr/bin/perl
use LWP::Simple;

while (1) {
    if (defined
(get('http://download.mozilla.org/?product=firefox-3.0&os=win&lang=pt-BR')))
{
        print "sucesso!\n";
    }
    else {
        print "erro :(\n";
    }
}
-------------------------8<-------------------------

Abaixo, versão para golfe, sem mensagens de sucesso ou falha (usando
LWP::Simples. Alguém se habilita a fazer sem módulos?):

-------------------------8<-------------------------
use LWP::Simple;
while (1) {get('http://download.mozilla.org/?product=firefox-3.0&os=win&lang=pt-BR')}
-------------------------8<-------------------------

Note que ambas as versões acima do programa ficam baixando o programa
eternamente mas descartam todo o conteúdo baixado. Se vcs quiserem de
fato ter uma cópia do firefox 3 em disco, é preciso escrever o
conteúdo baixado no sistema. Segue modificação em cima do código acima
que continua baixando ad-eternum, mas se vc interromper o programa
haverá um arquivo "ff3.exe" no diretório em que o programa foi
executado, pronto para instalação!

-------------------------8<-------------------------
#!/usr/bin/perl
use LWP::Simple;

while (1) {
    if (defined (my $arq =
get('http://download.mozilla.org/?product=firefox-3.0&os=win&lang=pt-BR')))
{
        print "sucesso!\n";
        open my $fh, '>', 'ff3.exe' or die "erro abrindo arquivo: $!\n";
        binmode ($fh);
        print $fh $arq;
        close $fh;
    }
    else {
        print "erro :(\n";
    }
}
-------------------------8<-------------------------

Bom, pessoal, é isso. O programa pode ser separado em
threads/processos ou simplesmente executado várias vezes caso vcs
estejam com vontade de ajudar mesmo (ou não fazer mais nada na
Internet, pq sua banda será bastante consumida nesse caso).

De qq forma, e mesmo que vc não esteja absolutamente interessado em
ajudá-los com o "download day" (que vai até amanhã à tarde para nós),
o Firefox continua sendo um excelente navegador Web e a versão 3
possui uma série de melhorias e avanços interessantes, valendo a
olhada - mesmo que vcs decidam baixar só outro dia :-)

[]s

-b


Mais detalhes sobre a lista de discussão Rio-pm