Prepare lsdvd types
This commit is contained in:
parent
73d17fdb12
commit
692c50c377
16 changed files with 588 additions and 0 deletions
|
|
@ -0,0 +1,39 @@
|
|||
<Project>
|
||||
|
||||
<Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<SkipCopyBuildProduct>true</SkipCopyBuildProduct>
|
||||
<AssemblyName>media-organizer</AssemblyName>
|
||||
<PackageId>media-organizer.XmlSerializers</PackageId>
|
||||
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<DotNetCliToolReference Include="Microsoft.XmlSerializer.Generator" Version="9.0.8" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\media-organizer\media-organizer.csproj" ReferenceOutputAssembly="false" OutputItemType="XmlSerializerReference" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.XmlSerializer.Generator" Version="9.0.10" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
|
||||
|
||||
<Target Name="CoreCompile">
|
||||
<Copy SourceFiles="@(XmlSerializerReference)" DestinationFolder="$(IntermediateOutputPath)" />
|
||||
</Target>
|
||||
|
||||
<Target Name="GetTargetPathWithTargetPlatformMoniker" BeforeTargets="GetTargetPath" Returns="@(TargetPathWithTargetPlatformMoniker)">
|
||||
<ItemGroup>
|
||||
<TargetPathWithTargetPlatformMoniker Include="$(TargetDir)\$(_SerializationAssemblyName).dll" />
|
||||
</ItemGroup>
|
||||
</Target>
|
||||
|
||||
<Target Name="GenerateBuildDependencyFile" />
|
||||
|
||||
</Project>
|
||||
59
lib/media-organizer/Tools/Types/LsDvd/Audio.cs
Executable file
59
lib/media-organizer/Tools/Types/LsDvd/Audio.cs
Executable file
|
|
@ -0,0 +1,59 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Audio
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("langcode")]
|
||||
public string? LangCode { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LangCodeSpecified => !string.IsNullOrWhiteSpace(LangCode);
|
||||
|
||||
[XmlElement("language")]
|
||||
public string? Language { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LanguageSpecified => !string.IsNullOrWhiteSpace(Language);
|
||||
|
||||
[XmlElement("format")]
|
||||
public string? Format { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool FormatSpecified => !string.IsNullOrWhiteSpace(Format);
|
||||
|
||||
[XmlElement("frequency", typeof(int))]
|
||||
public int? Frequency { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool FrequencySpecified => Frequency.HasValue;
|
||||
|
||||
[XmlElement("quantization")]
|
||||
public string? Quantization { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool QuantizationSpecified => !string.IsNullOrWhiteSpace(Quantization);
|
||||
|
||||
[XmlElement("channels", typeof(int))]
|
||||
public int? Channels { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ChannelsSpecified => Channels.HasValue;
|
||||
|
||||
[XmlElement("ap_mode", typeof(int))]
|
||||
public int? ApMode { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ApModeSpecified => ApMode.HasValue;
|
||||
|
||||
[XmlElement("content")]
|
||||
public string? Content { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ContentSpecified => !string.IsNullOrWhiteSpace(Content);
|
||||
|
||||
[XmlElement("streamid")]
|
||||
public string? StreamId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool StreamIdSpecified => !string.IsNullOrWhiteSpace(StreamId);
|
||||
}
|
||||
19
lib/media-organizer/Tools/Types/LsDvd/Cell.cs
Executable file
19
lib/media-organizer/Tools/Types/LsDvd/Cell.cs
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Cell
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("length", typeof(double))]
|
||||
public double? Length { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LengthSpecified => Length.HasValue;
|
||||
}
|
||||
24
lib/media-organizer/Tools/Types/LsDvd/Chapter.cs
Executable file
24
lib/media-organizer/Tools/Types/LsDvd/Chapter.cs
Executable file
|
|
@ -0,0 +1,24 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Chapter
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("length", typeof(double))]
|
||||
public double? Length { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LengthSpecified => Length.HasValue;
|
||||
|
||||
[XmlElement("startcell", typeof(int))]
|
||||
public int? StartCell { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool StartCellSpecified => StartCell.HasValue;
|
||||
}
|
||||
38
lib/media-organizer/Tools/Types/LsDvd/LsDvdResult.cs
Executable file
38
lib/media-organizer/Tools/Types/LsDvd/LsDvdResult.cs
Executable file
|
|
@ -0,0 +1,38 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
[XmlRoot("lsdvd")]
|
||||
public sealed class LsDvdResult
|
||||
{
|
||||
[XmlElement("device")]
|
||||
public string? Device { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool DeviceSpecified => !string.IsNullOrWhiteSpace(Device);
|
||||
|
||||
[XmlElement("title")]
|
||||
public string? Title { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool TitleSpecified => !string.IsNullOrWhiteSpace(Title);
|
||||
|
||||
[XmlElement("vmg_id")]
|
||||
public string? VmgId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool VmgIdSpecified => !string.IsNullOrWhiteSpace(VmgId);
|
||||
|
||||
[XmlElement("provider_id")]
|
||||
public string? ProviderId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ProviderIdSpecified => !string.IsNullOrWhiteSpace(ProviderId);
|
||||
|
||||
[XmlElement("track")]
|
||||
public List<Track> Tracks { get; } = [];
|
||||
|
||||
[XmlElement("longest_track")]
|
||||
public int? LongestTrack { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LongestTrackSpecified => LongestTrack.HasValue;
|
||||
}
|
||||
34
lib/media-organizer/Tools/Types/LsDvd/Subtitle.cs
Executable file
34
lib/media-organizer/Tools/Types/LsDvd/Subtitle.cs
Executable file
|
|
@ -0,0 +1,34 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Subtitle
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("langcode")]
|
||||
public string? LangCode { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LangCodeSpecified => !string.IsNullOrWhiteSpace(LangCode);
|
||||
|
||||
[XmlElement("language")]
|
||||
public string? Language { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LanguageSpecified => !string.IsNullOrWhiteSpace(Language);
|
||||
|
||||
[XmlElement("content")]
|
||||
public string? Content { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ContentSpecified => !string.IsNullOrWhiteSpace(Content);
|
||||
|
||||
[XmlElement("streamid")]
|
||||
public string? StreamId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool StreamIdSpecified => !string.IsNullOrWhiteSpace(StreamId);
|
||||
}
|
||||
84
lib/media-organizer/Tools/Types/LsDvd/Track.cs
Executable file
84
lib/media-organizer/Tools/Types/LsDvd/Track.cs
Executable file
|
|
@ -0,0 +1,84 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Track
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("length", typeof(double))]
|
||||
public double? Length { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LengthSpecified => Length.HasValue;
|
||||
|
||||
[XmlElement("vts_id")]
|
||||
public string? VtsId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool VtsIdSpecified => !string.IsNullOrWhiteSpace(VtsId);
|
||||
|
||||
[XmlElement("vts", typeof(int))]
|
||||
public int? Vts { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool VtsSpecified => Vts.HasValue;
|
||||
|
||||
[XmlElement("ttn", typeof(int))]
|
||||
public int? Ttn { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool TtnSpecified => Vts.HasValue;
|
||||
|
||||
[XmlElement("fps", typeof(double))]
|
||||
public double? FPS { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool FPSSpecified => FPS.HasValue;
|
||||
|
||||
[XmlElement("format")]
|
||||
public string? Format { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool FormatSpecified => !string.IsNullOrWhiteSpace(Format);
|
||||
|
||||
[XmlElement("aspect")]
|
||||
public string? Aspect { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool AspectSpecified => !string.IsNullOrWhiteSpace(Aspect);
|
||||
|
||||
[XmlElement("width", typeof(int))]
|
||||
public int? Width { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool WidthSpecified => Width.HasValue;
|
||||
|
||||
[XmlElement("height", typeof(int))]
|
||||
public int? Height { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool HeightSpecified => Height.HasValue;
|
||||
|
||||
[XmlElement("df")]
|
||||
public string? Df { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool DfSpecified => !string.IsNullOrWhiteSpace(Df);
|
||||
|
||||
[XmlArray("palette"), XmlArrayItem("color", IsNullable = false)]
|
||||
public List<string> Palette { get; } = [];
|
||||
|
||||
[XmlElement("angles", typeof(int))]
|
||||
public int? Angles { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool AnglesSpecified => Angles.HasValue;
|
||||
|
||||
[XmlElement("audio")]
|
||||
public List<Audio> Audio { get; } = [];
|
||||
|
||||
[XmlElement("chapter")]
|
||||
public List<Chapter> Chapters { get; } = [];
|
||||
|
||||
[XmlElement("cell")]
|
||||
public List<Cell> Cells { get; } = [];
|
||||
|
||||
[XmlElement("subp")]
|
||||
public List<Subtitle> Subtitles { get; } = [];
|
||||
}
|
||||
12
lib/media-organizer/media-organizer.csproj
Normal file
12
lib/media-organizer/media-organizer.csproj
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<RootNamespace>MediaOrganizer</RootNamespace>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<PackageId>media-organizer.Ref</PackageId>
|
||||
<ProduceReferenceAssembly>false</ProduceReferenceAssembly>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
||||
|
|
@ -7,6 +7,12 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "media-organizer", "src\media-organizer.csproj", "{E34F9D32-207E-4897-9CEC-26156FBD1B4D}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "lib", "lib", "{3A8DF596-E814-FECC-DD4B-D8EF8AAC1A0D}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "media-organizer.XmlSerializers", "lib\media-organizer.XmlSerializers\media-organizer.XmlSerializers.csproj", "{2BFF52DB-10C2-4DED-87B7-8BF5F87D0415}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "media-organizer", "lib\media-organizer\media-organizer.csproj", "{D33E2DE4-EDFA-4B93-A1C5-376B08A93895}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
|
@ -17,11 +23,21 @@ Global
|
|||
{E34F9D32-207E-4897-9CEC-26156FBD1B4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E34F9D32-207E-4897-9CEC-26156FBD1B4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{E34F9D32-207E-4897-9CEC-26156FBD1B4D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{2BFF52DB-10C2-4DED-87B7-8BF5F87D0415}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2BFF52DB-10C2-4DED-87B7-8BF5F87D0415}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2BFF52DB-10C2-4DED-87B7-8BF5F87D0415}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{2BFF52DB-10C2-4DED-87B7-8BF5F87D0415}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{D33E2DE4-EDFA-4B93-A1C5-376B08A93895}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D33E2DE4-EDFA-4B93-A1C5-376B08A93895}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D33E2DE4-EDFA-4B93-A1C5-376B08A93895}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D33E2DE4-EDFA-4B93-A1C5-376B08A93895}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{E34F9D32-207E-4897-9CEC-26156FBD1B4D} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
|
||||
{2BFF52DB-10C2-4DED-87B7-8BF5F87D0415} = {3A8DF596-E814-FECC-DD4B-D8EF8AAC1A0D}
|
||||
{D33E2DE4-EDFA-4B93-A1C5-376B08A93895} = {3A8DF596-E814-FECC-DD4B-D8EF8AAC1A0D}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
|
|
|||
59
src/Tools/Types/LsDvd/Audio.cs
Executable file
59
src/Tools/Types/LsDvd/Audio.cs
Executable file
|
|
@ -0,0 +1,59 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Audio
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("langcode")]
|
||||
public string? LangCode { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LangCodeSpecified => !string.IsNullOrWhiteSpace(LangCode);
|
||||
|
||||
[XmlElement("language")]
|
||||
public string? Language { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LanguageSpecified => !string.IsNullOrWhiteSpace(Language);
|
||||
|
||||
[XmlElement("format")]
|
||||
public string? Format { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool FormatSpecified => !string.IsNullOrWhiteSpace(Format);
|
||||
|
||||
[XmlElement("frequency", typeof(int))]
|
||||
public int? Frequency { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool FrequencySpecified => Frequency.HasValue;
|
||||
|
||||
[XmlElement("quantization")]
|
||||
public string? Quantization { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool QuantizationSpecified => !string.IsNullOrWhiteSpace(Quantization);
|
||||
|
||||
[XmlElement("channels", typeof(int))]
|
||||
public int? Channels { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ChannelsSpecified => Channels.HasValue;
|
||||
|
||||
[XmlElement("ap_mode", typeof(int))]
|
||||
public int? ApMode { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ApModeSpecified => ApMode.HasValue;
|
||||
|
||||
[XmlElement("content")]
|
||||
public string? Content { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ContentSpecified => !string.IsNullOrWhiteSpace(Content);
|
||||
|
||||
[XmlElement("streamid")]
|
||||
public string? StreamId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool StreamIdSpecified => !string.IsNullOrWhiteSpace(StreamId);
|
||||
}
|
||||
19
src/Tools/Types/LsDvd/Cell.cs
Executable file
19
src/Tools/Types/LsDvd/Cell.cs
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Cell
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("length", typeof(double))]
|
||||
public double? Length { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LengthSpecified => Length.HasValue;
|
||||
}
|
||||
24
src/Tools/Types/LsDvd/Chapter.cs
Executable file
24
src/Tools/Types/LsDvd/Chapter.cs
Executable file
|
|
@ -0,0 +1,24 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Chapter
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("length", typeof(double))]
|
||||
public double? Length { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LengthSpecified => Length.HasValue;
|
||||
|
||||
[XmlElement("startcell", typeof(int))]
|
||||
public int? StartCell { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool StartCellSpecified => StartCell.HasValue;
|
||||
}
|
||||
38
src/Tools/Types/LsDvd/LsDvdResult.cs
Executable file
38
src/Tools/Types/LsDvd/LsDvdResult.cs
Executable file
|
|
@ -0,0 +1,38 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
[XmlRoot("lsdvd")]
|
||||
public sealed class LsDvdResult
|
||||
{
|
||||
[XmlElement("device")]
|
||||
public string? Device { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool DeviceSpecified => !string.IsNullOrWhiteSpace(Device);
|
||||
|
||||
[XmlElement("title")]
|
||||
public string? Title { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool TitleSpecified => !string.IsNullOrWhiteSpace(Title);
|
||||
|
||||
[XmlElement("vmg_id")]
|
||||
public string? VmgId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool VmgIdSpecified => !string.IsNullOrWhiteSpace(VmgId);
|
||||
|
||||
[XmlElement("provider_id")]
|
||||
public string? ProviderId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ProviderIdSpecified => !string.IsNullOrWhiteSpace(ProviderId);
|
||||
|
||||
[XmlElement("track")]
|
||||
public List<Track> Tracks { get; } = [];
|
||||
|
||||
[XmlElement("longest_track")]
|
||||
public int? LongestTrack { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LongestTrackSpecified => LongestTrack.HasValue;
|
||||
}
|
||||
34
src/Tools/Types/LsDvd/Subtitle.cs
Executable file
34
src/Tools/Types/LsDvd/Subtitle.cs
Executable file
|
|
@ -0,0 +1,34 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Subtitle
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("langcode")]
|
||||
public string? LangCode { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LangCodeSpecified => !string.IsNullOrWhiteSpace(LangCode);
|
||||
|
||||
[XmlElement("language")]
|
||||
public string? Language { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LanguageSpecified => !string.IsNullOrWhiteSpace(Language);
|
||||
|
||||
[XmlElement("content")]
|
||||
public string? Content { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool ContentSpecified => !string.IsNullOrWhiteSpace(Content);
|
||||
|
||||
[XmlElement("streamid")]
|
||||
public string? StreamId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool StreamIdSpecified => !string.IsNullOrWhiteSpace(StreamId);
|
||||
}
|
||||
84
src/Tools/Types/LsDvd/Track.cs
Executable file
84
src/Tools/Types/LsDvd/Track.cs
Executable file
|
|
@ -0,0 +1,84 @@
|
|||
using System.ComponentModel;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
namespace MediaOrganizer.Tools.Types.LsDvd;
|
||||
|
||||
public sealed class Track
|
||||
{
|
||||
[XmlElement("ix", typeof(int))]
|
||||
public int? Index { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore, MemberNotNullWhen(true, nameof(Index))]
|
||||
public bool IndexSpecified => Index.HasValue;
|
||||
|
||||
[XmlElement("length", typeof(double))]
|
||||
public double? Length { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool LengthSpecified => Length.HasValue;
|
||||
|
||||
[XmlElement("vts_id")]
|
||||
public string? VtsId { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool VtsIdSpecified => !string.IsNullOrWhiteSpace(VtsId);
|
||||
|
||||
[XmlElement("vts", typeof(int))]
|
||||
public int? Vts { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool VtsSpecified => Vts.HasValue;
|
||||
|
||||
[XmlElement("ttn", typeof(int))]
|
||||
public int? Ttn { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool TtnSpecified => Vts.HasValue;
|
||||
|
||||
[XmlElement("fps", typeof(double))]
|
||||
public double? FPS { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool FPSSpecified => FPS.HasValue;
|
||||
|
||||
[XmlElement("format")]
|
||||
public string? Format { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool FormatSpecified => !string.IsNullOrWhiteSpace(Format);
|
||||
|
||||
[XmlElement("aspect")]
|
||||
public string? Aspect { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool AspectSpecified => !string.IsNullOrWhiteSpace(Aspect);
|
||||
|
||||
[XmlElement("width", typeof(int))]
|
||||
public int? Width { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool WidthSpecified => Width.HasValue;
|
||||
|
||||
[XmlElement("height", typeof(int))]
|
||||
public int? Height { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool HeightSpecified => Height.HasValue;
|
||||
|
||||
[XmlElement("df")]
|
||||
public string? Df { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool DfSpecified => !string.IsNullOrWhiteSpace(Df);
|
||||
|
||||
[XmlArray("palette"), XmlArrayItem("color", IsNullable = false)]
|
||||
public List<string> Palette { get; } = [];
|
||||
|
||||
[XmlElement("angles", typeof(int))]
|
||||
public int? Angles { get; [param: NotNull] set; }
|
||||
[Browsable(false), JsonIgnore]
|
||||
public bool AnglesSpecified => Angles.HasValue;
|
||||
|
||||
[XmlElement("audio")]
|
||||
public List<Audio> Audio { get; } = [];
|
||||
|
||||
[XmlElement("chapter")]
|
||||
public List<Chapter> Chapters { get; } = [];
|
||||
|
||||
[XmlElement("cell")]
|
||||
public List<Cell> Cells { get; } = [];
|
||||
|
||||
[XmlElement("subp")]
|
||||
public List<Subtitle> Subtitles { get; } = [];
|
||||
}
|
||||
|
|
@ -39,4 +39,9 @@
|
|||
<PackageReference Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="9.0.10" />
|
||||
<PackageReference Include="System.IO.Pipelines" Version="9.0.10" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\lib\media-organizer.XmlSerializers\media-organizer.XmlSerializers.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
Loading…
Add table
Add a link
Reference in a new issue