# 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: ```bash git clone cd cf-zeiten ``` 2. Virtuelle Umgebung erstellen und aktivieren: ```bash python -m venv venv source venv/bin/activate # Linux/macOS # oder venv\Scripts\activate # Windows ``` 3. Abhängigkeiten installieren: ```Bash 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 ```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 ```bash 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.