From 726408a44fe1f2cbf5b3ea56df08d7437dad7dc5 Mon Sep 17 00:00:00 2001 From: Emby Toolbox Date: Tue, 12 May 2026 22:10:49 +0500 Subject: [PATCH] Preserve subtitle default unless disabled --- EmbyToolbox/Services/TrackOverrideSeeder.cs | 76 +-------------------- 1 file changed, 2 insertions(+), 74 deletions(-) diff --git a/EmbyToolbox/Services/TrackOverrideSeeder.cs b/EmbyToolbox/Services/TrackOverrideSeeder.cs index 734c73d..c1974ba 100644 --- a/EmbyToolbox/Services/TrackOverrideSeeder.cs +++ b/EmbyToolbox/Services/TrackOverrideSeeder.cs @@ -409,76 +409,7 @@ public static class TrackOverrideSeeder var subtitleEntries = taskOverride.TrackOverrides .Where(t => t.StreamKind == MediaStreamKind.Subtitle) .ToList(); - if (disableSubtitleDefault) - { - foreach (var entry in subtitleEntries) - { - entry.Default = false; - } - - return; - } - - var forcedCandidates = media.SubtitleStreams - .Where(s => s.IsForced) - .OrderBy(s => s.Index) - .ToList(); - var embeddedSubtitleEntries = subtitleEntries - .Where(t => t.Source == SourceKind.Embedded && t.Action != TrackActionKind.Remove) - .ToList(); - - if (forcedCandidates.Count > 0) - { - var selectedForcedIndex = forcedCandidates[0].Index; - if (forcedCandidates.Count > 1) - { - logging?.Info("Найдено несколько forced-субтитров, default установлен только для первой дорожки.", "subtitle.forced"); - } - - foreach (var entry in subtitleEntries) - { - entry.Default = false; - } - - var selectedEntry = embeddedSubtitleEntries.FirstOrDefault(t => t.StreamIndex == selectedForcedIndex); - if (selectedEntry is null) - { - return; - } - - selectedEntry.Default = true; - logging?.Info($"subtitle default set to forced track: #{selectedEntry.StreamIndex}", "subtitle.forced"); - return; - } - - var defaultEmbeddedAudio = taskOverride.TrackOverrides - .FirstOrDefault(t => t.Source == SourceKind.Embedded - && t.StreamKind == MediaStreamKind.Audio - && t.Action != TrackActionKind.Remove - && t.Default == true); - var defaultAudioIsRus = IsRussianLanguage(defaultEmbeddedAudio?.Language); - - var rusFullSubtitleEntries = embeddedSubtitleEntries - .Where(t => IsRussianLanguage(t.Language)) - .Where(t => - { - var stream = media.SubtitleStreams.FirstOrDefault(s => s.Index == t.StreamIndex); - return stream is null || !stream.IsForced; - }) - .OrderBy(t => t.StreamIndex) - .ToList(); - - if (defaultAudioIsRus) - { - foreach (var entry in rusFullSubtitleEntries) - { - entry.Default = false; - } - - return; - } - - if (rusFullSubtitleEntries.Count == 0) + if (!disableSubtitleDefault) { return; } @@ -487,9 +418,6 @@ public static class TrackOverrideSeeder { entry.Default = false; } - - rusFullSubtitleEntries[0].Default = true; - logging?.Info($"subtitle default set to first RUS full track: #{rusFullSubtitleEntries[0].StreamIndex}", "subtitle.forced"); } private static bool IsRussianLanguage(string? language) @@ -502,4 +430,4 @@ public static class TrackOverrideSeeder var normalized = language.Trim().ToLowerInvariant(); return normalized is "ru" or "rus" or "russian" or "рус" or "русский"; } -} \ No newline at end of file +}