Diário Oficial da União - Download facilitado
Publicado por Valtoir dos Santos Jardim (última atualização em 14/07/2011)
[ Hits: 20.730 ]
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
Baixe arquivos em pedaços com o DCDownloader
Backup de Repositórios Subversion
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Criando uma VPC na AWS via CLI
Multifuncional HP imprime mas não digitaliza
Dica básica para escrever um Artigo.
Como Exibir Imagens Aleatórias no Neofetch para Personalizar seu Terminal
Instalação Uefi com o instalador clássico do Mageia [RESOLVIDO] (2)
Melhorando a precisão de valores flutuantes em python[AJUDA] (11)
GLPI - Configuração de destinatário com conta Microsoft Exchange (0)