Olá Yulli, tudo bem? Obrigado pelo interesse em contribuir. Criei projeto no GitHub (meu primeiro): https://github.com/danfcosta/nubankexporter Farei depois um descritivo lá no readme!
Atenciosamente, *Danilo Freitas da Costa* On Sat, Feb 22, 2020 at 2:29 PM yulli dias <[email protected]> wrote: > Boa tarde Danilo, tudo bem? > > Também sou uma usuário assidua do Nubank 💜 !! Atualmente estou fazendo > os lançamentos manualmente e tenho muito interesse um usar e contribuir com > seu código. Que tal colocar no Github? > > Programo em python há 3 anos, acho que vou poder contribuir bastante! 😄 > > Att, > > -- > > Yulli Dias > > Graduanda em Engenharia de Computação - CEFET-MG > > [email protected] > > LinkedIn <https://www.linkedin.com/in/yullidias/> GitHub > <https://github.com/yullidias> Lattes > <http://lattes.cnpq.br/4604197134660281> > > > ------------------------------ > *De:* gnucash-br <[email protected]> > em nome de [email protected] <[email protected]> > *Enviado:* sábado, 22 de fevereiro de 2020 14:00 > *Para:* [email protected] <[email protected]> > *Assunto:* Digest gnucash-br, volume 122, assunto 3 > > Enviar submissões para a lista de discussão gnucash-br para > [email protected] > > Para se cadastrar ou descadastrar via WWW, visite o endereço > https://lists.gnucash.org/mailman/listinfo/gnucash-br > ou, via email, envie uma mensagem com a palavra 'help' no assunto ou > corpo da mensagem para > [email protected] > > Você poderá entrar em contato com a pessoa que gerencia a lista pelo > endereço > [email protected] > > Quando responder, por favor edite sua linha Assunto assim ela será > mais específica que "Re: Contents of gnucash-br digest..." > > > Tópicos de Hoje: > > 1. Exportar CVS da Fatura do Nubank (usando pynubank) > (Danilo Freitas da Costa) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Sat, 22 Feb 2020 02:02:34 -0300 > From: Danilo Freitas da Costa <[email protected]> > To: Lista Gnucash-br <[email protected]> > Subject: [gnucash-br] Exportar CVS da Fatura do Nubank (usando > pynubank) > Message-ID: > < > caevrnqv1poqrt+1asmkn8iv85bneoccmvu0rmre-fs4dc-c...@mail.gmail.com> > Content-Type: text/plain; charset="utf-8" > > Pessoal, > > Eu sou um usuário assíduo do Nubank há vários anos, desde o "primeiro lote" > de clientes. > > E nesse tempo todo eu faço sempre um trabalho manual de estruturar os > registros para importar para o GnuCash. Eu faço esse trabalho sacal pelos > seguintes motivos: > > 1) A cada fatura a data que aparece em uma compra, nem sempre é a dada do > dia que ela realmente aconteceu. Numa compra a vista, aparece ou a data do > mesmo dia ou do dia seguinte. > 2) Quando a compra é parcelada, ele mostra a data em que foi processado > naquele mês. Ou seja olhando para a fatura, você não faz ideia qual foi a > data da compra. > 3) Eu sempre formato o descritivo da compra para mostrar a Data + > Descritivo + Parcela. Exemplo: 2020-02-08 - Estabelecimento XPTO (1/3) > > Então resolvi criar um script em python para fazer esse trabalho por mim e > gerar um CSV. > > OBS: Tem muito tempo que não programo (pelo menos a lógica ainda está > fresca). Meu conhecimento em Python tende a ZERO. > > Compartilho com vocês o script abaixo. Para os entendidos de python, favor > não me esculhambar (ver OBS acima). > Fiquem à vontade para incrementar e fazer os devidos tratamentos de erro > (nem me preocupei com isso). Foco no MVP! > Próximos passos, se eu tiver vontade (e saco), gerar OFX. > > # Monta arquivo CSV com extrato de fatura em formato CSV > # > # Cada linha do CSV possui > # DATA = data da fatura, no formato YYYY-MM-DD > # DESCRICAO = <DATA DA COMPRA> - <DESCRICAO> <(X/Y)>, onde: > # <DATA DA COMPRA> = data original em que foi feita a compra > # <DESCRICAO> = descritivo que vem na fatura (transacao) > # <(X/Y)> = se a compra for parcelada, X é a parcela corrente e Y é o total > de parcelas > # Exemplo: 2020-02-08 - Estabelecimento XPTO (1/3) > # VALOR = valor do item na fatura > # > # Exemplo de linha no CSV: > # 2020-03-05;2020-02-08 - Estabelecimento XPTO (1/3);50,00 > # > # Forma de uso > # python extrato.py <CPF> <SENHA> <DATA NO FORMATO YYYY-MM-DD> > # > # Dependência do pynubank (versao 1.0.1 que dá suporte ao QRCode) > # https://github.com/andreroggeri/pynubank/tree/1.0.1 > > from pynubank.nubank import Nubank > > import sys > import locale > locale.setlocale(locale.LC_ALL, 'pt_BR.UTF-8') > > cpf = sys.argv[1] > pwd = sys.argv[2] > bill_date = sys.argv[3] > output_file_path = 'COLOCAR O CAMINHO DO ARQUIVO CSV AQUI' > > #busca fatura com base em uma data > def get_bill_by_date(bills, date): > for b in bills: > if b['summary']['due_date'] == date: > return b > return None > > #busca transacao com base no id (href) > def get_transaction_by_id(transactions, id): > for t in transactions: > if t['href'] == id: > return t > return None > > #formata a descricao da transacao > def get_formated_description(bill_item, transaction): > description = '{} - {}'.format(transaction['time'][:10], > bill_item['title']) > if bi['charges'] > 1: > description = description + ' ({}/{})'.format(bi['index'] + 1, bi['charges' > ]) > return description > > nu = Nubank() > uuid, qr_code = nu.get_qr_code() > qr_code.print_ascii(invert=True) > input('Após escanear o QRCode pressione enter para continuar') > > # Somente após escanear o QRCode você pode chamar a linha abaixo > nu.authenticate_with_qr_code(cpf, pwd, uuid) > > #recupera as transacoes > nubank_transactions = nu.get_card_statements() > > #recupera as faturas > nubank_bills = nu.get_bills() > > #busca fatura com base em uma data > nubank_bill = get_bill_by_date(nubank_bills, bill_date) > > #recupera os detalhes da fatura > nubank_bill_details = nu.get_bill_details(nubank_bill) > > csv_output = open(output_file_path,'w') > csv_output.write('DATA;DESCRICAO;VALOR') > > for bi in nubank_bill_details['bill']['line_items']: > if 'href' in bi: > t = get_transaction_by_id(nubank_transactions, bi['href']) > row = '\n' + bill_date + ';' > row += get_formated_description(bi, t) + ';' > row += locale.currency(bi['amount'] / 100, grouping=True, symbol=None) > csv_output.write(row) > > csv_output.close() > > Atenciosamente, > > *Danilo Freitas da Costa* > -------------- Próxima Parte ---------- > Um anexo em HTML foi limpo... > URL: < > http://lists.gnucash.org/pipermail/gnucash-br/attachments/20200222/286bbb27/attachment-0001.html > > > > ------------------------------ > > Subject: Legenda do Digest > > _______________________________________________ > gnucash-br mailing list > [email protected] > https://lists.gnucash.org/mailman/listinfo/gnucash-br > > > ------------------------------ > > Fim da Digest gnucash-br, volume 122, assunto 3 > *********************************************** > _______________________________________________ > gnucash-br mailing list > [email protected] > https://lists.gnucash.org/mailman/listinfo/gnucash-br >
_______________________________________________ gnucash-br mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-br
