Crie Relatórios Financeiros de Empresas Listadas na B3
Rapina é um programa que cria relatórios financeiros de empresas listadas na B3, processando arquivos de demonstrações financeiras trimestrais (ITR) e anuais (DFP) do site da CVM e armazenando-os em um banco de dados local (sqlite). As informações são extraídas do balanço patrimonial, fluxo de caixa, DRE (demonstração de resultado) e DVA (demonstração de valor adicionado).
O programa coleta arquivos desde 2010. Como estes arquivos contém os dados do ano corrente e do ano anterior, foi possível também a extração de dados de 2009.
Com base nestes dados, são gerados relatórios das demonstrações financeiras por empresa.
Baixe o executável da página de release e renomeie o executável para rapinav2.exe (no caso do Windows) ou rapinav2 (para o Linux ou macOS).
Antes de se criar um relatório pela primeira vez, é necessário baixar os dados do site da CVM. Para isso, execute o seguinte comando no terminal:
rapinav2 atualizar <--all | --ano <ano>>
Exemplos:
rapinav2 atualizar --all: baixar e atualizar dados de todos os anos.rapinav2 atualizar --ano 2023: baixar e atualizar um ano específico.
Para criar uma planilha com os dados financeiros trimestrais de um empresa, execute o seguinte comando:
rapinav2 relatorio [-d <DIRETORIO>] [--crescente|-c] [--googlesheets|-s]
Opcional: use o parâmetro -s para salvar os relatórios no Google Drive. Veja o passo a passo abaixo de como configurar o acesso ao Google Sheets e Google Drive.
As empresas serão listadas em ordem alfabética. Basta navegar com as setas, ou use a tecla / para procurar uma empresa.
Exemplos:
rapinav2 relatorio: cria o relatório no diretório corrente.rapinav2 relatorio -d ./relats: cria o relatório no diretóriorelats.rapinav2 relatorio -d ./relats -c: cria o relatório no diretóriorelats, com os trimestres listados na ordem crescente.
Os relatórios serão gravados com o nome da empresa. Exemplos:
3R_PETROLEUM_ÓLEO_E_GÁS_S.A.xlsx
AES_BRASIL_ENERGIA_S.A.xlsx
CIA_SANEAMENTO_DO_PARANA_-_SANEPAR.xlsx
FLEURY_S.A.xlsx
LOCALIZA_RENT_A_CAR_S.A.xlsx
LOJAS_RENNER_S.A.xlsx
RAIA_DROGASIL_S.A.xlsx
Para criar os relatórios em uma interface web, execute o comando servidor:
$ ./rapinav2 servidor [--googlesheets|-s]
[>] Iniciando servidor em :8005
Opcional: use o parâmetro -s para salvar os relatórios no Google Drive. Veja o passo a passo abaixo de como configurar o acesso ao Google Sheets e Google Drive.
E acesse a página através do endereço http://localhost:8005, onde é possível criar relatórios das empresas selecionadas e atualizar os dados (do ano corrente e do ano anterior).
Personalize os parâmetros criando o arquivo rapina.yaml no mesmo diretório do executável (rapinav2 ou rapinav2.exe) usando os seguintes parâmetros:
| Parâmetro | Descrição |
|---|---|
dataSrc |
Arquivo onde serão gravados os dados coletados Default: ./.dados |
tempDir |
Pasta onde os arquivos temporários serão armazenados Default: ./.dados |
relatorio.outputDir |
Pasta onde os relatórios serão salvos Default: ./ |
relatorio.googleSheetsDir |
Pasta do Google Drive onde os relatórios serão salvos |
Exemplo do rapina.yaml:
dataSrc: "dados/rapina/rapina.db?cache=shared&mode=rwc&_journal_mode=WAL"
tempDir: "dados/rapina"
relatorio:
outputDir: "dados/reports"
googlesheetsDir: "/rapina"Para compilar o código fonte, siga estas instruções:
- Instale o Go: https://go.dev/doc/install
- Instale o Git: https://git-scm.com/book/pt-br/v2/Come%C3%A7ando-Instalando-o-Git
- Abra o terminal (ou CMD no Windows) e execute os seguintes comandos:
git clone github.com/dude333/rapinav2
cd rapinav2
go mod tidy
go build -o rapinav2 cmd/*O arquivo rapinav2, ou rapinav2.exe no Windows, será criado.
Siga estes passos uma única vez para obter o arquivo credentials.json que o Rapina usa para se autenticar em seu nome.
- Acesse o Google Cloud Console.
- Clique no seletor de projetos no topo da página e escolha Novo projeto.
- Dê um nome ao projeto (ex.:
rapina) e clique em Criar. - Certifique-se de que o novo projeto está selecionado no seletor antes de continuar.
É preciso habilitar duas APIs: Google Sheets API e Google Drive API.
- No menu lateral, acesse APIs e serviços → Biblioteca.
- Pesquise por Google Sheets API, clique sobre ela e depois em Ativar.
- Volte à Biblioteca, pesquise por Google Drive API, clique sobre ela e depois em Ativar.
Esta etapa define o que o usuário vê quando a aplicação solicita permissão. Como somente você usará esta aplicação, é possível mantê-la no modo Teste indefinidamente.
-
Acesse APIs e serviços → Tela de consentimento OAuth.
-
Escolha Externo como tipo de usuário e clique em Criar.
-
Preencha os campos obrigatórios:
- Nome do app — qualquer nome, ex.:
rapina - E-mail de suporte ao usuário — seu endereço de e-mail
- Informações de contato do desenvolvedor — seu endereço de e-mail
- Nome do app — qualquer nome, ex.:
-
Clique em Salvar e continuar em todas as telas seguintes até chegar ao Resumo, depois clique em Voltar ao painel.
-
No painel da tela de consentimento, clique em Publicar app — ou mantenha no modo Teste e adicione sua conta como usuário de teste na sub-etapa abaixo.
Se permanecer no modo Teste: clique em Adicionar usuários em Usuários de teste e adicione a conta Google com a qual você irá se autenticar. Apenas os usuários listados conseguem concluir o fluxo OAuth enquanto o app estiver nesse modo.
- Acesse APIs e serviços → Credenciais.
- Clique em Criar credenciais → ID do cliente OAuth.
- Em Tipo de aplicativo, escolha Aplicativo de desktop.
- Dê um nome (ex.:
googlesheets-cli) e clique em Criar. - Na caixa de diálogo que aparecer, clique em Fazer download do JSON.
- Renomeie o arquivo baixado para
credentials.jsone coloque-o no diretório de trabalho a partir do qual você executa o programa.
Mantenha o
credentials.jsonem segredo.
Na primeira execução, o programa exibirá uma URL como:
Authorise this application by visiting:
https://accounts.google.com/o/oauth2/auth?...
- Abra a URL no seu navegador.
- Escolha a conta Google que será a proprietária das planilhas.
- Revise as permissões ("Ver, editar, criar e excluir apenas os arquivos específicos do Google Drive usados com este app") e clique em Permitir.
O programa armazenará o token resultante em token.json. Execuções posteriores carregam o token automaticamente, sem necessidade de interação.
Mantenha o
token.jsonem segredo. Ele concede acesso em seu nome.
- Relação tickers x CNPJ:
https://sistemaswebb3-listados.b3.com.br/isinPage https://sistemaswebb3-listados.b3.com.br/isinProxy/IsinCall/GetTextDownload/ => obj.geralPt.id => btoa(JSON.stringify(obj.geralPt.id)) https://sistemaswebb3-listados.b3.com.br/isinProxy/IsinCall/GetFileDownload/{id}
Os relatórios tem finalidade apenas informativa e podem conter informações incorretas.

