Quarentena Maker - Dia 5: Como extrair código do boleto • Do bit Ao Byte
Djames Suhanko 10 de abril de 2020 3 min read
A encomenda que fiz está um pouco atrasada, mas os boletos são fiéis ao prazo. Não que eu esteja ansioso para pagá-los, já que para tal feito, dinheiro é um pré-requisito. Bem, quem paga conta pela Internet sabe o sofrimento que é digitar o número do boleto, e essa é uma tarefa que não me empolga. Para facilitar, vejamos como extrair código do boleto para facilitar as coisas.
Como extrair código do boleto em lote?
Processamento em lote é uma especialidade do shell script. Dá pra fazer loucuras no shell do Linux sem precisar fazer um programa elaborado, inclusive conexão com a Internet, como mostrei nesse artigo de sockets em shell script. Com a ação conjunta, podemos extrair os números e mandar para um servidor externo, ou disponibilizar o dado via socket, para ser consultado externamente. Enfim, o céu é o limite. Aproveito o parágrafo para pedir que se inscreva no canal DobitAoByteBrasil no Youtube, se ainda não for inscrito.
Esse processo pode ser feito em um desktop ou em um Raspberry. Não posso afirmar que funcione em placas MIPS devido à limitação de tamanho, considerando que será necessário instalar um programa um pouco "obeso". Comecemos por ele.
Tendo instalado o programa que fará a conversão, hora de partir para o script shell. Basicamente são dois loops, um deles faz a conversão e o outro faz a extração da informação. Se não sabe nada de shell script, no meu curso gratuito de Raspberry Pi (que outrora estava na Udemy) poderá ser de grande auxílio.
Salve o conteúdo abaixo em um arquivo com extensão ".sh":
ls *.pdf|while read line; do
abiword --to=txt "$line"
ls *txt| while read line; do
egrep -v '[[:alpha:]]|/|,|^$' "$line"|egrep '\.' >code-"$line"
Dê permissão de execução para o script. No exemplo, chamei de "numero_de_boleto":
chmo 700 numero_de_boleto.sh
Agora é só criar um diretório contendo os boletos, colocar o script lá dentro e executá-lo:
./numero_de_boleto.sh
O resultado é um arquivo com o mesmo nome do boleto, com extensão ".txt" e com prefixo "code-".
Eu dei uma borrada nos números pra não correr risco de alguém pagar meu boleto. O resultado é simples e direto:
Extrair pdf em sistema sem servidor gráfico
Apesar de ter sido feito tudo por linha de comando, o Abiword é um programa gráfico e possui dependências do X. Se estiver utilizando um container docker ou um sistema Linux sem servidor gráfico, pode usar outra coisa; o pdftotext. É isso que o Abiword usa por trás. Nesse caso, uma única linha do script precisa ser modificada, além da instalação do programa:
pdftotext "$line" $(echo "$line"|sed -re 's/\.pdf//').txt
Agora só falta o dinheiro pra pagar, o resto está pronto!
Quarentena Maker – Dia 5: Extraí o código de barras do boleto. Agora preciso extrair dinheiro do caixa eletrônico, mas receio que esse script shell não será o suficiente. Vou pensar em algo para "automatizar" o pagamento.