]> git.rmz.io Git - dotfiles.git/blob - bin/monzo.py
bin: print Account in qif converters
[dotfiles.git] / bin / monzo.py
1 #!/usr/bin/env python3
2
3 from datetime import datetime
4 import json
5 import sys
6
7 outformat = "qif"
8 # outformat = "csv"
9
10 if __name__ == "__main__":
11 if outformat == "qif":
12 print("!Account")
13 print("NCurrent Accounts:Monzo")
14 print("^")
15 print("!Type:Bank")
16 cnt = 1
17 with open(sys.argv[1], 'r') if len(sys.argv) > 1 else sys.stdin as fp:
18 data = json.load(fp)
19 for t in data.get("transactions"):
20 try:
21 date = datetime.strptime(t["created"], "%Y-%m-%dT%H:%M:%S.%fZ")
22 except ValueError:
23 date = datetime.strptime(t["created"], "%Y-%m-%dT%H:%M:%SZ")
24 amount = t["amount"] / 100
25 if "name" in t.get("counterparty", {}):
26 payee = t["counterparty"]["name"]
27 elif t["merchant"] is None:
28 payee = t["description"]
29 else:
30 payee = t["merchant"]["name"]
31 memo = t["description"]
32 memo += "\n{local_amount} {local_currency}".format(**t)
33 notes = t["notes"]
34 if outformat == "csv":
35 print('{date:%Y-%m-%d},{amount},"{payee}","{description}","{notes}"'.format(date=date,
36 payee=payee,
37 amount=amount,
38 **t))
39 elif outformat == "qif":
40 print("D{:%Y-%m-%d}".format(date))
41 print("T{}".format(amount))
42 print("P{}".format(payee))
43 print("M{}".format(memo))
44 print("#{}".format(t['id']))
45 print("^")
46 cnt += 1