hsadok / guiabolso2csv Goto Github PK
View Code? Open in Web Editor NEWBaixe os dados de transações do GuiaBolso em formato csv ou xlsx (Excel).
License: GNU General Public License v3.0
Baixe os dados de transações do GuiaBolso em formato csv ou xlsx (Excel).
License: GNU General Public License v3.0
All in all the program works well and I'm very pleased, however, the date field does not download correctly. For instance, the day 30/06/2017 is downloaded as "1498791600000".
I've noticed that each date changes by an increment of 86400000, which is the number of seconds in a day multiplied by 1000. For my data, I managed to identify the date of one transaction and then manage to convert the date for all the other records. I hope this helps and thanks again for this routine.
Olá Hugo, parabéns pelo projeto. Voltei a usar o guiabolso e o seu aplicativo me ajuda muito.
Chegou a considerar alguma forma de criar lançamentos em conta manuais via script?
Exemplo: importar um csv/ofx de uma conta não suportada.
Muito obrigado
Após uma atualização do guia bolso, o script parou de funcionar.
Retorno:
Traceback (most recent call last):
File "/usr/local/bin/guiabolso2csv", line 8, in
sys.exit(main())
File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 829, in call
return self.main(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/local/lib/python3.7/dist-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/guiabolso2csv/main.py", line 40, in main
gb = GuiaBolso(email, password)
File "/usr/local/lib/python3.7/dist-packages/guiabolso2csv/guia_bolso.py", line 71, in init
for account in self.statements:
TypeError: 'NoneType' object is not iterable
Hugo,
This isn't an issue per say, but it would be great if the program checked if the month had any records before downloading. Perhaps it could even download the CSV, but then immediately check the file for size and, depending on the value, delete it.
I find myself constantly reclassifying things in GuiaBolso and something like this would allow me to create a bat with the 2013 initial date and 2018 end date, for instance, and it would always download the appropriate months. A desired equivalent would be to "download all" existing data, in separate month files (which I believe would require smaller changes to coding), or all at once in a single CSV (at the time, I post process and merge all CSVs into one single database)
Thanks again, this program is great!
Diogo
Não sei como está sua intenção de continuar com o projeto mas acredito que com selenium seria possível resolver essa "validação".
Abs.
Hugo,
I don't know if you're still maintaing this, but I had an issue running GuiaBolso... it didn't run, giving multiple errors (printfile, then couldn't import guiabolso archive, etc...). If you're still keeping this going, any help is much appreciated!
Kind rgds and happy new year,
Diogo
Hugo,
O uso básico está funcionando (entrando no guiabolso e fazendo o download em csv de um mês específico), mas os comandos mais sofisticados de intervalo de meses volta com o seguinte erro abaixo:
Traceback (most recent call last):
File "c:\program files\python\python37\lib\site-packages\pkg_resources_init_.py", line 583, in build_master
ws.require(requires)
File "c:\program files\python\python37\lib\site-packages\pkg_resources_init.py", line 900, in require
needed = self.resolve(parse_requirements(requirements))
File "c:\program files\python\python37\lib\site-packages\pkg_resources_init_.py", line 791, in resolve
raise VersionConflict(dist, req).with_context(dependent_req)
pkg_resources.VersionConflict: (guiabolso2csv 0.6 (c:\users\diogo.barreto\appdata\roaming\python\python37\site-packages), Requirement.parse('guiabolso2csv==0.5'))During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Program Files\Python\Python37\Scripts\guiabolso2csv-script.py", line 6, in
from pkg_resources import load_entry_point
File "c:\program files\python\python37\lib\site-packages\pkg_resources_init_.py", line 3191, in
@call_aside
File "c:\program files\python\python37\lib\site-packages\pkg_resources_init.py", line 3175, in call_aside
f(*args, **kwargs)
File "c:\program files\python\python37\lib\site-packages\pkg_resources_init.py", line 3204, in _initialize_master_working_set
working_set = WorkingSet.build_master()
File "c:\program files\python\python37\lib\site-packages\pkg_resources_init.py", line 585, in _build_master
return cls.build_from_requirements(requires)
File "c:\program files\python\python37\lib\site-packages\pkg_resources_init.py", line 598, in build_from_requirements
dists = ws.resolve(reqs, Environment())
File "c:\program files\python\python37\lib\site-packages\pkg_resources_init.py", line 786, in resolve
raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'guiabolso2csv==0.5' distribution was not found and is required by the application
Se conseguir dar uma olhada, agradeço imensamente. Aproveito também para desejar um Feliz 2021!
Olá!
Antes de mais nada, obrigado por fazer um projeto para isso!
Sobre o meu problema, eu simplesmente dei pip install, fiz o que o README fala e deu o erro a seguir
Abs!
Traceback (most recent call last):
File "C:\Users\resource\AppData\Local\Programs\Python\Python38-32\Scripts\guiabolso2csv-script.py", line 11, in
load_entry_point('guiabolso2csv==0.4', 'console_scripts', 'guiabolso2csv')()
File "C:\Users\resource\AppData\Local\Programs\Python\Python38-32\lib\site-packages\click\core.py", line 764, in call
return self.main(*args, **kwargs)
File "C:\Users\resource\AppData\Local\Programs\Python\Python38-32\lib\site-packages\click\core.py", line 717, in main
rv = self.invoke(ctx)
File "C:\Users\resource\AppData\Local\Programs\Python\Python38-32\lib\site-packages\click\core.py", line 956, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\resource\AppData\Local\Programs\Python\Python38-32\lib\site-packages\click\core.py", line 555, in invoke
return callback(*args, **kwargs)
File "C:\Users\resource\AppData\Local\Programs\Python\Python38-32\lib\site-packages\guiabolso2csv_main_.py", line 40, in main
gb = GuiaBolso(email, password)
File "C:\Users\resource\AppData\Local\Programs\Python\Python38-32\lib\site-packages\guiabolso2csv\guia_bolso.py", line 54, in init
self.login()
File "C:\Users\resource\AppData\Local\Programs\Python\Python38-32\lib\site-packages\guiabolso2csv\guia_bolso.py", line 100, in login
print(response['error']['errorMessage'])
KeyError: 'errorMessage'
Amigo sensacional sua raspagem e veio a meu ajudar muito, mas as datas estão num formato que não é timestamp, como consigo pegar as datas certas?
Hugo,
Utilizando a função básica, reparei que o campo de data está vindo de forma incorreta. Ele tem uma coerência entre as datas de um mesmo mês -- se dividir a diferença entre datas por 24x60x60x1000 (milisegundos) --, mas entre meses não achei um padrão. Deve ser algum outro campo/código interno do site. Se puder dar uma olhada nisso também, seria ótimo!
Muito obrigado por manter o projeto vivo, ele tem sido muito importante para arquivar minhas contas a cada 6m. Desejo também um Feliz 2021!
Faço o procedimento coloco login e senha, porém aparece essa mensagem:
Traceback (most recent call last):
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\Scripts\guiabolso2csv.exe_main.py", line 7, in
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1128, in call
return self.main(*args, **kwargs)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1053, in main
rv = self.invoke(ctx)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 754, in invoke
return callback(*args, **kwargs)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\guiabolso2csv_main.py", line 40, in main
gb = GuiaBolso(email, password)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\guiabolso2csv\guia_bolso.py", line 55, in init
self.token = self.login()
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\guiabolso2csv\guia_bolso.py", line 107, in login
response = self.session.post(url, headers=headers, data=payload).json()
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\models.py", line 910, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\json_init.py", line 346, in loads
return _default_decoder.decode(s)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
C:\Users\asrpj>guiabolso2csv --email [email protected] --year 2021 --month 11
Password:
Password:
Traceback (most recent call last):
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\Scripts\guiabolso2csv.exe_main.py", line 7, in
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1128, in call
return self.main(*args, **kwargs)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1053, in main
rv = self.invoke(ctx)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 754, in invoke
return callback(*args, **kwargs)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\guiabolso2csv_main.py", line 40, in main
gb = GuiaBolso(email, password)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\guiabolso2csv\guia_bolso.py", line 55, in init
self.token = self.login()
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\guiabolso2csv\guia_bolso.py", line 107, in login
response = self.session.post(url, headers=headers, data=payload).json()
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\models.py", line 910, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\json_init.py", line 346, in loads
return _default_decoder.decode(s)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
C:\Users\asrpj>guiabolso2csv --email [email protected] --year 2021 --month 11
Password:
Traceback (most recent call last):
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 196, in _run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\runpy.py", line 86, in run_code
exec(code, run_globals)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\Scripts\guiabolso2csv.exe_main.py", line 7, in
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1128, in call
return self.main(*args, **kwargs)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1053, in main
rv = self.invoke(ctx)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 1395, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\click\core.py", line 754, in invoke
return callback(*args, **kwargs)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\guiabolso2csv_main.py", line 40, in main
gb = GuiaBolso(email, password)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\guiabolso2csv\guia_bolso.py", line 55, in init
self.token = self.login()
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\guiabolso2csv\guia_bolso.py", line 107, in login
response = self.session.post(url, headers=headers, data=payload).json()
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\models.py", line 910, in json
return complexjson.loads(self.text, **kwargs)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\json_init.py", line 346, in loads
return _default_decoder.decode(s)
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Users\asrpj\AppData\Local\Programs\Python\Python310\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
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.