]> git.rmz.io Git - dotfiles.git/blobdiff - bin/monzo.py
nvim: show pretty_path in inactive sections too
[dotfiles.git] / bin / monzo.py
index 9f404ef0b50c33eccd7a9cf1a2e58a02e0f4b8e7..1335007a92791bc1803a7c64f0d47706029aedb1 100755 (executable)
@@ -7,16 +7,36 @@ import sys
 outformat = "qif"
 # outformat = "csv"
 
+
+class UnknownAccountError(Exception):
+    pass
+
+
+def get_account(data):
+    account_id = data["transactions"][0]["account_id"]
+    if account_id == "":
+        return "Accounts:Monzo"
+    elif account_id == "":
+        return "Accounts:Joint Account"
+
+    raise UnknownAccountError(account_id)
+
+
 if __name__ == "__main__":
-    if outformat == "qif":
-        print("!Account")
-        print("NCurrent Accounts:Monzo")
-        print("^")
-        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)
+
+        if outformat == "qif":
+            print("!Account")
+            print("NCurrent {}".format(get_account(data)))
+            print("^")
+            print("!Type:Bank")
+
+        cnt = 1
         for t in data.get("transactions"):
+            if t.get("decline_reason", ""):
+                continue
+
             try:
                 date = datetime.strptime(t["created"], "%Y-%m-%dT%H:%M:%S.%fZ")
             except ValueError:
@@ -29,8 +49,15 @@ if __name__ == "__main__":
             else:
                 payee = t["merchant"]["name"]
             memo = t["description"]
+            try:
+                memo = "Tab: {}".format(t["tab"]["name"])
+            except KeyError:
+                pass
+
             memo += "\n{local_amount} {local_currency}".format(**t)
             notes = t["notes"]
+            if notes:
+                memo += "\nNotes: {notes}".format(**t)
             if outformat == "csv":
                 print('{date:%Y-%m-%d},{amount},"{payee}","{description}","{notes}"'.format(date=date,
                                                                                             payee=payee,