78 lines
2.1 KiB
C#
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);
|
|
}
|
|
}
|