+#!/usr/bin/env python3
+
+from datetime import datetime
+import json
+import sys
+
+outformat = "qif"
+# outformat = "csv"
+
+if __name__ == "__main__":
+ if outformat == "qif":
+ print("!Type:Bank")
+ cnt = 1
+ with open(sys.argv[1], 'r') if len(sys.argv) > 1 else sys.stdin as fp:
+ data = json.load(fp)
+ for t in data.get("transactions"):
+ try:
+ date = datetime.strptime(t["created"], "%Y-%m-%dT%H:%M:%S.%fZ")
+ except ValueError:
+ date = datetime.strptime(t["created"], "%Y-%m-%dT%H:%M:%SZ")
+ amount = t["amount"] / 100
+ if "name" in t.get("counterparty", {}):
+ payee = t["counterparty"]["name"]
+ elif t["merchant"] is None:
+ payee = t["description"]
+ else:
+ payee = t["merchant"]["name"]
+ memo = t["description"]
+ memo += "\n{local_amount} {local_currency}".format(**t)
+ notes = t["notes"]
+ if outformat == "csv":
+ print('{date:%Y-%m-%d},{amount},"{payee}","{description}","{notes}"'.format(date=date,
+ payee=payee,
+ amount=amount,
+ **t))
+ elif outformat == "qif":
+ print("D{:%Y-%m-%d}".format(date))
+ print("T{}".format(amount))
+ print("P{}".format(payee))
+ print("M{}".format(memo))
+ print("#{}".format(t['id']))
+ print("^")
+ cnt += 1