andreroggeri / pynubank Goto Github PK
View Code? Open in Web Editor NEWAcesse seus extratos do Nubank pelo Python
License: MIT License
Acesse seus extratos do Nubank pelo Python
License: MIT License
from pynubank import Nubank
uuid, qr_code = nu.get_qr_code()
qr_code.print_ascii(invert=True)
# O QRCode foi devidamente exibido e lido pelo app
nu.authenticate_with_qr_code('CPF', 'SENHA', uuid)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/ricardochaves/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pynubank/nubank.py", line 94, in authenticate_with_qr_code
auth_data = self._password_auth(cpf, password)
File "/Users/ricardochaves/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pynubank/nubank.py", line 78, in _password_auth
data = self._handle_response(response)
File "/Users/ricardochaves/.pyenv/versions/3.7.3/lib/python3.7/site-packages/pynubank/nubank.py", line 83, in _handle_response
raise NuException(response.status_code, response.json(), response.url)
pynubank.nubank.NuException: The request made failed with HTTP status code 403
Fiz o mesmo teste sem a linha qr_code.print_ascii(invert=True)
e recebi o 401, logo entendo que o QRCode fez passar o 401 e agora foi para um 403.
O CPF e Senha estão corretos, por isso quando eu olho para o erro nessa função _password_auth
eu fique sem conseguir avançar na investigação.
Estou agora fazendo uma investigação no site deles para tentar entender quais URLs devem ser usadas.
Hoje todos os exemplos estão no README.
Criar uma pasta demos
com alguns exemplos:
Traceback (most recent call last):
File "", line 1, in
File "/home/sergio/Documentos/pynubank/pynubank/nubank.py", line 99, in authenticate_with_cert
self._save_auth_data(response)
File "/home/sergio/Documentos/pynubank/pynubank/nubank.py", line 63, in _save_auth_data
self.feed_url = auth_data['_links']['events']['href']
KeyError: 'events'
Este erro ocorre ao tentar autenticar. Precisei corrigir a função _save_auth_data do arquivo nubank.py substituindo os nomes de chaves que mudaram no request. A função corrigida fica assim:
def _save_auth_data(self, auth_data: dict) -> None:
self.client.set_header('Authorization', f'Bearer {auth_data["access_token"]}')
self.feed_url = auth_data['_links']['magnitude']['href']
self.query_url = auth_data['_links']['ghostflame']['href']
self.bills_url = auth_data['_links']['savings_account']['href']
Olá, não consigo usar o exemplo com MockHttpClient descrito no README.md:
Traceback (most recent call last):
File "extract_payments.py", line 10, in <module>
card_statements = nu.get_card_statements()
File "/home/wener/.local/lib/python3.8/site-packages/pynubank/nubank.py", line 107, in get_card_statements
feed = self.get_card_feed()
File "/home/wener/.local/lib/python3.8/site-packages/pynubank/nubank.py", line 104, in get_card_feed
return self.client.get(self.feed_url)
File "/home/wener/.local/lib/python3.8/site-packages/pynubank/utils/mock_http.py", line 37, in get
result = self._find(url)
File "/home/wener/.local/lib/python3.8/site-packages/pynubank/utils/mock_http.py", line 59, in _find
if fnmatch.fnmatch(url, k[0]):
File "/usr/local/lib/python3.8/fnmatch.py", line 34, in fnmatch
name = os.path.normcase(name)
File "/usr/local/lib/python3.8/posixpath.py", line 54, in normcase
return os.fspath(s)
TypeError: expected str, bytes or os.PathLike object, not NoneType
A doc também está desatualizada, o import de MockHttpClient é em from pynubank.utils.mock_http
e não no root. EM breve posso submeter o PR.
Encontro erro durante autenticação.
NuRequestException Traceback (most recent call last)
in
1 # Utilize o CPF sem pontos ou traços
----> 2 nu.authenticate_with_qr_code('XXXXXXXXXXXX', 'YYYYYYYYYYY', uuid)
3
4 # Lista de dicionários contendo todas as transações de seu cartão de crédito
5 card_statements = nu.get_card_statements()
C:\ProgramData\Anaconda3\lib\site-packages\pynubank\nubank.py in authenticate_with_qr_code(self, cpf, password, uuid)
73 }
74
---> 75 response = self.client.post(self.discovery.get_app_url('lift'), json=payload)
76
77 self._save_auth_data(response)
C:\ProgramData\Anaconda3\lib\site-packages\pynubank\utils\http.py in post(self, url, json)
36
37 def post(self, url: str, json: dict) -> dict:
---> 38 return self._handle_response(post(url, json=json, headers=self._headers, **self._cert_args))
C:\ProgramData\Anaconda3\lib\site-packages\pynubank\utils\http.py in _handle_response(self, response)
28 def _handle_response(self, response: Response) -> dict:
29 if response.status_code != 200:
---> 30 raise NuRequestException(response)
31
32 return response.json()
NuRequestException: The request made failed with HTTP status code 404
Boa tarde pessoal, tudo bem?
Passando aqui só para avisar que a autenticação com QRCode voltou a ser necessária para fazer autenticação. Parece que é algo bem recente, pois na terça-feira estava funcionando sem a necessidade do QRCode.
Acredito que seria melhor deixar as duas formas de autenticação no Pynubank, para poder alternar entre elas sem precisar alterar o código.
Abraço!
Estava usando a versão anterior que a autenticação com QR Code era assim:
nubank = Nubank(NUBANK_CPF, NUBANK_PASSWORD, allow_qr_code_auth=True)
daí atualizei a versão pensando que não tinha nenhuma breaking change, dado que foi um minor version, mas a vi que a autenticação via QR Code está completamente diferente, quebrando meu serviço:
nubank = Nubank()
uuid, qr_code = nubank.get_qr_code()
qr_code.print_ascii(invert=True)
input('Após escanear o QRCode pressione enter para continuar')
nubank.authenticate_with_qr_code(NUBANK_CPF, NUBANK_PASSWORD, uuid)
Então deixo minha sugestão/pedido de usarmos Semantic Versioning e atualizar a major version quando a modificação quebrar a retrocompatibilidade.
Fui tentar usar a lib e deu o erro abaixo
A única diferença do código do README foram o meu cpf , senha de acesso e o argumento "allow_qr_code_auth=True"
O problema parece estar no print no terminal dos caracteres que compõe o QRCode de autenticação
Peguei pra mexer na lib pela primeira vez agora, então não é impossível que eu esteja deixando algo passar desapercebido...
You must authenticate with your phone to be able to access your data.
Scan the QRCode below with you Nubank application on the following menu:
Nu(Seu Nome) > Perfil > Acesso pelo site
Traceback (most recent call last):
File "C:\Program Files (x86)\Python37-32\lib\site-packages\pynubank\utils.py", line 8, in print_qr_code
get_ipython
NameError: name 'get_ipython' is not defined
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "min.py", line 6, in
allow_qr_code_auth=True
File "C:\Program Files (x86)\Python37-32\lib\site-packages\pynubank\nubank.py", line 33, in init
self.authenticate(cpf, password)
File "C:\Program Files (x86)\Python37-32\lib\site-packages\pynubank\nubank.py", line 102, in authenticate
self._qr_code_auth()
File "C:\Program Files (x86)\Python37-32\lib\site-packages\pynubank\nubank.py", line 64, in _qr_code_auth
utils.print_qr_code(str(content))
File "C:\Program Files (x86)\Python37-32\lib\site-packages\pynubank\utils.py", line 12, in print_qr_code
qr.print_ascii(invert=True)
File "C:\Program Files (x86)\Python37-32\lib\site-packages\qrcode\main.py", line 267, in print_ascii
out.write(codes[pos])
File "C:\Program Files (x86)\Python37-32\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2588' in position 0: character maps to
A URL que gera o token está com problema de certificado: https://prod-auth.nubank.com.br/api/token
Olá!
Tenho um fork do código do Astrocoders e percebi que o Nubank começou a pedir um QRCode no site online para dar acesso à API, isso fez com que nossa estratégia de acessar a API quebrasse.
Pode testar se está funcionando para vocês?
Tem alguma ideia de como fazer funcionar após essa alteração?
Olá! Gostaria de obter os detalhes da fatura. Até já implementei isso, porém tenho dúvidas sobre a melhor forma de implementação, uma forma simples seria:
def get_bill_details(self, bill):
request = requests.get(bill['_links']['self']['href'], headers=self.headers)
return json.loads(request.content.decode('utf-8'))
bill
seria um elemento do array retornado por get_card_bills()
mas talvez fica estranho passar para a função elementos de um resultado de uma response externa, talvez o resultado poderia se tornar um array de elementos definidos na aplicação, algo como:
class Bill
(...)
Gostaria de umas dicas pois não tenho muita experiência com python profissionalmente, quais as melhores práticas, etc talvez links de projetos interessantes para seguir. #ajudaluciano
exception looks like this:
Traceback (most recent call last):
File "main.py", line 11, in <module>
nu.authenticate_with_qr_code(os.environ['NU_CPF'], os.environ['NU_PWD'], uuid)
File "/usr/local/lib/python3.8/site-packages/pynubank/nubank.py", line 96, in authenticate_with_qr_code
auth_data = self._password_auth(cpf, password)
File "/usr/local/lib/python3.8/site-packages/pynubank/nubank.py", line 79, in _password_auth
data = self._handle_response(response)
File "/usr/local/lib/python3.8/site-packages/pynubank/nubank.py", line 84, in _handle_response
raise NuException(f'The request made failed with HTTP status code {response.status_code}',
pynubank.nubank.NuException
make: *** [run] Error 1
its probably a 422, but I think it should show it here...
Ola,
O readme do projeto diz:
Caso a autenticação por QRCode esteja ativada na sua conta
Isso da a entender que é possivel desativar esse tipo de autenticacao.
Meu entendimento esta correto? Se sim, tem como mencionar no readme como desativar?
Obrigado
Quando estava fazendo meu PR eu percebi uma certa demora na execução dos builds do Travis CI. Não é nada assustador nem nada.
Mas buscando melhorar um pouco mais o projeto e deixar tudo integrado ao máximo em uma ferramenta só e aumentar a agilidade, já pensou em usar o GitHub Actions para fazer a integração contínua? O que acha?
Boa noite, pessoal!
Estou montando algumas análises sobre faturas e esbarrei Em um problema discutido anteriormente sobre as faturas com o estado 'state': 'future'
, visto que o get_bill_details
retorna KeyError
para as faturas que não estão com status 'state': 'open'.
Alguém já conseguiu uma solução para este cenário? Tentei dar algumas vasculhadas nos links mas tive certa dificuldade com essa situação específica...
Estou recebendo 'too many requests' com o erro 429, mesmo pra uma primeira requisição.
Vocês estão conseguindo usar normal?
Para melhorar o acesso e diminuir o bloqueio da API do Nubank com o retorno Too many requests (429)
poderia incluir mais propriedades dos headers. Os headers abaixo são do acesso pelo navegador permanecendo somente o user-agent.
headers = {
'Content-Type': 'application/json;charset=UTF-8',
'X-Correlation-Id': 'WEB-APP.pewW9',
'User-Agent': 'pynubank Client - https://github.com/andreroggeri/pynubank',
'Accept': 'application/json, text/plain, */*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7',
'Connection': 'keep-alive',
'DNT': '1',
'Host': 'prod-s0-webapp-proxy.nubank.com.br',
'Origin': 'https://app.nubank.com.br',
'Referer': 'https://app.nubank.com.br/'
}
Bom dia a todos.
Estou querendo usar esta lib para um projeto, mas para evitar essas tretas de bloqueio eu estava pensando se não seria interessante a lib ter suporte a mock dentro dela mesmo como no exemplo abaixo:
nu = NubankMock()
uuid, qr_code = nu.get_qr_code()
nu.authenticate_with_qr_code('123456789', 'senha', uuid)
card_statements = nu.get_card_statements()
Acredito eu que dessa forma fica mais fácil para as pessoas implementarem seus apps ou mvp e após tudo estar funcionando, aí o mock seria substituido pela requisição real, o que acham?
Olá, hj fui atualizar minhas contas e o tive o erro 403 retornado após o pynubank pedir o QR Code.
Fui acessar pelo site e notei que o QR Code não é mais pedido.
Antes havia um método na biblioteca para acesso sem QR Code, ainda não testei se esse método voltou a funciona.
^^
Adicionar documento para ajudar os contribuidores e organizar os branches para ficar mais organizado.
develop -> Branch para desenvolvimento de novas features
master -> Branch de "produção" onde contém o código que está publicado no PyPi (Podemos mudar a pipeline para sempre publicar no PyPi, só teria que tomar cuidado de fazer o bump antes de cada merge para a master)
Algumas pessoas acabam tomando erro pq os exemplos do readme inicial não são completos.
Podemos melhorar a documentação para ter uma seção dedicada para autenticação (levando para os exemplos) e remover a autenticação dos outros exemplos pq está incompleta.
Estou sendo bloqueado após uma requisição.
Alguém está tendo o mesmo comportamento?
Recebo "Authentication failed. Too Many Requests (429)".
Ao me autenticar com CPF / Senha obtenho o access_token normalmente, mas o retorno do refresh_token é "string token". Dessa forma, só consigo me autenticar com o QRCode.
Além disso tive que comentar a linha: "self.refresh_token = auth_data['refresh_token']", pois estava dando 'Key Error' no "refresh_token".
Realmente as requisições não estão mais retornando o 'refresh_token'? Todas as vezes que eu precisar fazer uma requisição precisarei utilizar o QRCode?
AttributeError Traceback (most recent call last)
in
1 # Utilize o CPF sem pontos ou traços
2 nu = Nubank()
----> 3 uuid, qr_code = nu.get_qr_code()
4 #nu.authenticate_with_qr_code('REDACTED', 'REDACTED', uuid)
5 qr_code.print_ascii(invert=True)
in get_qr_code(self)
86
87 def get_qr_code(self) -> Tuple[str, QRCode]:
---> 88 content = str(uuid.uuid4())
89 qr = QRCode()
90 qr.add_data(content)
AttributeError: 'str' object has no attribute 'uuid4'
Ao rodar o código de exemplo abaixo recebo erro 403 (forbidden).
from pynubank import Nubank
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')
nu.authenticate_with_qr_code('XXXXXXXXXX', 'YYYYYYYYYY', uuid)
Executo via Jupyter, escaneio o QR Code e teclo ENTER. Em seguida recebo o erro.
Não está claro pra mim se estou fazendo algo errado.
Ao acessar uma conta que o NuBank está direcionando para uma página para fazer uma autenticação utilizando QRCode. Neste caso, a API do Nubank retorna dados diferentes e não disponibiliza o feed_url dando um erro ao coletar esta informação do dicionário.
Na função authenticate, ao fazer a solicitação o retorno basicamente é este:
{'access_token': 'ACCESS_TOKEN', 'token_type': 'bearer', '_links': {'account_emergency': {'href': 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/XXX'}, 'bill_emergency': {'href': 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/XXX'}, 'revoke_token': {'href': 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/XXX'}, 'revoke_all': {'href': 'https://prod-s0-webapp-proxy.nubank.com.br/api/proxy/XXX'}}, 'refresh_token': 'token', 'refresh_before': '2018-12-24T09:50:02Z'}
Dependabot couldn't authenticate with https://pypi.python.org/simple/.
You can provide authentication details in your Dependabot dashboard by clicking into the account menu (in the top right) and selecting 'Config variables'.
Resolvi abrir essa issue com uma pergunta pois sei que nem todo desenvolvedor Python simpatiza com a ferramenta. Eu pessoalmente não consigo me imaginar iniciando um projeto novo hoje sem utilizar o Pipenv.
Os principais pontos que somam em sua utilização na minha opinião são:
Esses são alguns dos pontos. Na página inicial do projeto tem mais detalhes de como funciona, quais as razões de se substituir os famosos requirements.txt
, etc.
Se vocês acharem interessante eu posso enviar um PR substituindo os arquivos requirements pelo Pipfile. 🙂
Ao receber as transações da minha conta corrente, não consegui obter os Saques efetuados em caixas 24 horas.
Creio que seja só adicionar esse parâmetro na consulta do GraphQL.
Falei com o suporte Nubank, porém, há muito tempo sempre a mesma resposta de "sem previsão". Vi que a atual API é para Pessoa Física. Há alguma possibilidade de API para conta CNPJ? Se houver algum endpoint ou liberação, gostaria de ajudar a desenvolver, por enquanto estou no aguardo deles.
Olá, está retornando o erro abaixo, ao chamar o método nu.get_account_statements()
/opt/notebooks/nubank.py in _handle_response(self, response)
85 if response.status_code != 200:
86 raise NuException(response.status_code,
---> 87 response.json(), response.url)
88
89 return response.json()
NuException: The request made failed with HTTP status code 400
Por @janjitsu :
Você tocou num ponto interessante @andreroggeri ...
Na minha aplicação eu criei um cash das responses por que acabei ficando bloqueando também...
E se fizessemos esse cache no pynubank?
Claro que precisariamos ver uma forma mais inteligente de invalidá-lo. Mas pra mim faz sentido. Muita coisa não vai mudar e eu ainda não entendi muito bem qual a regra que bloqueia a máquina... Se soubessemos poderíamos antecipar o bloqueio na aplicação de alguma forma e evitá-lo.
Existe algum dos endpoints que permite geração de cobrança? Igual vemos pelo App. Retornando qrcode + link
Procurei no fórum do nubank e aqui nos issues mas não achei nada
Não gera certificado ao rodar
nu.authenticate_with_cert
Olá!
Venho através deste, solicitar/opinar sobre um sistema interessante.
Seria basicamente um QRCode para ser escaneado e efetivado uma transferência de Nubank para Nubank.
Seria algo como:
Gerar um QRCode com os dados da pessoa que irá receber o valor da transferência.
Para fazer a transferência, seria direto pelo App > Transferir > QRCode, e definir o valor a ser transferido.
Grato!
Caso me autentique utilizando o QR Code, qual o limite até o Nubank desconectar a aplicação?
Queria deixar meus script atualizando minhas contas diariamente sem necessitar me autenticar todas as vezes.
Alguém já faz isso?
Olá, gostaria de um método para acessar as faturas do cartão!
Estou usando a API e funciona perfeitamente, pretendo alterá-la para ter um controle explícito da frequência de requests, repasso as alterações se eu achar que deu certo.
De volta ao não-problema o que é esse "client_secret"? Parece um hash, mas é fixo. Imaginei que isso fosse causar erro ao tentar logar, mas fiz o login normalmente, tudo funciona.
A mesma pergunta é válida para "client_id" = "other.conta"
Rolou uma thread #109 sobre reaproveitar o token.
Acredito que seja possível inclusive fazer um "refresh" dele para que ele dure para sempre.
Ao seguir o próprio código do README, pra autenticar e pegar as contas anteriores. O código utilizado foi o seguinte:
import os
from pynubank import Nubank
user = os.getenv('NU_USER')
passwd = os.getenv('NU_PASSWD')
nu = Nubank()
nu.authenticate(user, passwd)
bills = nu.get_bills()
print(len(bills))
O que resultou no seguinte erro:
Traceback (most recent call last):
File "accounting.py", line 11, in <module>
nu.authenticate(user, passwd)
File "/Users/lucas/miniconda3/envs/accounting/lib/python3.6/site-packages/pynubank/nubank.py", line 79, in authenticate
self.feed_url = data['_links']['events']['href']
KeyError: 'events'
Usei o pacote instalando via pip.
A biblioteca python-coveralls está fadada a morrer, não é atualizada desde 2017 além de possuir um problema que gera conflito com outras bibliotecas como pytest-cov forçando pin-version de todas as bibliotecas que utilizem coverage != 4.0.3.
O recomendável é substituí-la pela biblioteca coveralls-python. Não é preciso nem alterar a chamada do cliente no CI pois ambas compartilham o mesmo nome para o commando: coveralls
.
Ao rodar um dos exemplos, modificado, não estou conseguindo o resultado esperado com a
autenticação por QR Code.
# nu.py
from pynubank import Nubank
nu = Nubank()
uuid, qr_code = nu.get_qr_code()
nu.authenticate_with_qr_code('cpf', 'senha', uuid)
print(nu.get_account_balance())
$ python nu.py
Traceback (most recent call last):
File "nu.py", line 6, in <module>
nu.authenticate_with_qr_code('cpf', 'senha', uuid)
File "/home/shigueo/.local/lib/python3.8/site-packages/pynubank/nubank.py", line 82, in authenticate_with_qr_code
response = self.client.post(self.discovery.get_app_url('lift'), json=payload)
File "/home/shigueo/.local/lib/python3.8/site-packages/pynubank/utils/http.py", line 40, in post
return self._handle_response(post(url, json=json, headers=self._headers, **self._cert_args))
File "/home/shigueo/.local/lib/python3.8/site-packages/pynubank/utils/http.py", line 32, in _handle_response
raise NuRequestException(response)
pynubank.exception.NuRequestException: The request made failed with HTTP status code 404
Saldo na NuConta
Pelo visto houve alguma mudança no serviço lift
.
Tentando fazer o request manualmente (com um token válido):
{
"qr_code_id": "algum uuidv4",
"type": "login-webapp"
}
retorna:
# 404 Not Found
{
"error": "Not Found"
}
Não sei se cometi algum erro ou talvez seja algo que não possamos fazer nada sobre, mas achei importante comentar por aqui.
Valeu!
Acabei de conhecer a lib.
Tentei rodar o programa pelo console, mas encontro o seguinte erro:
>>> from nubank import *
>>> nu = Nubank()
>>> uuid, qr_code = nu.get_qr_code()
>>> qr_code.print_ascii(invert=True)
█████████████████████████████████████
█████████████████████████████████████
████ ▄▄▄▄▄ ██▄▀ █ ▀ ▀▀▄▄▄█ ▄▄▄▄▄ ████
████ █ █ █ ▀▀ ▄▄▀ ▀▀ ▄ █ █ █ ████
████ █▄▄▄█ █ ▀▄ ███▀█▄▄▄▀█ █▄▄▄█ ████
████▄▄▄▄▄▄▄█ █ █ █ █ █▄█ █▄▄▄▄▄▄▄████
████ █ ▄▄██████▀▀▄▄▄▀▀▄█ ▄ ▄█▀████
████▄▄ █▄▀▄▄█▄ ██ ▄▄█▄ ██▀█ █▄ █████
████▀▀▄▀ ▀▄▀▄█▀█▀█▄▄▀▄▄ ▄ ▀▄▀▄▄▀▀████
████▄█▀ ▀▄█▄█▀█ █▀ ██ █ █▄▄▀▀▄▀▀████
████▀▀▄▄ ▄█ █▄█▄▀▀█▄▄▀ █▄▀▀▀█▄▀▀████
████ ██ ▀█▄▄▀ ▀▀▄ ▄▄▄█▀▀▀▀█ █▄██████
████▄██▄▄█▄▄ ▄█ █▄▄▄▄▀█ ▄▄▄ ▄▄▀████
████ ▄▄▄▄▄ █▀█▄█▄█▀ █▄ █▄█ ▄█ █████
████ █ █ █ █▀▄█▀█▄ ▄█ ▄▄ ▄▄▄▀▀████
████ █▄▄▄█ █▄▄▀ ▀ █▄ ▀ ▄▀ ▄▄ █████
████▄▄▄▄▄▄▄█▄█▄███▄▄▄▄▄███▄▄██▄██████
█████████████████████████████████████
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
>>> nu.authenticate_with_qr_code('CPF', 'SENHA', uuid)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/henriquecarvalho/github-repos/pynubank/pynubank/nubank.py", line 113, in authenticate_with_qr_code
self.refresh_token = auth_data['refresh_token']
KeyError: 'refresh_token'
É algum problema com a informação enviada pelo Nubank?
(Enquanto estamos em uma issue, acho que a versão do pip está desatualizada)
Alguém conseguiu acessar as compras de débito na conta corrente? Para mim na lista das transactions não aparece estes débitos.
Vários aplicativos importam contas via OFX. Ter uma maneira de coletar OFX de sua Nuconta ou cartão facilitaria muito o controle de gastos via aplicativos.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.