_____ _
|_ _|_ _ _ __ __ _ ___ _ __(_)_ __ ___
| |/ _` | '_ \ / _` |/ _ \ '__| | '_ \ / _ \
| | (_| | | | | (_| | __/ | | | | | | __/
|_|\__,_|_| |_|\__, |\___|_| |_|_| |_|\___|
|___/
API and scraper for the Tangerine Bank (Canada).
Install
pip install tangerine
Usage
Authentication
from tangerine import InteractiveSecretProvider, TangerineClient
secret_provider = InteractiveSecretProvider()
client = TangerineClient(secret_provider)
with client.login():
...
Using InteractiveSecretProvider
will prompt user for username/account #, security challenge questions and PIN number.
The call to client.login()
will initiate the login process. After the login is successful, subsequent calls to the API will be authenticated.
If client.login()
is used as a context manager (i.e., with client.login():
), logout will be automatically initiated after the code block exits
or any exception is raised.
List accounts
With an active session, use client.list_accounts()
:
with client.login():
accounts = client.list_accounts()
List transactions
with client.login():
accounts = client.list_accounts()
start_date = datetime.date(2017, 10, 1)
end_date = datetime.date(2017, 11, 1)
client.list_transactions([acct['number'] for acct in accounts], start_date, end_date)
Download statements
with client.login():
accounts = client.list_accounts()
start_date = datetime.date(2017, 10, 1)
end_date = datetime.date(2017, 11, 1)
client.download_ofx(account[0], start_date, end_date)
Contribution
Requirements:
- Python 3
- pipenv
- basic knowledge of Python and git
To contribute to the development, fork this repo to your github account, and clone it.
$ git clone https://YOUR-CLONE-URL tangerine
$ cd tangerine
$ pipenv install # this creates the virtualenv and installs the dependencies
$ pipenv shell # this activates the virtualenv
$ git checkout -b branch-for-feature-or-bug-fix
HACK...HACK...HACK
$ git commit ...
$ git push
and send a PR :)
Licence
MIT
Changelog
See CHANGELOG.md
Authors
tangerine was written by Kevin J. Qiu kevin@idempotent.ca with contributors.