am 07.02.2024 11:40
Hallo Gerrit,
ich habe leider die Mail von Comdirect verpennt und vor dem Abschalten des PFM kein Download gemacht.
Somit bin ich auf das Skript angewiesen, dass mir die Finanzreporte in ein schönes CSV Format überträgt, um diese dann wider in ein neues Tool einzulesen. Bedauerlicherweise bin ich nicht so bewandert, was das coden angeht, sonst würde ich viel selbst versuchen.
Ich mochte im PFM die Budgetübersicht sehr, da sie mir einen Monatsvergleich ausgegeben hat.
Sehr vergleichbar mit deinem Punkt "table sum per month & category".
Ich werde mir versuchen auch dein Toll ein bisschen eigen zu machen, muss aber mal sehen, ob und wie ich das mit den schon bei mir heruntergeladenen CSV Dateien nutzen kann.
Ansonsten verwende ich derzeit moneymoney.
Da fehlt mir allerdings eine schöne Gegenüberstellung der Monate und Kategorien.
Lieben Gruß
Nico
am 07.02.2024 11:45
Hallo tho.riemer,
vielen lieben Dank 🐵
Sogar mit extra Spalte. Ich bin wirklich begeistert.
Lieben Gruß
Bardoshino
am 07.02.2024 14:45
Kein Problem 🙂
Mein Programm ist leider nicht so nutzerfreundlich.
Der erste Fehler kommt von einem falschen Datums-Format. Da kann Excel schon was verändern wenn man eine CSV-Datei öffnet und wieder abspeichert. Ich habe versucht es möglichst international zu machen. Mit
format='%Y-%m-%d'
müsste es dann funktionieren.
Man müsste noch etwas Arbeit reinstecken, um den CSV-Import zum Laufen zu kriegen. Da wollte ich ungern ein Beispiel zur Verfügung stellen.
Der API-Import sollte aber direkt funktionieren, wenn man den Anweisungen im Readme folgt. Dazu den csv-Import auskommentieren und den API-import einkommentieren:
# new transactions # transactions_new = functions.transactions_csv(file_new, clm, header=2) transactions_new = functions.transactions_API_comdirect(clm, pastDays = 30)
Der 2. Fehler tritt bei mir mit dem Beispiel-Datensatz nicht auf. Vlt fehlt noch ein Paket? Oder Pandas updaten?
am 07.02.2024 14:53
Ja die Budgetübersicht fand ich auch mit Abstand das hilfreichste Tool, deshalb hab ich auch versucht es nachzubauen 🙂
Was mir noch fehlt ist die Vorschau der kommenden Monate, in der man auch händisch Korrekturen machen kann.
am 07.02.2024 15:38
ich habe ebenfalls mal versucht das bei mir lauffähig zu machen, aber ich steige bei den Fehlermeldungen leider schon aus 🐵
Traceback (most recent call last):
File "C:\Users\ndavis\AppData\Local\Programs\Python\Python312\PFM\budgetbook\calculate_balance.py", line 25, in <module>
transactions = pd.read_csv(file + '.csv', encoding = "ISO-8859-1")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ndavis\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\parsers\readers.py", line 1024, in read_csv
return _read(filepath_or_buffer, kwds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ndavis\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\parsers\readers.py", line 624, in _read
return parser.read(nrows)
^^^^^^^^^^^^^^^^^^
File "C:\Users\ndavis\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\parsers\readers.py", line 1921, in read
) = self._engine.read( # type: ignore[attr-defined]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\ndavis\AppData\Local\Programs\Python\Python312\Lib\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 234, in read
chunks = self._reader.read_low_memory(nrows)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "parsers.pyx", line 838, in pandas._libs.parsers.TextReader.read_low_memory
File "parsers.pyx", line 905, in pandas._libs.parsers.TextReader._read_rows
File "parsers.pyx", line 874, in pandas._libs.parsers.TextReader._tokenize_rows
File "parsers.pyx", line 891, in pandas._libs.parsers.TextReader._check_tokenize_status
File "parsers.pyx", line 2061, in pandas._libs.parsers.raise_parser_error
pandas.errors.ParserError: Error tokenizing data. C error: Expected 4 fields in line 16, saw 5
am 07.02.2024 16:17
Ich habe es auch mal über die API versucht, aber da bekomme ich dann eine TAN gesendet und bekomme einen runtime error.
Muss ich da etwa die TAN irgendwo eintragen?
Traceback (most recent call last):
File "C:\Users\ndavis\AppData\Local\Programs\Python\Python312\PFM\budgetbook\comdirect_financialreport.py", line 368, in <module>
access_credentials = authenticate_api()
^^^^^^^^^^^^^^^^^^
File "C:\Users\ndavis\AppData\Local\Programs\Python\Python312\PFM\budgetbook\comdirect_financialreport.py", line 125, in authenticate_api
raise RuntimeError(
RuntimeError: PATCH https://api.comdirect.de/session/clients/user/v1/sessions/...:returned status 400
entschuldigt meine Unwissenheit 🐵
07.02.2024 16:27 - bearbeitet 07.02.2024 16:38
07.02.2024 16:27 - bearbeitet 07.02.2024 16:38
Der runtime error kommt, weil man auch bei API-Abruf bestätigen muss, dass man sich einloggt 🙂
Ich persönlich mache es mit photoTAN-App, ich weiß leider nicht wie es mit TAN funktionieren würde. Ich mache immer die photoTAN-App auf, starte das Skript import_transactions.ipynb und aktualisiere dann die App regelmäßig 🙂
Bist Du für die API registriert (https://kunde.comdirect.de/cms/kontakt-zugaenge-api.html) und hast config.json ausgefüllt?
am 07.02.2024 16:36
ahh.... wieder einen Schritt weiter. Ich habe mich für die API registriert und auch die Config ausgefüllt. Photo-Tan muss ich durch ein neues Handy wieder aktiviert werden und da ich natürlich den Aktivierungsbrief nicht mehr habe, warte ich noch auf post.
Danke also erstmal und ich schaue weiter, wenn die Post da ist.
ich versuche derweil mal
http://localhost:8888/notebooks/import_transactions.ipynb
http://localhost:8888/notebooks/analysis.ipynb
Schritt für Schritt geht es voran 🐵
Danke für die Geduld und Unterstützung
am 07.02.2024 16:41
Kommt der Fehler, wenn Du calculate_balance.py benutzen willst?
Bisher habe ich kein Feedback von anderen Nutzern erhalten, ich sehe jetzt dass man da noch einiges an Arbeit reinstecken müsste, damit es ohne eigenes Programmieren funtkioniert.
Vielleicht komme ich demnächst dazu, das noch mal intensiv zu testen und anzupassen.
Danke schon mal, dass Du es versucht hast!
am 08.02.2024 13:53
Hallo Gerrit,
für den Fall, dass Du Dich tatsächlich nochmal gern damit auseinandersetzen möchtest, habe ich mal hingesetzt und ein paar Dinge notiert.
Ich persönlich würde mich natürlich sehr freuen, da ich die Budgetplanung sehr gut fand und gern wieder eine solche Übersicht hätte.
Zu Deiner Frage:
Ja, die Fehlermeldung erscheint, wenn ich calculate_balance.py aufrufe
hier ein paar Anmerkungen, bzw. wünsche, die ich für einen CSV Aufruf interessant fände.
Bitte sieh mir meinen leienhaften Versuch nach, ein paar Dinge aufzulisten, die sicher wesentlich mehr aufwand erfordern, als ich es überblicken kann.
einheitliche Umwandlung des Fnanzreports in CSV:
- der API Abruf geht ja nur 2-3 Jahre zurück. Wenn man nun also versäumt hat, sich jedes Jahr eine CSV zu ziehen, ist man zusätzlich auf
das Umwandeln durch die "com_fm.py" angewiesen.
Durch die neue Version "com_fm.py V1.0.2" sehen sich die csv nun recht ähnlich und man könnte durch Angleichen der
Spaltenüberschriften, die csv Downloads und die umgewandelten nutzen
- in der "calculate_balance.py wäre dann evtl eine Anpassung hilfreich, in dem man die angeglichenen Spaltenüberschriften der csv Dateien nutzt
# column names
clm = dict(
Buchungstag = 'Buchungstag' ,
Umsatz in EUR = 'Umsatz in EUR' ,
balance = 'balance'
)
analysis.ipynb
- hier gibt es einen Bereicht, wo das hier aufgeführt ist, den könnte man ja in soweit anpassen und aufbereiten, dass er ebenfalls die Spalten der vereinheitlichten
angeglichenen Spaltenüberschriften der csv Dateien entsprechen
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"# column names\n",
"clm = dict(\n",
" date = 'date' , # in transactions file\n",
" amount = 'amount' , # in transactions file\n",
" balance = 'balance' , # in transactions file\n",
" category = 'category' , # in transactions file\n",
" cat_fine = 'type' , # for fine categories\n",
" expenses = 'EXPENSES' , # for result\n",
" sum = 'SUM' , # for result\n",
" mean_month = '/MONTH' , # for result\n",
" )"
]
}
import_transactions.ipynb müsste dann sicher ebenfalls angeglichen werden.
Ich würde mich jedenfalls sehr freuen und stünde auch zum testen Bereit 🐵
Ganz lieben Gruß
Nico