NubankCli é um aplicativo de console que importa as transações do cartão de crédito e da NuConta em forma de arquivos JSONs segregados por usuário. Além disso, ele prove alguns comandos simples que ajudam a visualizar/sumarizar as transações importadas via linha de comando.
Para iniciar é muito rápido e você pode fazer isso em qualquer terminal. Todo o material é focado no bash, caso queria usar outro terminal será necessário adaptação.
Um ponto importante é que a execução dessa CLI foi feita para rodar ao lado do código fonte, como acontece com outras linguagens como Python, Node e PHP. Isso ajuda em evoluções e correções de bugs, um .exe
compilado seria uma caixa preta e não é o meu proposito.
Vale destacar que caso queira faze-lo nada deverá te impedir, basta executar o comando dotnet publish -c Release
e obter o compilado.
-
Caso não tenha o
dotnet core
instalado, faça-o pelo link: https://dotnet.microsoft.com/download -
Faça o clone do projeto no seu local preferido e defina o comando simplificador
nu
:# Baixa o código na sua pasta corrente git clone https://github.com/juniorgasparotto/NubankCli.git # Entra na pasta cd NubankCli # Faça o build do código para evitar que a compilação seja feita no primeiro uso dotnet build "src/NubankCli/NubankCli.csproj" # Define um alias para o arquivo ./nu no qual contém um simplificador da execução do .net alias nu=./nu # Ou defina de maneira global e permanente echo alias nu="`pwd`/nu" >> ~/.bashrc; source ~/.bashrc;
-
Faça o login na CLI usando suas credencias do aplicativo NuBank
nu login [cpf] [senha]
-
As informações do seu login ficarão salvas na pasta
src/NubankCli/UsersData/[cpf]
. Aqui temos o arquivouser-info
que contém o seu token atual e os links descobertos da sua conta. -
Você permanecerá logado até que o token do NuBank expire, normalmente demora-se 7 dias.
-
-
Após isso, será necessário fazer a segunda parte da autenticação e se tudo ocorreu bem, você verá um QRCode no seu terminal. Utilize o seu aplicativo do nubank em seu celular para validar o QRCode, use o menu:
Ícone de configurações > Perfil > Acesso pelo site
-
Após a validação pelo celular, digite
enter
para prosseguir -
Se tudo ocorrer bem você já estará logado e agora será possível importar suas transações de crédito e débito
-
Para importar as transações do cartão de crédito use:
# Importa tudo sem nenhum filtro nu import-credit # Importa com filtro de data de inicio apenas nu import-credit --start 2020-01-01 # Importa com filtro de data fim apenas nu import-credit --end 2020-02-01 # Importa com filtro de data de inicio e fim nu import-credit --start 2020-01-01 --end 2020-02-01
-
Para importar as transações do cartão de débito (nuconta) use:
# Importa tudo sem nenhum filtro nu import-debit # Importa com filtro de data de inicio apenas nu import-debit --start 2020-01-01 # Importa com filtro de data fim apenas nu import-debit --end 2020-02-01 # Importa com filtro de data de inicio e fim nu import-debit --start 2020-01-01 --end 2020-02-01
-
Para visualizar os extratos do seu cartão de crédito que foram importados, utilize o comando:
# Visualiza todos os extratos importados de acordo com as datas de abertura e fechamento cada boleto # Pode usar nas 3 formas: Simplificada, Singular e Plural nu get stat creditcard nu get statement creditcard nu get statements creditcard # Visualiza todos os extratos importados de forma mensal (forma longa) nu get stat creditcard --by-month
- Os dados importados de cartão de crédito ficaram dentro da sua pasta de usuário nas sub-pastas:
src/NubankCli/UsersData/[cpf]/card-credit
- Os dados importados de cartão de crédito ficaram dentro da sua pasta de usuário nas sub-pastas:
-
Para visualizar os extratos do seu cartão de débito que foram importados, utilize o comando:
# Pode usar nas 3 formas: Simplificada, Singular e Plural nu get stat nuconta nu get statement nuconta nu get statements nuconta
- Os dados importados de cartão de débito ficaram dentro da sua pasta de usuário nas sub-pastas:
src/NubankCli/UsersData/[cpf]/nuconta
.
- Os dados importados de cartão de débito ficaram dentro da sua pasta de usuário nas sub-pastas:
-
Para visualizar os extratos consolidados do cartão de crédito e débito (nuconta), utilize o comando:
# Exibe extratos do cartão de crédito e débito (Pode usar nas 3 formas: Simplificada, Singular e Plural) nu get stat nu get statement nu get statements # Exibe extratos consolidando ambos os cartões de forma mensal (forma longa) nu get stat --merge # Exibe extratos consolidando ambos os cartões de forma mensal (forma curta) nu get stat -m
-
Para visualizar todas as transações importadas, utilize o comando:
# Simplificada nu get trans # Singular nu get transaction # Plural nu get transactions # Para visualizar mais colunas nu get transactions -o wide # Visualizar transações que iniciam com "IOF": nu get transactions "IOF" # Visualizar transações que tenham o ID: nu get transactions "5f52f4f6"
-
Para verificar quem está logado + informações do usuário:
nu whoami
-
Para deslogar utilize o comando abaixo ou apague o arquivo
src/NubankCli/UsersData/[cpf]/user-info.json
:nu logout
Para importar os dados de cartão de crédito de forma mensal:
nu import-credit --statement-type ByMonth
Obtém apenas os extratos no qual contém alguma entrada SEM considerar pagamentos de boletos:
nu get stat --where 'Transactions.Where(t => t.Value > 0 && !t.IsBillPayment).Sum(t => t.Value) > 0'
Ordena os extratos por valor de entrada do maior para o menor:
nu get stat --sort 'Transactions.Where(t => t.Value > 0).Sum(t => t.Value) DESC'
Comandos avançados para filtragem das transações importadas:
# Obtem as transações com filtro (forma curta -w): Apenas transações de entrada de valor (recebimentos)
nu get trans -w "Value > 0"
# Obtem as transações com filtro (forma longa --where): Apenas transações de saída de valor (pagamentos)
nu get trans --where "Value < 0"
# Obtem as transações ordenas por data (forma curta -s): Menor para o maior (mais antigas primeiro)
nu get trans -s "EventDate ASC"
# Obtem as transações ordenas por data (forma longa --sort): Maior para o menor (mais recentes primeiro)
nu get trans --sort "EventDate DESC"
# Obtem as maiores transações de saída
nu get trans -w "Value < 0" --sort "Value ASC"
# Obtem as maiores transações de entrada
nu get trans -w "Value > 0" --sort "Value DESC"
# Filtra pelo nome do cartão (nesse caso não obtem nada da NuConta)
nu get trans -w 'CardName="credit-card"'
# Obtem as transações de um extrato especifico (Start é a data de abertura da fatura - OpenDate)
nu get trans -w 'Statement.Start == "2020-05-17" && !IsBillPayment' -s "PostDate DESC, EventDate DESC"
# Obtem com uma quantidade mair de itens por página
nu get trans -S 100
# Obtem sem paginação
nu get trans -S 0
# Obtem em formato de JSON sem paginação removendo o cabeçalho e rodapé
nu get trans -o json -S 0 --verbose none
Para contribuir basta ter instalado o Visual Studio Code
ou o próprio Visual Studio Community
e fazer as adaptações que ache necessárias. Vale dizer que o projeto é bem simples e não contém diversos recursos como:
- Geração de boleto
- Conta de investimento
- Login com certificado
- Refresh Token
Fique a vontade para fazer essas evoluções ;)
A pasta Wiremock
contém algumas massas de dados que pode auxiliar na correção de bugs ou evoluções. Para usa-lo, basta instalar o wiremock e usar os arquivos desta pasta na execução do .jar do wiremock.
Os passos para executar usando o wiremock são:
-
Baixe o wiremock standalone: http://wiremock.org/docs/running-standalone/
-
Execute o wiremock apontando para a pasta onde temos a nossa massa de dados de testes:
java -jar "C:\wiremock-standalone-2.27.2.jar" --port 6511 --root-dir "C:\NubankCli\wiremock" --match-headers Content-Type,Authorization,Accept
- OBS: Estou considerando que todos os artefatos estejam na
C:
, troque para o caminho onde você baixou oWiremock
e oNubankCli
.
- OBS: Estou considerando que todos os artefatos estejam na
-
Abra o arquivo
C:\NubankCli\src\NubankCli\settings.json
e altere a propriedade:enableMockServer: true
-
Por padrão, a porta
6511
já está configurada nesse arquivo na propriedademockUrl
, caso queira altera-la, mude o arquivo de configurações e execute o wiremock novamente na porta correta.
Caso queria usar uma interface para o Wiremock
, eu aconselho o WiremockUI
, uma interface criada por mim que pode te ajudar a visualizar e manipular os servidores e arquivos do wiremock. Vale dizer que é uma interface exclusiva para Windows, para outros S.O é necessário usar o .jar
diretamente.
https://github.com/juniorgasparotto/WiremockUI
Esse projeto usa a biblioteca SysCommand
, um parser de linha de comando para .net
criado por mim que simplifica todo o trabalho de aplicações para console. O link abaixo contém todas as informações:
https://github.com/juniorgasparotto/SysCommand
Esse projeto foi desenvolvido baseado na ideia de alguns outros repositórios no qual gostaria de fazer os devidos agradecimentos: