From: Martin Pitt Date: Thu, 2 May 2024 05:58:57 +0000 (+0200) Subject: consors-report.py: updates X-Git-Url: https://piware.de/gitweb/?p=bin.git;a=commitdiff_plain;h=HEAD;hp=4e3bd8279c701a0051a158a675497ab714abc2ba consors-report.py: updates --- diff --git a/build-cockpit-toolbox b/build-cockpit-toolbox index 16a81c3..39844bd 100755 --- a/build-cockpit-toolbox +++ b/build-cockpit-toolbox @@ -17,12 +17,11 @@ sudo hostname -F /etc/hostname sudo sed -i s/nodocs// /etc/dnf/dnf.conf sudo dnf install -y ansible bash-completion man-db man-pages moreutils fd-find ripgrep gh git-delta neovim \ - python3-boto python3-boto3 python3-openstacksdk python3-pytest-asyncio libnotify \ - python3-mypy \ + python3-boto python3-boto3 python3-openstacksdk libnotify \ simple-scan /usr/bin/scanimage /usr/bin/pngquant /usr/bin/convert pdfmerge \ cargo rustfmt clippy \ calibre qt5-qtwayland \ - dbus-daemon tmt tmt-provision-virtual flatpak-builder flatpak-spawn \ + tmt flatpak-builder flatpak-spawn \ fedpkg centpkg # commands to forward to the host diff --git a/consors-report.py b/consors-report.py index f76deb3..84e21b7 100755 --- a/consors-report.py +++ b/consors-report.py @@ -19,7 +19,7 @@ CATEGORIES = { '(Dr.*Borchers)|(Debeka.*Überweisung)|(DKV.*Überweisung)|Beihilfe|Klinik', re.I), 'Versicherung': re.compile('((debeka|DKV|Hallesche|Versicherung|Alte Leipziger|ConceptIF|' 'Baloise).*Lastschrift)|Hallesche.*Bonu', re.I), - 'Transport': re.compile('DB Vertrieb|Deutsche Bahn|Nextbike|Carsharing', re.I), + 'Transport': re.compile('DB Vertrieb|Deutsche Bahn|Nextbike|Carsharing|Radstation', re.I), 'Lebensmittel': re.compile('BIOS|Bäcker|Baecker|Ruta|Rewe', re.I), 'Eigentumswohnungen': re.compile('Rechnung Darl.-Leistung|Semmelweis', re.I), 'Hobby/Sport': re.compile('Holstein|Mrs. Sporty|Kieser|DJK|Dimaso', re.I), @@ -47,6 +47,8 @@ def get_category(item: str) -> str: def parse_entry(raw_fields: Iterable[str]) -> Entry: fields = [f.strip() for f in raw_fields] + # format change in May 2024, adds a 9th field "Währung"; ignore + fields = fields[:8] # last field is the value, parse as float value = float(fields.pop().replace('.', '').replace(',', '.')) # match on who, IBAN, type, or desc @@ -64,7 +66,7 @@ def parse_csv(path: Path, date_filter: str) -> Iterable[Entry]: return filter_re.search(entry.date) with path.open() as f: - reader = csv.reader(f) + reader = csv.reader(f, delimiter=';') next(reader) # skip header # first line is the column headers, chop it off entries = map(parse_entry, reader)