Oi Danilo, Já fiz o fork do seu repositório. Vou executar seu código e tentar fazer uma contribuição em breve!
Att, Yulli Dias Get Outlook for Android<https://aka.ms/ghei36> ________________________________ From: Danilo Freitas da Costa <[email protected]> Sent: Saturday, February 22, 2020 7:19:10 PM To: yulli dias <[email protected]> Cc: [email protected] <[email protected]> Subject: Re: [gnucash-br] Github para melhor colaboração no programa que Exporta CVS da Fatura do Nubank 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]<mailto:[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]<mailto:[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]<mailto:[email protected]>> em nome de [email protected]<mailto:[email protected]> <[email protected]<mailto:[email protected]>> Enviado: sábado, 22 de fevereiro de 2020 14:00 Para: [email protected]<mailto:[email protected]> <[email protected]<mailto:[email protected]>> Assunto: Digest gnucash-br, volume 122, assunto 3 Enviar submissões para a lista de discussão gnucash-br para [email protected]<mailto:[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]<mailto:[email protected]> Você poderá entrar em contato com a pessoa que gerencia a lista pelo endereço [email protected]<mailto:[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]<mailto:[email protected]>> To: Lista Gnucash-br <[email protected]<mailto:[email protected]>> Subject: [gnucash-br] Exportar CVS da Fatura do Nubank (usando pynubank) Message-ID: <caevrnqv1poqrt+1asmkn8iv85bneoccmvu0rmre-fs4dc-c...@mail.gmail.com<mailto:caevrnqv1poqrt%[email protected]>> 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]<mailto:[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]<mailto:[email protected]> https://lists.gnucash.org/mailman/listinfo/gnucash-br
_______________________________________________ gnucash-br mailing list [email protected] https://lists.gnucash.org/mailman/listinfo/gnucash-br
