From 9d2588af86d288c238fe52b0fefbbb93e6714bd4 Mon Sep 17 00:00:00 2001 From: Felix Date: Sun, 19 Oct 2025 11:45:17 +0300 Subject: [PATCH] Refactor AnimeON serial handling with aggregated voice structure and improved logging --- AnimeON/Models/AnimeONAggregatedStructure.cs | 58 ++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 AnimeON/Models/AnimeONAggregatedStructure.cs diff --git a/AnimeON/Models/AnimeONAggregatedStructure.cs b/AnimeON/Models/AnimeONAggregatedStructure.cs new file mode 100644 index 0000000..d3f3f32 --- /dev/null +++ b/AnimeON/Models/AnimeONAggregatedStructure.cs @@ -0,0 +1,58 @@ +using System.Collections.Generic; + +namespace AnimeON.Models +{ + /// Aggregated structure for AnimeON serial content to match Lampac standard navigation. + public class AnimeONAggregatedStructure + { + /// Anime identifier from AnimeON API. + public int AnimeId { get; set; } + + /// Season number. + public int Season { get; set; } + + /// Voices mapped by display key e.g. "[Moon] AniUA". + public Dictionary Voices { get; set; } = new Dictionary(); + } + + /// Voice information for a specific player/studio combination within a season. + public class AnimeONVoiceInfo + { + /// Studio/voice name (e.g., AniUA). + public string Name { get; set; } + + /// Player type ("moon" or "ashdi"). + public string PlayerType { get; set; } + + /// Display name (e.g., "[Moon] AniUA"). + public string DisplayName { get; set; } + + /// Player identifier from API. + public int PlayerId { get; set; } + + /// Fundub identifier from API. + public int FundubId { get; set; } + + /// Flat list of episodes for the selected season. + public List Episodes { get; set; } = new List(); + } + + /// Episode information within a voice. + public class AnimeONEpisodeInfo + { + /// Episode number. + public int Number { get; set; } + + /// Episode title. + public string Title { get; set; } + + /// Primary HLS link if available. + public string Hls { get; set; } + + /// Fallback video URL (iframe or direct). + public string VideoUrl { get; set; } + + /// Episode identifier from API. + public int EpisodeId { get; set; } + } +} \ No newline at end of file