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.
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 arquivo user-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
src/NubankCli/UsersData/[cpf]/card-credit
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
src/NubankCli/UsersData/[cpf]/nuconta
.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:
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
C:
, troque para o caminho onde você baixou o Wiremock
e o NubankCli
.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 propriedade mockUrl
, 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: