Logotipo Dicas-L, por Ricardo Burile

Busca

Visite também: Segurança Linux ·  UnderLinux ·  VivaOLinux ·  LinuxSecurity ·  NoticiasLinux ·  BR-Linux ·  SoftwareLivre.org ·  [mais]   
 

Você está aqui: Home  → Arquivo Dicas-L

 

Zura! - Busque. Compare. Compre. Zura! - Busque. Compare. Compre.

Outras ofertas

TV LCD

TV Plasma

DVD Player

Assine a Lista Dicas-L

Receba diariamente por email as dicas
de informática publicadas neste site
Para se descadastrar, clique aqui.

Baixando o Diário Oficial inteiro de uma vez só

Colaboração: Bruno Buys

Data de Publicação: 09 de Agosto de 2007

Quem precisa trabalhar com o Diário Oficial da União tem que usar um aplicativo em javascript no site da Imprensa Nacional, que, convenhamos, deixa a desejar. Só se vê uma página de cada vez, é lento e não dá para fazer buscas no Diário inteiro.

Eu decidi escrever o shell script abaixo porque salvar página por página no braço não era uma opção, e também porque precisei citar o link direto para o arquivo pdf de uma página.

O script aceita quatro formas de rodar:

  baixadiario secao1  # baixa somente a secao 1 do D.O.
  baixadiario secao2  # baixa somente a secao 2 do D.O.
  baixadiario secao3  # baixa somente a secao 3 do D.O.

e

  baixadiario  # sem argumento nenhum ele baixa o D.O. inteiro

Ao fim do processo, o arquivo links.txt guarda os links para cada página do D.O.. Facilita a vida de quem precisa citar páginas, enviar links por email ou coisa parecida.

OBS - O número de página é o último número antes da extensão: "do3-86.pdf" significa "D.O. seção 3, página 86"

OBS 2 - Para quem tiver o pdfjoin instalado (parte do pacote 'pdfjam', no Debian Sarge), os últimos três comandos juntam os pdf's das seções em um único pdf. Quem não fizer questão disso, pode comentar as três linhas, para não ficar vendo mensagem de erro.

  #!/bin/bash
  
  # Baixadiario, baixa os DO's do site da Imprensa Nacional. Bruno Buys, dez-2005, out-2006.
  # Sob os termos da licensa GNU GPL, v2.0.
  
  ANO=`date +%Y`
  MES=`date +%m`
  DIA=`date +%d`
  
  
  # Baixa as paginas com a informacao do numero de pdf's das secoes do DO.
  
  for N in 1 2 3 ; do
  
         wget "http://www.in.gov.br/imprensa/jsp/jsp/jornaiscompletos/visualizacao/pdf/visualiza_pdf.jsp?jornal=do&secao="$N"&pagina=1&data="$DIA"/"$MES"/"$ANO""
  
         mv visua* index$N.htm   #Vamos guardar o index, depois, por conveniencia
  done
  
  #Isso salva os numeros de paginas que cada secao do DO tem.
  SEC1=`cat index1.htm |grep -o totalarquivos="[0-9]*[0-9]"|cut -c15-`
  SEC2=`cat index2.htm |grep -o totalarquivos="[0-9]*[0-9]"|cut -c15-`
  SEC3=`cat index3.htm |grep -o totalarquivos="[0-9]*[0-9]"|cut -c15-`
  
  funcao_pega_0a9(){
  
         for ((d=1;d<10;d++)) ; do
  
         wget http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf
  
         echo  "http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf" >> links.txt
  
         mv do"$1"-"$d".pdf `basename do"$1"-"$d".pdf "$d".pdf`00$d.pdf
  
         done
  }
  
  funcao_pega_10a99(){
  
  if [ $2 -le 100 ] ; then
  
         for ((d=10;d<$2;d++)) ; do
  
         wget http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf
  
         echo  "http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf" >> links.txt
  
         mv do"$1"-"$d".pdf `basename do"$1"-"$d".pdf "$d".pdf`0$d.pdf
  
         done
  fi
  
  if [ $2 -gt 100 ] ; then
  
         for ((d=10;d<100;d++)) ; do
  
         wget http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf
  
         echo "http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf" >> links.txt
  
         mv do"$1"-"$d".pdf `basename do"$1"-"$d".pdf "$d".pdf`0$d.pdf
  
         done
  fi
  }
  
  funcao_pega_restantes(){
  
         for ((d=100;d<$2;d++)) ; do
  
         wget http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf
  
         echo "http://www.in.gov.br/materias/pdf/do/secao"$1"/"$DIA"_"$MES"_"$ANO"/do"$1"-"$d".pdf" >> links.txt
  
         done
  
  }
  
  funcao_pega_secao_1(){
  funcao_pega_0a9 1
  funcao_pega_10a99 1 $SEC1
  funcao_pega_restantes 1 $SEC1
  }
  
  funcao_pega_secao_2(){
  funcao_pega_0a9 2
  funcao_pega_10a99 2 $SEC2
  funcao_pega_restantes 2 $SEC2
  }
  
  funcao_pega_secao_3(){
  funcao_pega_0a9 3
  funcao_pega_10a99 3 $SEC3
  funcao_pega_restantes 3 $SEC3
  }
  
  
  case $1 in
  
  secao1)
         funcao_pega_secao_1
  
  ;;
  secao2)
         funcao_pega_secao_2
  
  ;;
  secao3)
         funcao_pega_secao_3
  ;;
  *)
         funcao_pega_secao_1
         funcao_pega_secao_2
         funcao_pega_secao_3
  ;;
  esac
  
  
  #Opcional, pra quem tiver o pdfjoin (parte do pacote 'pdfjam', no Debian) instalado:
  
  pdfjoin `ls do1*.pdf` --outfile secao1.pdf
  pdfjoin `ls do2*.pdf` --outfile secao2.pdf
  pdfjoin `ls do3*.pdf` --outfile secao3.pdf
  
  exit 0

Veja a relação completa dos artigos de Bruno Buys

Stumble Upon Digg This Del.icio.us Twitter Recomendar este artigo a um amigo Entre em contato Formato PDF
Newsfeed RSS
Formato para impressão
StumbleUpon Digg Del.icio.us Twitter Recomendar Contato PDF RSS Imprimir

Referências Adicionais

Referências adicionais sobre os assuntos abordados neste site podem ser encontradas em nossa Bibliografia.

Avalie esta dica

  • Currently 3.02/5
  • 1
  • 2
  • 3
  • 4
  • 5

Avaliação: 3.0 /5 (771 votos)

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script
Criando Aplicações para Redes Sociais


Encontre imóveis, apartamentos e casas a venda no Imobilien
Saiba mais

Grupo MBS