holt die Umsätze der letzten 7 Tage
This commit is contained in:
parent
363340d796
commit
0eb6640317
1 changed files with 110 additions and 0 deletions
110
transactions.py
Normal file
110
transactions.py
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from pathlib import Path
|
||||
from datetime import date, timedelta
|
||||
from fints.client import FinTS3PinTanClient
|
||||
import csv
|
||||
import json
|
||||
|
||||
# Konfiguration laden
|
||||
config = {}
|
||||
|
||||
config_file = Path.home() / ".ing.conf"
|
||||
|
||||
if not config_file.exists():
|
||||
config_file = Path(__file__).parent / ".ing.conf"
|
||||
|
||||
with open(config_file, encoding="utf-8") as f:
|
||||
for line in f:
|
||||
line = line.strip()
|
||||
|
||||
if not line or line.startswith("#"):
|
||||
continue
|
||||
|
||||
if "=" not in line:
|
||||
continue
|
||||
|
||||
key, value = line.split("=", 1)
|
||||
config[key] = value
|
||||
|
||||
USER = config["ING_USER"]
|
||||
PIN = config["ING_PIN"]
|
||||
TARGET_IBAN = config["ING_IBAN"]
|
||||
|
||||
BLZ = "50010517"
|
||||
|
||||
# Exportverzeichnis bestimmen
|
||||
export_dir = Path.home() / "logs"
|
||||
|
||||
if not export_dir.exists():
|
||||
export_dir = Path(__file__).parent / "logs"
|
||||
|
||||
# Verzeichnis bei Bedarf anlegen
|
||||
export_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
CSV_FILE = export_dir / "transactions.csv"
|
||||
JSON_FILE = export_dir / "transactions.json"
|
||||
|
||||
client = FinTS3PinTanClient(
|
||||
BLZ,
|
||||
USER,
|
||||
PIN,
|
||||
"https://fints.ing.de/fints/",
|
||||
product_id="PythonFinTS"
|
||||
)
|
||||
|
||||
export_data = []
|
||||
|
||||
with client:
|
||||
for account in client.get_sepa_accounts():
|
||||
|
||||
if account.iban != TARGET_IBAN:
|
||||
continue
|
||||
|
||||
transactions = client.get_transactions(
|
||||
account,
|
||||
start_date=date.today() - timedelta(days=7),
|
||||
end_date=date.today()
|
||||
)
|
||||
|
||||
for transaction in transactions:
|
||||
|
||||
data = transaction.data
|
||||
|
||||
row = {
|
||||
"date": str(data.get("date", "")),
|
||||
"amount": str(data.get("amount", "")),
|
||||
"posting_text": data.get("posting_text", ""),
|
||||
"applicant_name": data.get("applicant_name", ""),
|
||||
"purpose": data.get("purpose", "")
|
||||
}
|
||||
|
||||
export_data.append(row)
|
||||
|
||||
break
|
||||
|
||||
# CSV schreiben
|
||||
with open(CSV_FILE, "w", newline="", encoding="utf-8") as csvfile:
|
||||
writer = csv.DictWriter(
|
||||
csvfile,
|
||||
fieldnames=[
|
||||
"date",
|
||||
"amount",
|
||||
"posting_text",
|
||||
"applicant_name",
|
||||
"purpose"
|
||||
],
|
||||
delimiter=";"
|
||||
)
|
||||
|
||||
writer.writeheader()
|
||||
writer.writerows(export_data)
|
||||
|
||||
# JSON schreiben
|
||||
with open(JSON_FILE, "w", encoding="utf-8") as jsonfile:
|
||||
json.dump(
|
||||
export_data,
|
||||
jsonfile,
|
||||
ensure_ascii=False,
|
||||
indent=2
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue