diff --git a/AnimeAnnouncer.Web/Pages/Index.cshtml.cs b/AnimeAnnouncer.Web/Pages/Index.cshtml.cs
index ab132af..571443e 100644
--- a/AnimeAnnouncer.Web/Pages/Index.cshtml.cs
+++ b/AnimeAnnouncer.Web/Pages/Index.cshtml.cs
@@ -43,7 +43,7 @@ public class IndexModel : PageModel
TMDBCacheItem? cacheItem = null;
try
{
- cacheItem = await _tmdbCache.GetCacheItem($"ShowCache-{airingItem.Title}");
+ cacheItem = await _tmdbCache.GetCacheItem($"ShowCache-{airingItem.Title}");
}
catch (Exception ex)
{
@@ -68,7 +68,7 @@ public class IndexModel : PageModel
}).ToList();
AiringShows = displayable
- .Where(x => x.EffectiveLastAirDate.HasValue && x.EffectiveLastAirDate.Value > DateTime.Now)
+ .Where(x => x.EffectiveLastAirDate.HasValue && x.EffectiveLastAirDate.Value.Date >= DateTime.Now.Date)
.OrderBy(x => x.EffectiveLastAirDate)
.ThenBy(x => x.Title)
.ToList();
@@ -107,8 +107,8 @@ public class IndexModel : PageModel
return CachedDetails.LatestSeasonPosterPath;
if (!string.IsNullOrWhiteSpace(CachedDetails?.PosterPath))
return CachedDetails.PosterPath;
- if (!string.IsNullOrWhiteSpace(CachedDetails?.AnilistPosterPath))
- return CachedDetails.AnilistPosterPath;
+ //if (!string.IsNullOrWhiteSpace(CachedDetails?.AnilistPosterPath))
+ // return CachedDetails.AnilistPosterPath;
return null;
}
}
diff --git a/AnimeAnnouncer/Cache/TMDBCache.cs b/AnimeAnnouncer/Cache/TMDBCache.cs
index 549c1f1..2d9729f 100644
--- a/AnimeAnnouncer/Cache/TMDBCache.cs
+++ b/AnimeAnnouncer/Cache/TMDBCache.cs
@@ -17,22 +17,22 @@ public class TMDBCache
CacheExpiration = TimeSpan.FromDays(3);
redis = ConnectionMultiplexer.Connect(redisConnectionString);
}
- public async Task SetCacheItem(String key, TMDBCacheItem item)
+ public async Task SetCacheItem(String key, T item)
{
var db = redis.GetDatabase();
String jsonItem = JsonSerializer.Serialize(item);
await db.StringSetAsync(key, jsonItem, CacheExpiration);
}
- public async Task GetCacheItem(String key)
+ public async Task GetCacheItem(String key)
{
var db = redis.GetDatabase();
- String jsonItem = await db.StringGetAsync(key);
+ String? jsonItem = await db.StringGetAsync(key);
if (!String.IsNullOrEmpty(jsonItem))
- return JsonSerializer.Deserialize(jsonItem);
+ return JsonSerializer.Deserialize(jsonItem);
else
- return null;
+ return default;
}
public async Task RemoveCacheItem(String key)
diff --git a/AnimeAnnouncer/Cache/TMDBCacheItem.cs b/AnimeAnnouncer/Cache/TMDBCacheItem.cs
index 49a3f5d..44be978 100644
--- a/AnimeAnnouncer/Cache/TMDBCacheItem.cs
+++ b/AnimeAnnouncer/Cache/TMDBCacheItem.cs
@@ -21,7 +21,9 @@ namespace AnimeAnnouncer.Cache
public int? LatestEpisodeNumber { get; set; }
public Boolean? AnilistPopulated { get; set; }
- public String? AnilistPosterPath { get; set; }
+
+ public DateTime? Updated { get; set; }
+
}
}
\ No newline at end of file
diff --git a/AnimeAnnouncer/Program.cs b/AnimeAnnouncer/Program.cs
index a5526d0..d20b9c6 100644
--- a/AnimeAnnouncer/Program.cs
+++ b/AnimeAnnouncer/Program.cs
@@ -145,11 +145,14 @@ namespace AnimeAnnouncer
DateTime? lastAirDate = null;
TMDBCacheItem? cachedShow = null;
+
+ latestEpisodeNumber = int.Parse(episode);
try
{
- cachedShow = await tmdbCache.GetCacheItem($"ShowCache-{title}");
- if(cachedShow != null)
+ cachedShow = await tmdbCache.GetCacheItem($"ShowCache-{title}");
+
+ if(cachedShow != null && (cachedShow.Updated.HasValue && DateTime.Now.Subtract(cachedShow.Updated.Value).Days < 6))
{
Console.WriteLine("Cache hit");
latestSeasonNumber = cachedShow.LatestSeasonNumber;
@@ -194,7 +197,7 @@ namespace AnimeAnnouncer
lastEpisodeNumber = latestSeason.EpisodeCount;
- latestEpisodeNumber = int.Parse(episode);
+
//if nearing the end of a season, confirm it's marked with season finale
@@ -224,21 +227,32 @@ namespace AnimeAnnouncer
{
try
{
- Console.WriteLine("Looking up Anilist title " + title);
- var anilistMedia = await anilistClient.RetrieveAiringShowInformation(title);
- if (anilistMedia != null)
+ AnilistCacheItem? anilistCacheItem = await tmdbCache.GetCacheItem($"AnilistCache-{title}");
+ if (anilistCacheItem == null)
{
- if (anilistMedia.Episodes.HasValue && anilistMedia.Episodes != lastEpisodeNumber)
+ Console.WriteLine("Looking up Anilist title " + title);
+ var anilistMedia = await anilistClient.RetrieveAiringShowInformation(title);
+ if (anilistMedia != null)
+ {
+ anilistCacheItem = AnilistCacheItem.FromMedia(anilistMedia);
+ anilistCacheItem.Updated = DateTime.Now;
+ _ = tmdbCache.SetCacheItem($"AnilistCache-{title}", anilistCacheItem);
+ }
+ else
+ Console.WriteLine("0 anilist results found");
+ }
+
+ if (anilistCacheItem != null)
+ {
+ if (anilistCacheItem.Episodes.HasValue && anilistCacheItem.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;
+ $"Overriding episode count of {lastEpisodeNumber} using Anilist's showID {anilistCacheItem.ShowID} titled {anilistCacheItem.EnglishTitle} with {anilistCacheItem.Episodes} episodes.");
+ lastEpisodeNumber = anilistCacheItem.Episodes.Value;
}
- anilistPosterPath = anilistMedia.BannerImageUrl?.ToString();
+ anilistPosterPath = anilistCacheItem.BannerImageUrl;
}
- else
- Console.WriteLine("0 anilist results found");
}
catch (Exception ex)
{
@@ -276,7 +290,7 @@ namespace AnimeAnnouncer
LastAirDate = lastAirDate,
LatestEpisodeNumber = latestEpisodeNumber,
AnilistPopulated = anilistPosterPath != null,
- AnilistPosterPath = anilistPosterPath
+ Updated = DateTime.Now
};
_ = tmdbCache.SetCacheItem($"ShowCache-{title}", cachedShow);
Console.WriteLine($"{title} Added to cache");