namespace EmbyToolbox.Models; /// Сводка количеств операций в плане (источник — + профиль). public readonly record struct ConversionPlanActionStats( int Add, int Remove, int ConvertAudio, int ConvertVideo, int SubtitleRemove, int SubtitleConvert, int SubtitleKeep) { public static ConversionPlanActionStats FromOverrides(ConversionTaskOverride? ovr) { if (ovr is null) { return default; } var add = 0; var remove = 0; var cAudio = 0; var cVideo = 0; var sRem = 0; var sConv = 0; var sKeep = 0; foreach (var t in ovr.TrackOverrides) { if (t.Source == SourceKind.External) { if (t.Action == TrackActionKind.Add) { add++; } } else { if (t.Action == TrackActionKind.Remove) { remove++; } if (t.Action == TrackActionKind.Convert) { if (t.StreamKind == MediaStreamKind.Audio) { cAudio++; } if (t.StreamKind == MediaStreamKind.Video) { cVideo++; } if (t.StreamKind == MediaStreamKind.Subtitle) { sConv++; } } if (t.StreamKind == MediaStreamKind.Subtitle) { if (t.Action == TrackActionKind.Remove) { sRem++; } else if (t.Action == TrackActionKind.Keep) { sKeep++; } } } } return new ConversionPlanActionStats(add, remove, cAudio, cVideo, sRem, sConv, sKeep); } }