Releases: salutaris91/Medienwerkzeug
Releases · salutaris91/Medienwerkzeug
Release list
Medienwerkzeug v1.3.0
Release Notes — Medienwerkzeug v1.3.0
Dieses Release bringt einen zuverlässigen NAS-Überschreibschutz für Filme (inkl. Plaintext-Medienvergleich), die typisierte Erkennung und UI-Unterstützung von Inbox-Einzeldateien sowie eine stark verbesserte, kontextsensitive Filmsuche, die echte Filmtitel nicht mehr versehentlich beschneidet.
Highlights in v1.3.0
1. NAS-Überschreibschutz & Medienvergleich für Filme (#30)
- Zentraler Schutz vor Überschreiben: Bei Transfers zu NAS-Zielen wird nun ein opt-in Überschreibschutz aktiviert. Existiert der Zielpfad bereits, wird die vorhandene Datei automatisch in einen Quarantäne-Papierkorb (
.medienwerkzeug-trash) auf dem NAS verschoben, anstatt sie unwiderruflich zu überschreiben. Schlägt dieses Verschieben fehl, wird der gesamte Transfer abgebrochen. - Plaintext-Medienvergleich im UI: Kollisionen werden nach dem Ermitteln der finalen Dateinamen geprüft. Treten Kollisionen auf, zeigt das UI ein rotes Warnungs-Banner mit einer tabellarischen Gegenüberstellung der Medienparameter (Dateiname, Dateigröße, Auflösung, Video-/Audio-Codec, Bitrate, Dauer sowie eine automatische Qualitäts-Einschätzung) der vorhandenen und der neuen Datei.
2. Typisierte Inbox-Einzeldateien (#31)
- Saubere Unterscheidung: Einzeldateien in der Inbox werden jetzt typisiert erfasst und nicht mehr als Ordner-Projekte behandelt.
- UI-Integration: Im UI werden Einzeldateien durch ein Film-Icon (
🎥) anstelle eines Ordners dargestellt. Tooltips, Buttons und Bestätigungsdialoge passen sich dynamisch an, um vom "Ordner verschieben" auf "Datei verschieben" umzustellen. - Robuster UI-Status: Das Icon bleibt auch nach Status-Updates (z. B. nach dem Starten einer Verarbeitung) korrekt erhalten, da der Ordnertyp im DOM-Element (
data-is-dir) mitgeführt wird.
3. Kontextsensitive & robuste Filmsuche (#32)
- Titel-Erhaltung: Sprach- und Release-Tags (z. B.
german,dl,1080p) werden nur noch dann abgeschnitten, wenn sie in einem klaren Release-Kontext stehen. Echte Filmtitel wie "The French Dispatch" oder "The English Patient" bleiben dadurch vollständig erhalten. - Smarte Jahreszahl-Filterung: Titel, die mit einer Jahreszahl beginnen (z. B. "2001: Odyssee im Weltraum"), werden nicht mehr fälschlicherweise beim ersten Jahr abgeschnitten, sondern das System filtert erst am echten Release-Jahr bzw. bei nachfolgenden Scene-Tags.
- Fallback auf Videodateiname: Wenn ein Projekt in einem generischen Ordner liegt (z. B.
Downloads,Neuer Ordner,Film), nutzt das System automatisch den Namen der darin enthaltenen Videodatei als Suchbegriff.
Technische Änderungen & Commits
- Version-Bumps in
Dockerfile,gui/core/utils.pyundpackage.jsonauf1.3.0. - Umfassende Unit-Tests für Scene-Tag-Filterung, Jahreszahl-Heuristiken, generische Ordnernamen und den Quarantäne-Transferpfad hinzugefügt (
tests/test_movie_processing_fixes.pyundtests/test_transfers_fallback.py). - Whitespace-Bereinigung über das gesamte Diff (
git diff --checkläuft fehlerfrei durch). - Aktualisierung des Wissensgraphen via Graphify.
v1.2.0
Release Notes — Medienwerkzeug v1.2.0
Dieses Release bringt eine verfeinerte TV-Untertitel-Zuordnung (inkl. einer neuen Walk-Up-Pfaddistanz-Heuristik) sowie deutliche Verbesserungen am Web-Folder-Picker (Breiten-Layout und dynamische Titel je nach Kategorie).
Highlights in v1.2.0
1. TV-Pfad Untertitel-Erkennung (#25)
- Lockeres Matching: Die strenge Bindung an
basename.startswith(...)inqueue_api.pywurde für Untertitel gelockert. Fremd benannte Untertitel (z.B.ger_forced.subin einem Unterordner nebenS01E01.mkv) werden jetzt sicher zugeordnet, wenn es keine Mehrdeutigkeiten mit anderen Videos im selben Ordner gibt. - Walk-Up-Pfaddistanz-Heuristik: Ein übergeordnetes Video im Projekt-Root (oder in einem übergeordneten Ordner) darf Untertitel aus Unterordnern nur dann matchen, wenn kein anderer Ordner mit eigener Videodatei dazwischen liegt. Das verhindert Fehlzuordnungen von Subfolders (z. B.
Bonus/ger_forced.sub) an das Root-Video. - Erhöhte Transparenz: Nicht zuordenbare oder mehrdeutige lose Untertitel (wie
Extra/loose.srtbei mehreren Videos) werden in der Vorschau-API nun explizit alsjunkklassifiziert, um den Anwender im UI zu informieren.
2. Dynamische Titel im Web-Folder-Picker (#27)
- Kategoriebezogene Titel: Die Lupe zur Ordnerauswahl übergibt nun den Namen der Kategorie. Das Modal zeigt daraufhin dynamisch an, wofür der Ordner gewählt wird (z. B. "📂 Ordner für Serien auswählen" oder "📂 Ordner für Filme auswählen"), was die Benutzerführung verbessert.
3. Layout-Verbreiterung im Web-Folder-Picker (#28)
- Responsiver Platzgewinn: Die maximale Breite des Picker-Modals in
index.htmlwurde von500pxauf700px(90% Viewport-Breite) erhöht. Dies erleichtert das Navigieren und Lesen langer, verschachtelter Verzeichnispfade auf Desktop- und Tablet-Monitoren.
Technische Änderungen & Commits
- Version-Bumps in
Dockerfile,gui/core/utils.pyundpackage.jsonauf1.2.0. - Testabdeckung in
tests/test_fix_series_queue_and_naming.pyum umfassende Integrationstests für das Subtitle-Matching (Root- vs. Subfolder-Divergenz, Verschachtelungstiefe und Ambivalenzvermeidung) erweitert. - Bereinigung aller trailing whitespaces über das gesamte Diff hinweg (
git diff --checkist vollständig fehlerfrei). - Synchronisation des Wissensgraphen via Graphify.
v1.1.0
Release Notes — Medienwerkzeug v1.1.0
Dieses Release bringt wesentliche Stabilitäts- und Robustheitsverbesserungen für die Medien-Pipeline, den Datenverlust-Schutz sowie die Verarbeitung von Online-Medien (YouTube und Mediatheken).
Highlights in v1.1.0
1. Pragmatischer Step-Retry für TV- und URL-Serien (Strang 4)
- Teil-Wiederholungen: Bei Klick auf "Wiederholen" (Retry) bei einem fehlgeschlagenen oder abgebrochenen Job wird die Pipeline nicht mehr komplett von vorne ausgeführt. Bereits erfolgreiche Stufen (
metadata,convert) werden übersprungen. - Intelligenter Outbox-Bypass: Der Worker prüft die physische Existenz der Zieldateien (oder deren konvertierten
.mkv-Pendants) in der Outbox. Bei Existenz werden Pfade, Dateinamen und Serien-Titel direkt aus dem persistenten Manifest übernommen, um redundante Konvertierungen oder Downloads zu vermeiden. - Selektives Kopieren: Nachträglich in den Einstellungen aktivierte Storage-Targets (z.B. pCloud), die im ursprünglichen Job nicht ausgewählt waren, werden beim Retry korrekt übersprungen.
2. Pro-Job-Logging (Strang 1)
- Eigene Logdateien: Jeder Job schreibt seine Ausgaben nun in eine dedizierte Logdatei unter
data/logs/job-{task_id}.log. - Thread-safe Tracing: Die Logs werden parallel geschrieben, und Thread-Namen werden dynamisch angepasst, um Fehleranalysen präzise und übersichtlich zu gestalten.
- Automatische Log-Retention: Logdateien werden automatisch nach 14 Tagen bereinigt, um unnötigen Speicherplatzverbrauch zu verhindern.
3. NFO-Datenverlust-Schutz & Quarantäne-Strukturierung (Strang 2 & 3)
- Sicherheits-Guards: Ein Schutzmechanismus in der Löschfunktion verhindert, dass kuratierte Sidecar-Dateien (
tvshow.nfo,season.nfo) auf dem NAS durch automatisierte Cleanup- oder Reconciliation-Aktionen gelöscht oder verschoben werden. - Papierkorb-Kollisionsschutz: Dateien im Papierkorb (
.medienwerkzeug-trash) werden kollisionssicher strukturiert abgelegt, um ein Überschreiben älterer gelöschter Dateien zu verhindern.
4. ID-basiertes Serien-Matching (Strang 5)
- Ordner-Split-Schutz: Weicht der ermittelte Serienname leicht vom tatsächlichen Ordnernamen auf dem NAS ab, sucht der Worker (und das Vorschau-System) per ID-Abgleich (TMDB, TVDB, Show-ID) in allen existierenden
tvshow.nfo-Dateien auf dem NAS. Dadurch wird die Episode im korrekten Ordner einsortiert und die Entstehung von doppelten Serienordnern verhindert.
5. Robuste Mediathek-URL-Auflösung (Strang 6)
- HTTP 308-Redirect-Kompensation: Ein angepasster Redirect-Handler kompensiert HTTP 308-Weiterleitungen (z. B. bei ZDF-Sendungs-Links) und verhindert Abstürze beim HTML-Scraping.
- Fallback-Pfad-Heuristik: Falls eine URL offline ist oder das Scraping fehlschlägt, rekonstruiert eine Heuristik das Topic direkt aus dem URL-Pfad (z. B.
/comedy/heute-show->Heute Show). Ungültige oder unauflösbare URLs werden sicher abgefangen, statt mit rohen URLs in die Suche zu laufen.
Technische Änderungen & Commits
- Version-Bumps in
Dockerfile,gui/core/utils.pyundpackage.jsonauf1.1.0. - Testabdeckung um umfassende Integrationstests für Pipeline-Bypass und Mediathek-Redirects erweitert (Gesamtanzahl Tests: 296 Passed).
- Ignorieren des
.serena/-Arbeitsordners in.gitignore.