shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Script para baixar aquivo que muda diarialmente em si


From: Jonathan Lessa
Subject: Re: [shell-script] Script para baixar aquivo que muda diarialmente em site
Date: Sun, 21 Aug 2011 13:40:16 -0300

Alexandre,

Podem aparecer outras soluções, mas analisando os endereços dos pdf que
deseja baixar identifiquei alguns padrões e apliquei neste comando, favor
testar e depois adequar usando as variáveis que desejar, como dia, mês, ano,
etc:

$ while read i; do wget "http://www.buriti.df.gov.br/ftp/$i";; done <<<
"$(echo "$(lynx -source "www.buriti.df.gov.br/ftp/$(lynx -source "
www.buriti.df.gov.br/ftp/default.asp?ano=2011&mes=08_Agosto" | grep
19-08-2011 | cut -d\' -f4)" | grep '.pdf' | cut -d\' -f6)")"


Colocando o endereço base em uma variável podemos fazer:

$ site="http://www.buriti.df.gov.br/ftp/";

$ while read i; do wget "$site$i"; done <<< "$(echo "$(lynx -source
"$site$(lynx -source "$site""default.asp?ano=2011&mes=08_Agosto" | grep
19-08-2011 | cut -d\' -f4)" | grep '.pdf' | cut -d\' -f6)")"


O resultado do comando é o download dos arquivos PDF da data 19-08-2011


Att.:
Jonathan Lessa


Em 20 de agosto de 2011 20:36, Alexandre <address@hidden>escreveu:

> **
>
>
> Olá.
>
> O script que fiz está funcionando, mas com alguns problemas. Alguém poderia
> me dar algumas dicas? Há algo mais prático e seguro?
>
> Antes quero informar que não sou programador e shell script estou
> aprendendo. Em outras palavras, dou nó em pingo d'água.
>
> Espero, também, conseguir explicar o script.
>
> Quero baixar o Diário Oficial do Governo do Distrito Federal (
> http://www.gdf.df.gov.br), fazer uma pesquisa nos arquivos PDFs baixados e
> caso seja encontrada a palavra indicada no script um e-mail seja enviado
> para mim.
>
> O primeiro problema que encontrei foi o padrão do link, que é da forma
> menos indicada para internet:
> http://www.buriti.df.gov.br/ftp/diariooficial/2011/08_Agosto/DODF Nº 162
> 19-08-2011/Seção01- 162.pdf. Se tivesse uma forma de dizer
> http://www.buriti.df.gov.br/ftp/diariooficial/2011/08_Agosto/*.pdf seria
> perfeito, não teria receio do link mudar por um descuido de quem digita.
>
> O segundo são das datas, pois o DO só sai em dias úteis, tal fato dificulta
> meu script.
>
> Não encontrei uma maneira prática de lidar com os números dos Diários
> Oficiais. O número do diário pode não bater com a data que publicado.
>
> Para o script funcionar, pelo menos a parte para baixar o diário oficial,
> tem que ter um valor inicial em um arquivo de nome ultimodo.reg na mesma
> pasta do script, no caso o valor é o número do último diário oficial, hoje
> seria o 161 para baixar o de sexta-feira dia 19/8/2011.
>
> Outra coisa, no link que é gerado com as variáveis, onde tem
> 19-"$MESN"-"$ANO", coloquei 19 para funcionar hoje baixando o DO de sexta
> feira. Onde tem 19 ficaria a variável DIA ($DIA).
>
> Esses são os que vejo...
>
> Obrigado!!!
>
> #################
>
> _ATENÇÃO: Antes de executar o script crie uma nova pasta e o coloque
> dentro, pois há uma parte que apaga arquivos usando rm -f._
>
> #################
>
> O script:
>
> #!/bin/bash
> #Script: Baixar Diário Oficial do GDF
>
> DIA=$(date +%d)
> MES=$(date +%B)
> MESN=$(date +%m)
> ANO=$(date +%Y)
> DO1=$(ls Se* | cut -d0 -f3 | cut -d. -f1 >>ultimodo.reg)
> DO2=$(tail -1 ultimodo.reg)
> i=$DO2
>
> echo $DO2
> echo $QD
> sleep 1
> rm -f Se*
>
> ###### Seção 1 #######
>
> while test $i -le $DO2
> do
> i=$((i+1))
>
> wget 
> "http://www.buriti.df.gov.br/ftp/diariooficial/"$ANO"/"$MESN"_"$MES"/DODF%20N%C2%BA%20$i
> 19-"$MESN"-"$ANO"/Se%C3%A7%C3%A3o01-%20$i.pdf" $1
> wget 
> "http://www.buriti.df.gov.br/ftp/diariooficial/"$ANO"/"$MESN"_"$MES"/DODF%20N%C2%BA%20$i
> 19-"$MESN"-"$ANO"/Se%C3%A7%C3%A3o02-%20$i.pdf" $1
> wget 
> "http://www.buriti.df.gov.br/ftp/diariooficial/"$ANO"/"$MESN"_"$MES"/DODF%20N%C2%BA%20$i
> 19-"$MESN"-"$ANO"/Se%C3%A7%C3%A3o03-%20$i.pdf" $1
> # Onde tem 19 (19-"$MESN"-"$ANO") deve ser à variável $DIA.
>
> export RC=$?
> if [ "$RC" = "0" ]; then
> break
> else
> echo 'Não foi possível baixar DO-GDF' | mutt -s 'Não foi possível baixar a
> seção 1 do DOGDF' address@hidden
> fi
>
> done
>
> ###### Pesquisa ######
>
> y=-1
> nomes=( "QUEIROZ" "AGNELO") #Queiroz é o sobrenome do Governador do DF, só
> para teste, pois sempre tal nome estará presente no DO.
> DO3=$((DO2+1))
> DATA=$(date)
>
> rm pdfgrep.txt # Apaga entradas anteriores.
>
> # Para essa parte funcionar é necessário que o mutt esteja instalado e que
> o SMTP no mesmo esteja configurado.
>
> while test $y -le 2 # No caso as duas palavras em nomes.
> do
> y=$((y+1))
>
> pdfgrep -i ${nomes[$y]} *.pdf >> pdfgrep.txt
>
> export RC=$?
> if [ "$RC" = "1" ]; then
> cat pdfgrep.txt | mutt -s "Encontrado >> ${nomes[$y]} << no DOGDF"
> address@hidden
> #echo ${nomes[$y]} # Para testar o script.
> else
> echo Não foi encontrado _"${nomes[$y]}"_ no diário $DO3 em $DATA. >>
> pdfgrep.log
> fi
>
> done
>
> echo >> pdfgrep.log
>
> exit 0
>
>  
>



-- 
Att.:
Jonathan Lessa


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

[Prev in Thread] Current Thread [Next in Thread]