2.1 KiB
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/chatmitthink=False,num_predict=1024 - Cache:
/mnt/savetv/.filminfo_cache.json - Schutz:
fcntl.flockFile-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
DSTARTDATEabsteigend) - 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_jellyfin→Titel (Jahr).mp4 - Fuzzy-Match:
_find_cache_matchnormalisiert 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:14bist zuverlässiger für JSON-Output alsqwen3:30b-a3bqwen3fülltreasoning-Feld stattcontent→ native API mitthink=Falsenutzen_is_mostly_latinFilter gegen chinesische Beschreibungen_normalize_actorswandelt dict-Actors{"name": "..."}in Strings um- Parallele Enricher-Prozesse verursachen leere Ollama-Antworten → File-Lock pflicht
- Dateinamen verlieren Sonderzeichen (
I, Tonya→I 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