Erkennt anhand einer Video-Datei und gegebener Serie die Episoden-Nummer
- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- Select single files (⌘/⇧ for several) in an expanded history entry; the button shows how many files will be reverted, or "Alle widerrufen" for a whole entry - Swapped names are detected: reverting one file automatically includes the file that currently holds its old name, and the dialog says so - Undo logs keep a per-file "undone" flag; partly reverted entries show "… – n davon widerrufen", reverted files are greyed out; the log is marked done once every file is back - Newer-conflict check now only considers the selected files Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> |
||
| .idea | ||
| episodefinder | ||
| packaging | ||
| tests | ||
| .env.example | ||
| .gitignore | ||
| pyproject.toml | ||
| README.md | ||
EpisodeFinder
Erkennt anhand des deutschen Tons, welche Episode einer Staffel in einer Video-Datei steckt,
und benennt die Dateien um (Serie S02E05.mkv). Alles mit KI läuft lokal auf Apple Silicon:
- Whisper (
mlx-whisper) transkribiert ein paar Ausschnitte pro Datei. - Untertitel-Methode: Die Transkripte werden mit Referenz-Untertiteln von OpenSubtitles verglichen.
- Handlungs-Methode: Wo es keine Untertitel gibt, entscheidet ein lokales Sprachmodell
(Qwen2.5-7B über
mlx-lm) anhand der Inhaltsangaben aus Wikipedia bzw. TMDB.
Es wird nie etwas gelöscht. Duplikate kommen nach _Duplikate/, blockierende ungeklärte Dateien
nach _Ungeklärt/, und jede Umbenennung lässt sich rückgängig machen.
Voraussetzungen
- Mac mit Apple Silicon
brew install ffmpeg- API-Zugänge für TMDB und OpenSubtitles (in der App unter Einstellungen)
App
dist/EpisodeFinder.app starten:
- Mit + (⌘N) eine Staffel hinzufügen – oder einen Ordner aufs Fenster ziehen.
- Mit ▶︎ (⌘R) die Warteschlange starten.
- Ergebnis prüfen: Zeilen abwählen oder die Episode per Doppelklick ändern.
- Umbenennen. ⇧⌘Z zeigt alle bisherigen Umbenennungen; widerrufen lassen sich ganze Einträge oder einzelne Dateien. Protokoll mit ⌘L.
Beim ersten Lauf werden die Modelle geladen (ca. 6 GB, Hugging-Face-Cache).
Daten liegen in ~/Library/Application Support/EpisodeFinder (Cache, Undo-Protokolle,
settings.json mit den Zugangsdaten).
Die App kann auch ohne Fenster laufen:
EpisodeFinder.app/Contents/MacOS/EpisodeFinder --cli match "<Ordner>" --serie "…" --staffel 2
EpisodeFinder.app/Contents/MacOS/EpisodeFinder --selftest
Entwicklung
.venv/bin/pip install -e ".[dev]"
.venv/bin/episodefinder match "<Ordner>" --serie "Game of Thrones" --staffel 2 # Probelauf
.venv/bin/episodefinder-gui
.venv/bin/python -m pytest
App bauen
Das App-Symbol erzeugt packaging/make_icon.py (schon erledigt, nur nach Änderungen nötig).
cd packaging && ../.venv/bin/pyinstaller --noconfirm --distpath ../dist --workpath ../build EpisodeFinder.spec
../dist/EpisodeFinder.app/Contents/MacOS/EpisodeFinder --selftest