Kompletter Video-Konverter mit Web-UI, GPU-Beschleunigung (Intel VAAPI), Video-Bibliothek mit Serien/Film-Erkennung und TVDB-Integration. Features: - AV1/HEVC/H.264 Encoding (GPU + CPU) - Video-Bibliothek mit ffprobe-Analyse und Filtern - TVDB-Integration mit Review-Modal und Sprachkonfiguration - Film-Scanning und TVDB-Zuordnung - Import- und Clean-Service (Grundgeruest) - WebSocket Live-Updates, Queue-Management - Docker mit GPU/CPU-Profilen Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
9.2 KiB
9.2 KiB
Changelog
Alle relevanten Aenderungen am VideoKonverter-Projekt.
[2.2.0] - 2026-02-21
Bugfixes
TVDB Review-Modal nicht klickbar
JSON.stringify()erzeugte doppelte Anfuehrungszeichen in HTML onclick-Attributen- Neue
escapeAttr()-Funktion ersetzt"durch"fuer sichere HTML-Attribute - 4 Stellen in
library.jskorrigiert (Serien, Filme, Review-Liste, manuelle Suche)
Film-TVDB-Suche liefert keine Ergebnisse
- Filmtitel mit fuehrenden Nummern (z.B. "10 Logan The Wolverine") fanden nichts auf TVDB
- Neue
cleanSearchTitle()-Funktion entfernt fuehrende Nummern und Aufloesungs-Suffixe - Angewendet in
openMovieTvdbModal()undopenTvdbModal()
Auto-Match Progress-Variable nicht im Scope
pollAutoMatchStatus()referenzierteprogressausstartAutoMatch()-Scope- Variable wird jetzt lokal in
pollAutoMatchStatus()definiert
TVDB-Sprache wurde nicht gespeichert
pages.pyHTMX-Save-Handler fehltetvdb_languageFeld- Hinzugefuegt:
settings["library"]["tvdb_language"] = data.get("tvdb_language", "deu")
Geaenderte Dateien
app/static/js/library.js- +escapeAttr(), +cleanSearchTitle(), 4x Attribut-Escaping, Progress-Fixapp/routes/pages.py- tvdb_language in Settings-Save
[2.1.0] - 2026-02-21
TVDB-Sprachkonfiguration
Alle TVDB-Metadaten (Serien-Titel, Beschreibungen, Episoden-Namen) werden jetzt in der konfigurierten Sprache abgerufen statt immer Englisch.
Neue Features
- Sprach-Dropdown in Admin-UI (Deutsch, Englisch, Franzoesisch, Spanisch, Italienisch, Japanisch)
- API-Endpoints:
GET/PUT /api/tvdb/languagezum Lesen/Aendern der Sprache - Episoden-Refresh:
POST /api/library/tvdb-refresh-episodesaktualisiert alle gecachten Episoden - Alle TVDB-API-Aufrufe nutzen
self._languageProperty
TVDB Review-Modal (Neues Feature)
- Statt blindem Auto-Match werden jetzt Vorschlaege gesammelt und zur Pruefung angezeigt
collect_suggestions()in tvdb.py: Top 3 TVDB-Treffer pro ungematchter Serie/Film- Review-Modal: Poster-Vorschau, Beschreibung, Jahr, Einzelbestaetigung
- Manuelle TVDB-Suche falls Vorschlaege nicht passen
- Polling-basierter Fortschritt waehrend der Analyse
Film-Scanning (Neues Feature)
- Bibliothek unterstuetzt jetzt Filme neben Serien
- Neue DB-Tabelle
library_moviesfuer Film-Metadaten - Film-Erkennung: Ein Video pro Ordner = Film, Ordnername = Filmtitel
- Film-Grid in der Bibliothek-UI mit Poster, Titel, Jahr
- TVDB-Zuordnung fuer Filme (Suche + manuelle Zuordnung)
Import- und Clean-Service (Grundgeruest)
app/services/importer.py(734 Z.) - Import-Logik mit Serien-Erkennung + TVDB-Lookupapp/services/cleaner.py(155 Z.) - Junk-Scan + Loeschen von Nicht-Video-Dateien
Geaenderte Dateien
app/services/tvdb.py- _language Property, lokalisierte Suche, collect_suggestions() (298 -> 1005 Z.)app/services/library.py- Film-Scan, _ensure_movie, _add_video_to_db (1082 -> 1747 Z.)app/routes/library_api.py- TVDB-Language-Endpoints, Confirm-Endpoint, Film-Endpoints (260 -> 998 Z.)app/static/js/library.js- Review-Modal, Film-Grid, Auto-Match-Polling (587 -> 1912 Z.)app/static/css/style.css- Review-Modal CSS, Film-Grid CSS (889 -> 1554 Z.)app/templates/library.html- Review-Modal HTML, Film-TVDB-Modal (330 -> 392 Z.)app/templates/admin.html- TVDB-Sprach-Dropdown (330 -> 342 Z.)app/server.py- CleanerService + ImporterService Integrationapp/cfg/settings.yaml- tvdb_language, import-Settings, cleanup keep_extensions
Neue API-Endpoints
GET /api/tvdb/language- Aktuelle TVDB-SprachePUT /api/tvdb/language- TVDB-Sprache aendernPOST /api/library/tvdb-refresh-episodes- Alle Episoden-Caches aktualisierenPOST /api/library/tvdb-auto-match- Review-Vorschlaege sammelnPOST /api/library/tvdb-confirm- Einzelnen TVDB-Match bestaetigenGET /api/library/movies- Filme auflistenPOST /api/library/movies/{id}/tvdb-match- Film-TVDB-Zuordnung
[2.0.0] - 2026-02-20
Video-Bibliothek (Neues Feature)
Komplette Video-Bibliotheksverwaltung mit Serien-Erkennung, ffprobe-Analyse, TVDB-Integration und umfangreichen Filterfunktionen.
Neue Dateien
app/services/library.py- LibraryService (Scan, DB, Filter, Duplikate)app/services/tvdb.py- TVDBService (Auth, Suche, Episoden-Abgleich)app/routes/library_api.py- REST API Endpoints fuer Bibliothekapp/templates/library.html- Bibliothek-Hauptseite mit Filter-Sidebarapp/static/js/library.js- Bibliothek-Frontend (Filter, TVDB, Scan-Progress)
Geaenderte Dateien
app/server.py- LibraryService + TVDBService Integrationapp/routes/pages.py- Route /library + TVDB-Settings speichernapp/templates/base.html- Nav-Link "Bibliothek" hinzugefuegtapp/templates/admin.html- TVDB-Settings + Scan-Pfad-Verwaltungapp/static/css/style.css- Library-Styles (~250 Zeilen ergaenzt)app/cfg/settings.yaml- library-Sektion (enabled, tvdb_api_key, tvdb_pin)requirements.txt- tvdb-v4-official>=1.1.0 hinzugefuegt
Datenbank
Vier neue Tabellen (werden automatisch beim Start erstellt):
library_paths- Konfigurierbare Scan-Pfade (Serien/Filme)library_series- Erkannte Serien mit TVDB-Verknuepfunglibrary_videos- Videos mit vollstaendigen ffprobe-Metadatentvdb_episode_cache- TVDB-Episoden-Cache
Features im Detail
Ordner-Scan
- Konfigurierbare Scan-Pfade fuer Serien und Filme getrennt
- Serien-Erkennung via Ordnerstruktur (S01E01, 1x02, Season/Staffel XX)
- ffprobe-Analyse: Codec, Aufloesung, Bitrate, Audio-Spuren, Untertitel, HDR
- Versteckte Ordner (.Trash-*) werden automatisch uebersprungen
- UPSERT-Logik: unveraenderte Dateien werden nicht erneut analysiert
- Scan-Fortschritt via WebSocket + Polling im UI
- Verwaiste DB-Eintraege werden nach Scan automatisch bereinigt
Filter-System
- Video-Codec: AV1, HEVC, H.264, MPEG-4
- Aufloesung: 4K, 1080p, 720p, SD
- Container: MKV, MP4, AVI, WebM, TS, WMV
- Audio: Sprache (Deutsch, Englisch), Kanaele (Stereo, 5.1, 7.1)
- 10-Bit Filter
- Freitext-Suche im Dateinamen
- Sortierung nach Name, Groesse, Aufloesung, Dauer, Codec, Datum
- Pagination (50 Videos pro Seite)
TVDB-Integration
- Authentifizierung via API Key + optionalem PIN
- Serien-Suche mit Ergebnis-Vorschau (Poster, Beschreibung, Jahr)
- Episoden-Abgleich: Soll (TVDB) vs. Ist (lokal) = fehlende Episoden
- Poster-URLs, Beschreibung, Status (Continuing/Ended)
- Episoden-Cache in DB (reduziert API-Aufrufe)
Duplikat-Finder
- Erkennt gleiche Episoden in verschiedenen Formaten (z.B. AVI + WebM)
- Vergleich ueber Serie + Staffel + Episode
- Anzeige mit Codec, Aufloesung, Groesse fuer beide Versionen
Direkt-Konvertierung
- "Conv"-Button bei jedem Video in der Bibliothek
- Sendet Video direkt an die bestehende Konvertierungs-Queue
- Optionale Preset-Auswahl
Admin-UI Erweiterung
- TVDB API Key + PIN Eingabefelder
- Scan-Pfad-Verwaltung (hinzufuegen, loeschen, einzeln scannen)
- Letzter Scan-Zeitpunkt pro Pfad angezeigt
Statistik-Leiste
- Gesamt-Videos, Serien-Anzahl, Speicherbedarf, Gesamtspielzeit
- Codec-Verteilung, Aufloesungs-Verteilung
API Endpoints (17 neue)
GET/POST/DELETE /api/library/paths- Scan-Pfade CRUDPOST /api/library/scan- Komplett-ScanPOST /api/library/scan/{id}- Einzel-ScanGET /api/library/scan-status- Scan-FortschrittGET /api/library/videos- Videos mit FilternGET /api/library/series- Alle SerienGET /api/library/series/{id}- Serien-Detail mit EpisodenGET /api/library/series/{id}/missing- Fehlende EpisodenPOST /api/library/series/{id}/tvdb-match- TVDB zuordnenGET /api/library/duplicates- Duplikate findenPOST /api/library/videos/{id}/convert- Direkt konvertierenGET /api/library/stats- Bibliotheks-StatistikenGET /api/tvdb/search?q=- TVDB-Suche
Erster Scan-Lauf
- 80 Serien erkannt, 5.260 Videos analysiert
- ~3.7 TiB Gesamtgroesse, ~150 Tage Spielzeit
- Codecs: H.264 (2.942), MPEG-4 (2.094), AV1 (199), HEVC (24)
- Aufloesungen: SD (4.256), 720p (651), 1080p (300), 4K (52)
- 9 Duplikat-Paare gefunden
[1.0.0] - 2026-02-20
Komplett-Neubau
Vollstaendiger Neubau des VideoKonverter-Servers als moderne Python/aiohttp-Anwendung mit Web-UI.
Kern-Features
- aiohttp-Server mit Jinja2-Templating und HTMX
- WebSocket fuer Echtzeit-Fortschritts-Updates
- Queue-System mit MariaDB-Persistierung und parallelen Jobs
- FFmpeg-Encoding mit GPU (Intel VAAPI) und CPU Support
- 7 Encoding-Presets: GPU AV1/HEVC/H.264 + CPU SVT-AV1/x265/x264
- Dashboard mit aktiven Jobs und Queue-Uebersicht
- Admin-UI fuer Einstellungen, Presets, Encoding-Modus
- Statistik-Seite mit Konvertierungs-Historie
- File-Browser zum Auswaehlen von Dateien/Ordnern
- Docker-Support mit GPU- und CPU-Profilen
Audio-Handling
- Alle Spuren behalten (kein Downmix)
- Konfigurierbare Sprach-Filter (DE, EN, Undefiniert)
- Opus-Transcoding mit bitrate-basiertem Kanalmanagement
- Surround-Kanaele (5.1, 7.1) bleiben erhalten
Technische Details
- Async/Await durchgaengig (aiohttp, aiomysql, asyncio.subprocess)
- MariaDB statt SQLite (Lock-Probleme in Docker behoben)
- WebSocket-Broadcast fuer alle verbundenen Clients
- Automatische GPU-Erkennung (VAAPI, vainfo)
- Konfigurierbare Settings via YAML
- Log-Rotation (7 Tage, 10 MiB pro Datei)