2026-02-21 21:28:30 +01:00
2026-02-21 20:44:40 +01:00
2026-02-21 20:10:50 +01:00
2026-02-21 15:16:27 +01:00
2026-02-21 21:28:30 +01:00
2026-02-21 11:45:58 +01:00
2026-02-21 15:44:41 +01:00
2026-02-21 15:25:48 +01:00
2026-02-21 15:16:27 +01:00

cf-zeiten

Eine FastAPI-Anwendung zur dynamischen Anzeige von Öffnungszeiten und Bemerkungen, die direkt aus Google Sheets gespeist werden.

Features

  • Google Sheets Integration: Daten werden via CSV-Export aus Google Sheets geladen.
  • Automatisches Caching: Daten werden für 60 Minuten zwischengespeichert, um API-Anfragen zu minimieren.
  • Admin-Interface: Zentrale Verwaltungsoberfläche zum Bearbeiten der Tabellen, Löschen des Caches und Testen der Ansicht.
  • Dynamische Filterung: Anzeige kann über URL-Parameter nach Tagen (?days=X) oder Zeilen (?lines=X) gefiltert werden.
  • Typografische Optimierungen:
    • Automatisches Ersetzen von Bindestrichen durch En-Dashes () in Zeitangaben.
    • UTF-8 Unterstützung für korrekte Darstellung deutscher Umlaute (z.B. "März").
    • Unterstützung von Markdown in den Bemerkungsfeldern.
  • Custom Fonts: Einbindung der "Brittany Signature" Schriftart für Monatsüberschriften.

Installation

  1. Repository klonen:
git clone <repository-url>
cd cf-zeiten
  1. Virtuelle Umgebung erstellen und aktivieren:
python -m venv venv
source venv/bin/activate  # Linux/macOS
# oder
venv\Scripts\activate     # Windows
  1. Abhängigkeiten installieren:
pip install -r requirements.txt

Konfiguration

Die Konfiguration erfolgt über die config.yaml im Hauptverzeichnis. Hier müssen die Google Sheet ID und die GIDs der einzelnen Tabellenblätter hinterlegt werden: YAML

google_sheet:
  sheet_id: "DEINE_SHEET_ID"
  gid_times: "GID_DER_ZEITEN"
  gid_remarks: "GID_DER_BEMERKUNGEN"
  date_column: "Datum"

processing:
  days_to_show: 14

server:
  host: "0.0.0.0"
  port: 8000

Verwendung

Server starten

python main.py

Endpunkte

  • Admin-Bereich: http://localhost:8000/
  • Öffentliche Tabelle: http://localhost:8000/zeiten
  • Cache manuell leeren: http://localhost:8000/cache-clear

URL-Parameter für /zeiten

  • test=1: Aktiviert einen dunklen Testhintergrund zur Vorschau.
  • days=X: Zeigt die Einträge der nächsten X Tage an.
  • lines=X: Zeigt exakt X Zeilen an (hat Vorrang vor days).

Projektstruktur

  • main.py: Einstiegspunkt der Anwendung.
  • core/: Logik für Konfiguration und Datenverarbeitung (data_processor.py).
  • routers/: Definition der Web-Routen.
  • static/: Statische Dateien (Fonts, CSS).
  • templates/: Jinja2-Templates für Admin- und Tabellenansicht.
Description
No description provided
Readme 104 KiB
Languages
HTML 52.3%
Python 47.7%