Diário Oficial da União - Download facilitado
Publicado por Valtoir dos Santos Jardim (última atualização em 14/07/2011)
[ Hits: 20.728 ]
Homepage: valtoir.wordpress.com
Download 1292241763.diof.sh (versão 2)
Download 1298840798.diof.sh (versão 3)
Muitas pessoas necessitam baixar o Diário Oficial da União com regularidade, e o site da Imprensa Nacional não facilita muito as coisas.
No meu mundo perfeito haveria um servidor torrent oficial para a divulgação, o que permitiria o download sem sobrecarregar a banda da Imprensa Nacional, mas enquanto isso não acontece, disponibilizo um pequeno script para permitir o download de forma facilitada.
Detalhe importante: o script faz uso do navegador Chromium (o google-chrome não serve). Se quiser o download em um único arquivo, sugiro também instalar o aplicativo pdftk. Caso ele esteja disponível, o script junta automaticamente todas as páginas em um único PDF.
Observações: o processo é relativamente lento (+ ou - 40min. aqui, num link de 4Mbps), acredito que mais pelo fato da grande quantidade de conexões (uma para cada página do D.O.U.) do que pela largura de banda em si.
Além disso, o script cria uma janela por página a ser baixada (e a fecha automaticamente) o que significa que, até o final do script, você terá uma janela do chromium-browser "pipocando" em sua tela.
Se quiser usar o computador ao mesmo tempo, sugiro que, antes de rodar o script, marque a janela desejada para manter-se "sempre no topo".
Versão 2 - Enviado por Valtoir dos Santos Jardim em 13/12/2010
Changelog: Publiquei o script no VOL num dia, e logo em seguida uma atualização do chromium passou a exigir confirmação para o download de arquivos PDF, o que praticamente inviabiliza a automação. Após testar vários browser, adaptei o script para fazer uso do navegador Arora, que me pareceu a melhor opção. Basta instalar o Arora e configurá-lo para memorizar o download automático de arquivos PDF, dando atenção também à pasta de downloads padrão .
Versão 3 - Enviado por Valtoir dos Santos Jardim em 27/02/2011
Changelog: O script agora faz uso do Arora ao invés do chromium, que nas útlimas versões passou a exigir confirmação para download de arquivos pdf. Também não é mais preciso informar a pasta de download.
#!/bin/bash # autor: Valtoir dos Santos Jardim # e-mail: valtoirjardim_at_gmail_dot_com # data: 04/dez/2010 # versão: ~ 0.99 # Espero que esse script lhe seja útil. Para variar, se quiser um script inútil dê uma olhada em # http://www.vivaolinux.com.br/scripts/download.php?arquivo=feet.sh echo -e "\e[31;1m\nIMPORTANTE: para que o script funcione, é necessário que o chromium esteja configurado para NÃO perguntar onde salvar os arquivos.\e[m" valida_data() { VDATA="$(echo $1 | cut -d/ -f2)/""$(echo $1 | cut -d/ -f1)/""$(echo $1 | cut -d/ -f3)" [ $(date -d $VDATA +"%u") -gt 5 ] && { echo -e "\e[31;1m\nA data especificada é um $(date -d $VDATA +"%A")," \ "e o Diário Oficial da União não circula aos $(date -d $VDATA +"%A")s.\n"\ "\bTente usar o parâmetro \"-dDATA\". Por exemplo: \e[34;1m$0 -d14/12/2010\n\e[m" exit } } which chromium-browser > /dev/null || { echo -e "\e[31;1m\nEsse script requer o browser chromium (http://code.google.com/intl/pt-BR/chromium/)."\ " Não, o \"Google Chrome\" não serve. :-)\n\e[m" exit } SECAO="1 2 3" while getopts d:f:ujh PARAMS; do case "${PARAMS}" in d) DATA="${OPTARG}";; f) DIR="${OPTARG}";; u) SECAO="${SECAO} 20";; j) SECAO="${SECAO} 126";; h) echo -e "\nScript feito para download do Diário Oficial da União." \ "Parâmetros:\n" \ "-d Especifica a data do DOU, no format dd/mm/aaaa. Ex: 14/12/2010\n" \ "-f Especifica a pasta padrão de downloads do chromium\n" \ "-u Baixa, além das Seções 1, 2 e 3, o Diário da Justiça - Seção Única\n" \ "-j Baixa, além das Seções 1, 2 e 3, o Diário da Justiça Federal da Primeira Região\n" exit;; esac done : ${DATA:=$(date +"%d/%m/%Y")} valida_data $DATA [ -z $DIR ] && DIR="/home/$USER/Downloads/"; echo -e "\e[31;1m\nPasta de downloads do chromium não informada. Espero que seja ${DIR}\n" \ "\bSe a pasta de download for outra, defina-a com o parâmetro -f. \e[34;1mEx: $0 -f/home/fulano/Downloads/\e[m\n" wget -O - "http://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=1&pagina=1&data=$14/07/2011" |\ grep "o foi encontrado nenhuma arquivo para os par" && { echo -e "\e[31;1m\nAparentemente não há edição do Diário Oficial da União no dia desejado (feriado, talvez?).\n\e[m" exit } for JORNAL in $SECAO; do PAG=$(wget -O - "http://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=${JORNAL}&pagina=1&data=$14/07/2011" |\ grep "totalArquivos=" | sed 's/^.*totalArquivos=//' | sed 's/".*$//') for PAGINA in $(seq 1 $PAG); do chromium-browser --app="http://www.in.gov.br/imprensa/visualiza/index.jsp?jornal=${JORNAL}&pagina=${PAGINA}&data=$14/07/2011"& while [ ! -e ${DIR}INPDFViewer.pdf ]; do sleep 1 done mv ${DIR}INPDFViewer.pdf ${DIR}jornal_${JORNAL}_-_$PAGINA.pdf /bin/kill -15 $! done done which pdftk > /dev/null && { pdftk $(ls -tr ${DIR}/jornal*.pdf) cat output DOU_${DATA//\//_}.pdf rm ${DIR}/jornal_*.pdf echo -e "\e[31;1m\nPronto!\e[34;1m O arquivo DOU_${DATA//\//_}.pdf foi salvo nessa pasta.\n\e[m" grep -m1 -A2 "inútil" $0 exit } echo -e "\e[31;1m\n Pronto!\e[34;1m Os arquivos foram salvos na pasta ${DIR}, um por página.\n" \ "Se preferir ter todo o Diário Oficial da União em um único arquivo, instale o aplicativo \"pdftk\" e, \n" \ "ao rodar esse script, você o terá, nessa pasta, com o nome DOU_${DATA//\//_}.pdf.\n\e[m" grep -m1 -A2 "inútil" $0
Rotina para backup diário, semanal e mensal (exemplo para Firebird)
Script FIREWALL IPTABLES com 3 (três) interfaces (Int, Ext e DMZ)
Implementando Statement e RecordSet em bash script
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta