Esempio n. 1
0
def get_todays_transactions(monzo: MonzoAPI,
                            account: MonzoAccount) -> List[MonzoTransaction]:
    log.debug(f"Getting transactions from {account}...")
    transactions = monzo.transactions(account.id, limit=50)
    return list(
        filter(lambda x: x.created.date() == (datetime.today().date()),
               transactions))
Esempio n. 2
0
def init_monzo(merchants=True):
    client = MonzoAPI()
    # Get the ID of the first account linked to the access token
    account_id = client.accounts()[1].id
    print("[Monzo] Retrieving transactions...")
    transactions = client.transactions(account_id)  # Get client.transaction(
    print("[Monzo] Retrieving merchants...")
    for item in transactions:
        if merchants:
            item.merchant = client.transaction(item.id,
                                               expand_merchant=True).merchant
        identifier = item.merchant.name if hasattr(item.merchant,
                                                   'name') else item.merchant
        print("[Monzo] Retrieved merchant {}.".format(identifier))
    print("Done.")
    return transactions
# exit(0)

# Instantiate Monzo API client normally, using tokens from ~/.pymonzo-token generated previously
monzo = MonzoAPI()


# Create method to handle non-serializable data types in transaction object
def json_default(value):
    if isinstance(value, datetime.date):
        return value.isoformat()
    else:
        return value.__dict__


# Loop through all transactions and post them all to YNAB via fintech-to-ynab app deployed on Heroku
for monzoTransactionSimple in monzo.transactions():
    # Fetch full transaction details including merchant, as otherwise merchant name etc. is missing
    monzoTransactionFull = monzo.transaction(monzoTransactionSimple.id, True)

    if monzoTransactionFull.merchant is None:
        merchantName = ""
    else:
        merchantName = monzoTransactionFull.merchant.name

    ynabTransaction = {
        "type": "transaction.created",
        "data": monzoTransactionFull
    }

    ynabTransactionCreationString = json.dumps(ynabTransaction,
                                               indent=4,