Source code for personalcapital.query
import json
import structlog
from datetime import datetime, timedelta
from personalcapital import APIConnector
from personalcapital.database import Database
log = structlog.getLogger()
[docs]def get_transactions(start_date, end_date):
with APIConnector.connect() as session:
transactions_response = session.fetch('/transaction/getUserTransactions', {
'sort_cols': 'transactionTime',
'sort_rev': 'true',
'page': '0',
'rows_per_page': '100',
'startDate': start_date,
'endDate': end_date,
'component': 'DATAGRID'
}).json()
transaction_data = transactions_response['spData']
log.msg('Retrieved {} transactions between {} and {}.'.format(
len(transaction_data['transactions']), transaction_data['startDate'], transaction_data['endDate']))
return transaction_data['transactions']
[docs]def get_accounts(session):
accounts_response = session.fetch('/newaccount/getAccounts')
with open('accounts_response.json', 'w') as fp:
json.dump(accounts_response.json(), fp, indent=4)
accounts = accounts_response.json()['spData']
log.msg('Networth: {0}'.format(accounts['networth']))
return accounts
[docs]def fetch_and_dump(session, endpoint, fn):
response = session.fetch(endpoint)
with open(fn, 'w') as fp:
json.dump(response.json(), fp, indent=4)
[docs]def update_transaction_categories():
with APIConnector.connect() as session, Database() as db:
categories = session.fetch('/transactioncategory/getCategories').json()['spData']
db.banking.transaction_categories.insert_many(categories)
[docs]def get_transaction_categories():
with Database() as db:
categories = db.banking.transaction_categories.find({})
return {
category["transactionCategoryId"]: category
for category in categories
}