emby-toolbox/EmbyToolbox/Models/TrackSettingsSnapshot.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

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; }
}