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
.
- fazer o get_account_statements() rodar todas as pages dando append e retornar tudo
- 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_statements
estã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)