From 2198f6ad848b8e441f20fcb989a9adc43e2a3c47 Mon Sep 17 00:00:00 2001 From: chrispr Date: Sun, 13 Sep 2026 15:05:18 -0400 Subject: [PATCH] Added support for Anilist lookups and date confirmations for ending series --- AnimeAnnouncer/Anilist.cs | 4 ++-- AnimeAnnouncer/AnimeAnnouncer.csproj | 1 + AnimeAnnouncer/Program.cs | 27 ++++++++++++++++++++------- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/AnimeAnnouncer/Anilist.cs b/AnimeAnnouncer/Anilist.cs index 7c97119..95efc8f 100644 --- a/AnimeAnnouncer/Anilist.cs +++ b/AnimeAnnouncer/Anilist.cs @@ -19,7 +19,7 @@ public class Anilist Task.WaitAll(Authenticate()); } - public async Task RetrieveAiringShowInformation(String showName) + public async Task RetrieveAiringShowInformation(String showName) { var results = await client.SearchMediaAsync(new SearchMediaFilter { @@ -34,7 +34,7 @@ public class Anilist } }); int currentYear = DateTime.Now.Year; - var result = results.Data.Where(p => p.SeasonYear >= currentYear).OrderByDescending(p => p.StartDate).First(); + var result = results.Data.Where(p => p.SeasonYear >= currentYear).OrderByDescending(p => p.StartDate.ToDateTime()).ThenByDescending(p => p.Id).FirstOrDefault(); return result; } diff --git a/AnimeAnnouncer/AnimeAnnouncer.csproj b/AnimeAnnouncer/AnimeAnnouncer.csproj index f1584a2..5d49f0f 100644 --- a/AnimeAnnouncer/AnimeAnnouncer.csproj +++ b/AnimeAnnouncer/AnimeAnnouncer.csproj @@ -8,6 +8,7 @@ + diff --git a/AnimeAnnouncer/Program.cs b/AnimeAnnouncer/Program.cs index 37fca19..7873e66 100644 --- a/AnimeAnnouncer/Program.cs +++ b/AnimeAnnouncer/Program.cs @@ -220,15 +220,28 @@ namespace AnimeAnnouncer string? anilistPosterPath = null; if (latestEpisodeNumber > 3 && anilistClient != null) { - Console.WriteLine("Looking up Anilist title " + title); - var anilistMedia = await anilistClient.RetrieveAiringShowInformation(title); - if (anilistMedia.Episodes.HasValue && anilistMedia.Episodes != lastEpisodeNumber) + try { - Console.WriteLine($"Overriding episode count of {lastEpisodeNumber} using Anilist's showID {anilistMedia.Id} titled {anilistMedia.Title.EnglishTitle} with {anilistMedia.Episodes} episodes."); - lastEpisodeNumber = anilistMedia.Episodes.Value; - } + Console.WriteLine("Looking up Anilist title " + title); + var anilistMedia = await anilistClient.RetrieveAiringShowInformation(title); + if (anilistMedia != null) + { + if (anilistMedia.Episodes.HasValue && anilistMedia.Episodes != lastEpisodeNumber) + { + Console.WriteLine( + $"Overriding episode count of {lastEpisodeNumber} using Anilist's showID {anilistMedia.Id} titled {anilistMedia.Title.EnglishTitle} with {anilistMedia.Episodes} episodes."); + lastEpisodeNumber = anilistMedia.Episodes.Value; + } - anilistPosterPath = anilistMedia.BannerImageUrl?.ToString(); + anilistPosterPath = anilistMedia.BannerImageUrl?.ToString(); + } + else + Console.WriteLine("0 anilist results found"); + } + catch (Exception ex) + { + Console.WriteLine($"An error occurred during Anilist lookup: {ex}"); + } } if(showResult.Seasons.Count > 1)