homelab-brain/homelab-ai-bot/SAVETV_ENRICHER.md

2.1 KiB

Save.TV Film-Enricher — Dokumentation

Übersicht

Automatische KI-Anreicherung von Save.TV-Filmarchiv mit Beschreibungen, Darstellern, Land, Jahr und Genre.

Komponenten

1. savetv_enrich.py (im Git)

  • Pfad CT 116: /opt/homelab-ai-bot/savetv_enrich.py
  • Cronjob: 0 */3 * * * (alle 3 Stunden)
  • KI-Modell: qwen2.5:14b (Primary), qwen3:30b-a3b (Fallback)
  • API: Ollama native /api/chat mit think=False, num_predict=1024
  • Cache: /mnt/savetv/.filminfo_cache.json
  • Schutz: fcntl.flock File-Lock gegen parallele Instanzen
  • Sleep: 0.5s zwischen Anfragen

2. savetv_web.py (im Git)

  • Pfad CT 116: /opt/homelab-ai-bot/savetv_web.py
  • Port: 8765, Service: savetv-web
  • Sortierung: Neueste Filme zuerst (nach DSTARTDATE absteigend)
  • Anzeige: Aufnahmedatum, KI-Beschreibung, Darsteller, Genre, Land, Jahr
  • Tailscale: http://100.123.47.7:8765
  • Cloudflare: https://savetv.orbitalo.net

3. savetv_extra_routes.py (NICHT im Git, nur lokal CT 116)

  • Pfad: /opt/savetv_extra_routes.py
  • Umbenennung: _rename_to_jellyfinTitel (Jahr).mp4
  • Fuzzy-Match: _find_cache_match normalisiert Sonderzeichen (Apostrophe, Doppelpunkte, Kommas) für Cache-Lookup
  • Downloads: /files/<filename> zum Browser-Download
  • Wikidata: Fallback für Jahr-Lookup wenn nicht im KI-Cache

Erfahrungen / Gotchas

  • qwen2.5:14b ist zuverlässiger für JSON-Output als qwen3:30b-a3b
  • qwen3 füllt reasoning-Feld statt content → native API mit think=False nutzen
  • _is_mostly_latin Filter gegen chinesische Beschreibungen
  • _normalize_actors wandelt dict-Actors {"name": "..."} in Strings um
  • Parallele Enricher-Prozesse verursachen leere Ollama-Antworten → File-Lock pflicht
  • Dateinamen verlieren Sonderzeichen (I, TonyaI Tonya) → Fuzzy-Match nötig

Änderungen 27.03.2026

  • Enricher: File-Lock, Debug-Logging, Sleep 2.0→0.5s, atomarer Cache-Save
  • Web-UI: Sortierung neueste zuerst, Aufnahmedatum in Film-Karten
  • Extra-Routes: Fuzzy-Match für Jahres-Lookup bei Umbenennung
  • 8 fehlende Jahreszahlen per KI nachgeholt und Dateien umbenannt