using System.Collections.ObjectModel; using System.Text.Json.Serialization; namespace Jellyfin.Plugin.JRay.Models; /// Cut fingerprint (server spec §2, §3). public class JmanifestCut { /// Gets or sets the decoded duration the timings came from. [JsonPropertyName("runtime_sec")] public double RuntimeSec { get; set; } /// Gets or sets the container duration, if it differs. [JsonPropertyName("container_duration_sec")] public double? ContainerDurationSec { get; set; } /// /// Gets or sets the OpenSubtitles file hash, as a server may report it. /// /// /// Read-only in practice: the plugin never sends one. The file-hash /// match tier is withdrawn on legal grounds — see /// — because a file hash identifies the /// exact release a user holds rather than the cut the timings describe. /// [JsonPropertyName("video_hash")] public string? VideoHash { get; set; } /// Gets or sets the version-prefixed spectral-peak signature. [JsonPropertyName("audio_signature")] public string? AudioSignature { get; set; } }