]> git.rmz.io Git - dotfiles.git/blobdiff - bin/monzo.py
qutebrowser: add stm new issue quickmark
[dotfiles.git] / bin / monzo.py
index 3c79c714b820b38c69175b4d8d747120e6f30c7d..6980487aeef81e218ceb584da7f64cafc98f8326 100755 (executable)
@@ -7,13 +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("!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:
@@ -26,6 +49,11 @@ 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 outformat == "csv":