per-track language override on audio detail page
Build and Push Docker Image / build (push) Successful in 3m3s

adds stream_decisions.custom_language (ISO 639-2 code or null) so the
user can correct a mislabeled audio track — e.g. a Spanish dub tagged
"und" in the container — without going through Jellyfin. the override
wins over stream.language everywhere it matters: the analyzer reads it
for keep/remove decisions and track ordering, the ffmpeg command builder
writes it as both the language metadata tag and the harmonized track
title, and reanalyze preserves it across reruns and rescans.

on the audio detail page, each pending audio row swaps its language
cell for an inline <select> populated from LANG_NAMES. picking the raw
file language clears the override; anything else sets it and triggers a
server-side reanalyze so keep/remove + target_index update immediately.
a small ✎ hint marks overridden tracks. rebuilt commands tag the output
accordingly so Jellyfin reads the corrected language.

PATCH /api/review/:id/stream/:streamId/language validates the code
against LANG_NAMES (accepts ISO 639-1/2/2B aliases, rejects garbage)
and runs reanalyze inside.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-20 00:05:31 +02:00
parent fada511ecc
commit 8112bfeb65
11 changed files with 290 additions and 47 deletions
+1
View File
@@ -82,6 +82,7 @@ CREATE TABLE IF NOT EXISTS stream_decisions (
action TEXT NOT NULL,
target_index INTEGER,
custom_title TEXT,
custom_language TEXT,
transcode_codec TEXT,
UNIQUE(plan_id, stream_id)
);