andreroggeri/pynubank

Erro no get_account_statements() em determinadas accounts

Closed this issue · 18 comments

Estou tendo esse erro em algumas accounts:
nubank.py", line 198, in get_account_statements feed = map(parse_pix_transaction, feed) TypeError: 'NoneType' object is not iterable

Ja na versão 2.19.1

Se você executar o get_account_feed o que ele retorna ?

get_account_feed retorna o json com o feed corretamente

testando na versão 2.20 não estou mias conseguindo reproduzir o erro. reabro caso venha a conseguir.

O problema voltou... apenas uma das accounts da ele

File "./teste.py", line 9, in <module> print(nu.get_account_statements()) File "/usr/local/lib/python3.9/site-packages/pynubank/auth_mode.py", line 23, in wrapper return function(*args, **kwargs) File "/usr/local/lib/python3.9/site-packages/pynubank/nubank.py", line 206, in get_account_statements feed = map(parse_pix_transaction, feed) TypeError: 'NoneType' object is not iterable

ja o print(get_account_feed()) retorna "None" e não quebra

outras funções como:
get_account_savings_balance()
get_account_balance()
get_bills()

funcionam corretamente.

Essa conta tem alguma movimentação ? Estranho o feed ser None

essa conta tem muita movimentação.. recebe muito pix.

Então deve ser algum comportamento do Nubank.

Esse endpoint não é mais utilizado pelo app, e sim o paginado... Você consegue testar nele ? É o get_account_feed_paginated

esse get_account_feed_paginated() funcionou ... baixou 59 pages.

@andreroggeri tem planos para trazer os dados das caixinhas?
percebi que estando nas caixinhas o valor não vem ;/

@monrapps perfeito, então precisamos depreciar esse método aqui pq ele já está deixando de funcionar corretamente

@alexandrechoske não, eu tenho usado bem pouco o Nubank, mas PRs são bem vindos

@andreroggeri qual seria a melhor estratégia aqui ??

  • criar um get_account_statements_paginated()
  • fazer o get_account_statements() rodar todas as pages dando append e retornar tudo

Eu vim aqui falar disso também. Tenho um script que roda toda noite para pegar minhas transações e começou a falhar também. Me parece o mesmo motivo.
https://github.com/lipemorais/financas-automatizadas/actions/runs/3179127061/jobs/5181310183

Sobre qual seria e melhor estratégia eu gosto de manter ao máximo a retro compatibilidade, então faria os 2. Dando prioridade para o novo get_account_statements.

  1. fazer o get_account_statements() rodar todas as pages dando append e retornar tudo
  2. criar um get_account_statements_paginated()

Como o get_account_statements "antigo" ainda funciona para algumas pessoas (Aqui ainda funciona) e ele retorna uma entidade diferente do novo, o ideal seria criar um método novo e depreciar o antigo.

Poderiamos criar um get_account_statements_paginated trazendo somente as transações que contém o campo amount (Que tentamos extrair de vários campos). O que acham ?

Sobre trazer todas as páginas, eu tenho sentimentos mistos, pq no caso da lib fazer várias chamadas de API e acabar bloqueando a conta (Não sei como tá isso hoje), seria na nossa conta. Por isso eu deixei um exemplo de como pegar todas a páginas ao invés de implementar dentro da lib, assim a responsabilidade fica com quem está usando.

Como o get_account_statements "antigo" ainda funciona para algumas pessoas (Aqui ainda funciona) e ele retorna uma entidade diferente do novo, o ideal seria criar um método novo e depreciar o antigo.

Entendi. Parece o melhor caminho mesmo.

De acordo. @andreroggeri você vai implementar ou está esperando eu fazer ?

Implementado na #348

Agora os métodos get_account_feed e get_account_statementsestão deprecated e tb criei o get_account_statements_paginated que retorna o feed só de transações que tem valor (Excluindo aquela "Bem vindo ao Nubank" por ex)