50 lines
2.0 KiB
C#
50 lines
2.0 KiB
C#
using System.Collections.Generic;
|
|
|
|
namespace EmbyToolbox.Models;
|
|
|
|
public sealed class TrackSettingsSnapshot
|
|
{
|
|
public string FilePath { get; init; } = string.Empty;
|
|
|
|
/// <summary>Нормализованный абсолютный каталог исходного видеофайла (родитель имени).</summary>
|
|
public string ScopeDirectory { get; init; } = string.Empty;
|
|
|
|
/// <summary>При добавлении каталогом — корень выбранной папки; при перетаскивании — общий предок каталогов батча.</summary>
|
|
public string? ScopeBatchRoot { get; init; }
|
|
|
|
public TrackStructureSignature Signature { get; init; } = new();
|
|
public IReadOnlyList<TrackSettingsSnapshotItem> Items { get; init; } = [];
|
|
}
|
|
|
|
public sealed class TrackStructureSignature
|
|
{
|
|
public IReadOnlyList<TrackStructureSignatureItem> Tracks { get; init; } = [];
|
|
}
|
|
|
|
public sealed class TrackStructureSignatureItem
|
|
{
|
|
public int Order { get; init; }
|
|
public MediaStreamKind StreamKind { get; init; }
|
|
public SourceKind Source { get; init; }
|
|
public string Codec { get; init; } = string.Empty;
|
|
public string Language { get; init; } = string.Empty;
|
|
public string Title { get; init; } = string.Empty;
|
|
}
|
|
|
|
public sealed class TrackSettingsSnapshotItem
|
|
{
|
|
public int Order { get; init; }
|
|
public MediaStreamKind StreamKind { get; init; }
|
|
public SourceKind Source { get; init; }
|
|
public string Codec { get; init; } = string.Empty;
|
|
public string Language { get; init; } = string.Empty;
|
|
public string Title { get; init; } = string.Empty;
|
|
public TrackActionKind Action { get; init; }
|
|
public string? Bitrate { get; init; }
|
|
public bool? Default { get; init; }
|
|
public string? TargetCodec { get; init; }
|
|
|
|
/// <summary>True, если Title в UI отличается от типового (ffprobe/filename) — тогда при apply копируем Title.</summary>
|
|
public bool SnapshotTitleWasUserEdited { get; init; }
|
|
}
|