using System.Collections.ObjectModel; using System.Text.Json.Serialization; namespace Jellyfin.Plugin.JRay.Models; /// /// One actor entry in a , with the time windows during /// which they are present in the scene. /// /// /// "Present in the scene", not "visible on screen": a window is a claim about /// scene membership, so an actor who turns away or is off-camera during a /// reverse shot is still present. Two windows mean a genuine departure and /// return, not a break in detection. /// /// Identity is public identifiers — never a name alone, which is ambiguous and /// unstable. jellyfin_id is preferred locally and stripped on /// contribution, being meaningless outside the instance that produced it. /// // TRACES: JR-004, JR-007 | SR-001, SR-002 public class TruthActor { /// /// Gets or sets the actor's display name. /// [JsonPropertyName("name")] public string Name { get; set; } = string.Empty; /// /// Gets or sets the actor's IMDB person id (e.g. "nm0000158"), or "" if unresolved. /// [JsonPropertyName("imdb_id")] public string ImdbId { get; set; } = string.Empty; /// /// Gets or sets the actor's TMDB person id, or "" if unresolved. /// [JsonPropertyName("tmdb_id")] public string TmdbId { get; set; } = string.Empty; /// /// Gets or sets the actor's Jellyfin Person item GUID, or "" if unresolved. /// [JsonPropertyName("jellyfin_id")] public string JellyfinId { get; set; } = string.Empty; /// /// Gets the list of [start_sec, end_sec] windows during which the actor is in the scene. /// [JsonPropertyName("scenes")] [JsonObjectCreationHandling(JsonObjectCreationHandling.Populate)] public Collection Scenes { get; } = new(); }