emby-toolbox/EmbyToolbox/Models/ConversionPlanActionStats.cs
Emby Toolbox 6264b487fe Initial commit: Emby Toolbox (conversion scroll fix, bulk Del for tracks).
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-12 21:33:47 +05:00

78 lines
2.1 KiB
C#

namespace EmbyToolbox.Models;
/// <summary>Сводка количеств операций в плане (источник — <see cref="ConversionTaskOverride"/> + профиль).</summary>
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);
}
}