From d07e90cf331db2e8251d7825e5ee86ecf9a22434 Mon Sep 17 00:00:00 2001 From: Felix Date: Sat, 13 Dec 2025 12:35:06 +0200 Subject: [PATCH] feat: Update fundub response models to use `translations` and add new fields, adapting parsing logic in invoke and controller. --- AnimeON/AnimeONInvoke.cs | 15 ++++++++- AnimeON/Controller.cs | 15 ++++++++- AnimeON/Models/Models.cs | 70 +++++++++++++++++++++++++++++++++++++--- 3 files changed, 93 insertions(+), 7 deletions(-) diff --git a/AnimeON/AnimeONInvoke.cs b/AnimeON/AnimeONInvoke.cs index 999ace5..6b6461c 100644 --- a/AnimeON/AnimeONInvoke.cs +++ b/AnimeON/AnimeONInvoke.cs @@ -93,7 +93,20 @@ namespace AnimeON return null; var fundubsResponse = JsonSerializer.Deserialize(fundubsJson); - return fundubsResponse?.FunDubs; + if (fundubsResponse?.Translations == null || fundubsResponse.Translations.Count == 0) + return null; + + var fundubs = new List(); + foreach (var translation in fundubsResponse.Translations) + { + var fundubModel = new FundubModel + { + Fundub = translation.Translation, + Player = translation.Player + }; + fundubs.Add(fundubModel); + } + return fundubs; } public async Task GetEpisodes(int animeId, int playerId, int fundubId) diff --git a/AnimeON/Controller.cs b/AnimeON/Controller.cs index f0035ec..84d0c68 100644 --- a/AnimeON/Controller.cs +++ b/AnimeON/Controller.cs @@ -187,7 +187,20 @@ namespace AnimeON.Controllers return null; var fundubsResponse = JsonSerializer.Deserialize(fundubsJson); - return fundubsResponse?.FunDubs; + if (fundubsResponse?.Translations == null || fundubsResponse.Translations.Count == 0) + return null; + + var fundubs = new List(); + foreach (var translation in fundubsResponse.Translations) + { + var fundubModel = new FundubModel + { + Fundub = translation.Translation, + Player = translation.Player + }; + fundubs.Add(fundubModel); + } + return fundubs; } async Task GetEpisodes(OnlinesSettings init, int animeId, int playerId, int fundubId) diff --git a/AnimeON/Models/Models.cs b/AnimeON/Models/Models.cs index 67e7765..f77136c 100644 --- a/AnimeON/Models/Models.cs +++ b/AnimeON/Models/Models.cs @@ -35,14 +35,14 @@ namespace AnimeON.Models public class FundubsResponseModel { - [JsonPropertyName("funDubs")] - public List FunDubs { get; set; } + [JsonPropertyName("translations")] + public List Translations { get; set; } } - public class FundubModel + public class TranslationModel { - [JsonPropertyName("fundub")] - public Fundub Fundub { get; set; } + [JsonPropertyName("translation")] + public Fundub Translation { get; set; } [JsonPropertyName("player")] public List Player { get; set; } @@ -55,6 +55,57 @@ namespace AnimeON.Models [JsonPropertyName("name")] public string Name { get; set; } + + [JsonPropertyName("isSub")] + public bool IsSub { get; set; } + + [JsonPropertyName("synonyms")] + public List Synonyms { get; set; } + + [JsonPropertyName("studios")] + public List Studios { get; set; } + } + + public class Studio + { + [JsonPropertyName("slug")] + public string Slug { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("description")] + public string Description { get; set; } + + [JsonPropertyName("team")] + public string Team { get; set; } + + [JsonPropertyName("telegram")] + public string Telegram { get; set; } + + [JsonPropertyName("youtube")] + public string Youtube { get; set; } + + [JsonPropertyName("patreon")] + public string Patreon { get; set; } + + [JsonPropertyName("buymeacoffee")] + public string BuyMeACoffee { get; set; } + + [JsonPropertyName("avatar")] + public Avatar Avatar { get; set; } + } + + public class Avatar + { + [JsonPropertyName("id")] + public int Id { get; set; } + + [JsonPropertyName("original")] + public string Original { get; set; } + + [JsonPropertyName("preview")] + public string Preview { get; set; } } public class Player @@ -64,6 +115,15 @@ namespace AnimeON.Models [JsonPropertyName("id")] public int Id { get; set; } + + [JsonPropertyName("episodesCount")] + public int EpisodesCount { get; set; } + } + + public class FundubModel + { + public Fundub Fundub { get; set; } + public List Player { get; set; } } public class EpisodeModel