Preserve subtitle default unless disabled
This commit is contained in:
parent
f5c6cc7438
commit
726408a44f
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user