convert hellobank credit card csvs
authorAndreas Bilke <andreas@bilke.org>
Fri, 11 Jan 2019 17:04:55 +0000 (18:04 +0100)
committerAndreas Bilke <andreas@bilke.org>
Fri, 11 Jan 2019 17:04:55 +0000 (18:04 +0100)
banking/hellobank-creditcard2homebank.py [new file with mode: 0755]

diff --git a/banking/hellobank-creditcard2homebank.py b/banking/hellobank-creditcard2homebank.py
new file mode 100755 (executable)
index 0000000..8dbe551
--- /dev/null
@@ -0,0 +1,50 @@
+#!/usr/bin/env python3
+
+# Copyright 2018 Andreas Bilke <andreas@bilke.org>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy of
+# this software and associated documentation files (the "Software"), to deal in
+# the Software without restriction, including without limitation the rights to
+# use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+# of the Software, and to permit persons to whom the Software is furnished to do
+# so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in all
+# copies or substantial portions of the Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+import argparse
+from datetime import datetime
+import sys
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(description="Convert Hello bank! transaction to homebank csv format.")
+    parser.add_argument("csvfile", metavar="CSV", type=str, help="Hello bank! transaction file")
+
+    args = parser.parse_args()
+
+    csvfile = open(args.csvfile, encoding="latin-1")
+    csvfile.readline() # dismiss header
+
+    for line in csvfile:
+        fields = line.strip().split(";")
+        try:
+            date = datetime.strptime(fields[0], "%d.%m.%Y")
+        except ValueError as e:
+            print(("Cannot convert line\n{}\n".format(line)), file=sys.stderr)
+            continue
+
+        amount = fields[5].replace(".", "")
+        text = " ".join(fields[1].replace("\"", "").split())
+
+        # date;payment;info;payee;memo;amount;category;tags
+        print(("{};{};{};{};{};{};{};{}".format(
+            date.strftime("%d-%m-%y"), "0", "", "", text, amount, "", ""
+        )))