PDF completo com todas as páginas do Diário Oficial do Estado de Goiás

Publicado por Ademir Ferreira Furtado (última atualização em 11/07/2016)

[ Hits: 2.841 ]

Homepage: diariooficialhoje.com.br

Download 6447.doego.pl




O script foi feito para facilitar a vida de quem precisa baixar diariamente o Diário Oficial do Estado de Goiás. Está simplificado e comentado, contendo a parte essencial e suficiente para o que se propõe. Basta executá-lo no prompt de comando ou chamá-lo em um script shell.

Foi feito para ser executado sem nenhuma dependência externa além da linguagem Perl e dos módulos usados: DateTime, LWP::Simple e CAM::PDF. Estes módulos podem ser instalados facilmente digitando no prompt:

         cpan  DateTime LWP::Simple CAM::PDF

Caso surja alguma dúvida na instalação dos módulos, consulte esta página: http://www.cpan.org/modules/INSTALL.html

Com os módulos instalados, é só colocar o script para funcionar. Ex.: para baixar o Diário Oficial do dia, basta digitar no prompt de comando:

         perl DOEGO.pl

que ele irá baixar todas as páginas do Diário Oficial do dia de hoje e criar um PDF contendo todas elas.

Para baixar o Diário Oficial de outra data, basta digitar (Ex:29/06/2016):

          perl DOEGO.pl 29/06/2016

Obs.: é necessário ter a linguagem PERL instalada, verifique o site   http://strawberryperl.com/ ,se não estiver usando o Linux.

  



Esconder código-fonte

#!/usr/bin/perl
$|=1;               # variável que indica  para fazer "flush" após cada operação de escrita

my $dmy= shift;            # recebe a data  desejada  passado como parâmetro 
if(defined($dmy)&& $dmy!~/^\d{2}\/\d{2}\/\d{4}$/) { die "Formato de data inválido.\n\nUso: \n\tperl DOEGO.pl dd/mm/aaaa\n"}      #verifica o formato da data
use DateTime;
my $dt=DateTime->now;      # recupera a data do sistema
$dmy=$dt->dmy("/") unless defined($dmy);                      # string da data no formato dd/mm/yyyy 
$dmy=~/^(\d{2})\/(\d{2})\/(\d{4})$/;                        # captura (com os parênteses) o dia, mes e ano nas variáveis $1,$2 e $3 
my $day=sprintf("%02d", $1);                           # formata a variável com dois dígitos e zeros à esquerda
my $mon=sprintf("%02d", $2);
my $year=sprintf("%04d", $3);
print "Data: $dmy\n";

use LWP::Simple;          # módulo para fazer as requisições http de forma simples
my $i=1;              # variável utilizada para contar as páginas em sequência
while ($i>0) {
   my $pag=sprintf("%03d", $i);   
   if (is_success(getstore("http://www.abc.go.gov.br/arquivos/diariooficial/$year/$mon/$day/".$pag.".pdf",$pag.".pdf"))) {
      print "pag. $pag (ok)\n" ;                              # faz a requisição e armazena 
      if ( $i == 1) {                                         # se for a primeira página...
            use CAM::PDF; 
            $bigpdf = CAM::PDF->new("$pag.pdf");            # a primeira página será a base para anexar os outros pdf
      } else {
            my $anotherpdf = CAM::PDF->new("$pag.pdf");     # demais páginas pdf   
            $bigpdf->appendPDF($anotherpdf);              # anexadas  à primeira
      }
      $i++;
   } else { $i=0 }
   unlink("$pag.pdf");      # apaga as páginas individuais temporárias
}
if (defined($bigpdf)) {                                 # se o arquivo foi criado
   $bigpdf->cleanoutput("DOEGO-$year$mon$day.pdf");             #salva o pdf com todas as páginas
   system("start DOEGO-$year$mon$day.pdf") if -e "DOEGO-$year$mon$day.pdf";        #no windows esta linha inicia o visualizador padrão para PDF se ele foi criado
} else { 
   print "DOEGO de $dmy não disponível!\n"  unless -e "DOEGO-$year$mon$day.pdf";   #avisa se  o caderno  não está disponível
}   

Scripts recomendados

Capturar imagens de um site

Web crawler simples em Perl

Pagerank Checker

Script para fazer buscas no arquivo de logs do squid

Iniciando desenvolvimento web ágil com Perl (Mojolicious)


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts