Code to convert hsbc qfx files to csv in the right format for money brilliant
This commit is contained in:
50
converter.py
Normal file
50
converter.py
Normal file
@@ -0,0 +1,50 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from csv import DictWriter
|
||||
from glob import glob
|
||||
from ofxparse import OfxParser
|
||||
|
||||
DATE_FORMAT = "%d/%m/%Y"
|
||||
|
||||
def write_csv(statement, out_file):
|
||||
print("Writing: " + out_file)
|
||||
fields = ['date', 'memo', 'category', 'amount', 'name']
|
||||
with open(out_file, 'w') as f:
|
||||
f.write("Date,Original Description,Category,Amount,Account Name")
|
||||
f.write("\r\n")
|
||||
writer = DictWriter(f, fieldnames=fields)
|
||||
for line in statement:
|
||||
writer.writerow(line)
|
||||
|
||||
|
||||
def get_statement_from_qfx(qfx):
|
||||
balance = qfx.account.statement.balance
|
||||
|
||||
statement = []
|
||||
credit_transactions = ['credit', 'dep', 'int']
|
||||
debit_transactions = ['debit', 'atm', 'pos', 'xfer', 'check']
|
||||
for transaction in qfx.account.statement.transactions:
|
||||
amount = ""
|
||||
balance = balance + transaction.amount
|
||||
|
||||
if transaction.payee.startswith("PENDING:"):
|
||||
continue
|
||||
|
||||
line = {
|
||||
'date': transaction.date.strftime(DATE_FORMAT),
|
||||
'memo' : transaction.memo,
|
||||
'category': 'Uncategorised',
|
||||
'amount': transaction.amount,
|
||||
'name': 'HSBC Everyday Global'
|
||||
}
|
||||
statement.append(line)
|
||||
return statement
|
||||
|
||||
|
||||
files = glob("*.qfx")
|
||||
for qfx_file in files:
|
||||
qfx = OfxParser.parse(open(qfx_file, encoding="latin-1"), fail_fast=False)
|
||||
statement = get_statement_from_qfx(qfx)
|
||||
out_file = "converted_" + qfx_file.replace(".qfx",".csv")
|
||||
write_csv(statement, out_file)
|
||||
Reference in New Issue
Block a user