From 35af1eb29b9ddd14ff9dea706240b787e28ba65d Mon Sep 17 00:00:00 2001 From: chrispr Date: Wed, 25 Sep 2024 17:06:22 -0400 Subject: [PATCH] Added logic to stop duplicate shows from being announced using redis cache --- AnimeAnnouncer/Cache/TMDBCache.cs | 13 ++++++++++++- AnimeAnnouncer/Program.cs | 12 +++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/AnimeAnnouncer/Cache/TMDBCache.cs b/AnimeAnnouncer/Cache/TMDBCache.cs index 8559f86..8e62cdd 100644 --- a/AnimeAnnouncer/Cache/TMDBCache.cs +++ b/AnimeAnnouncer/Cache/TMDBCache.cs @@ -1,3 +1,4 @@ +using System.Security.Cryptography; using System.Text.Json; using StackExchange.Redis; using TMDbLib.Utilities.Converters; @@ -20,7 +21,7 @@ public class TMDBCache { var db = redis.GetDatabase(); String jsonItem = JsonSerializer.Serialize(item); - db.StringSetAsync(key, jsonItem, CacheExpiration); + await db.StringSetAsync(key, jsonItem, CacheExpiration); } public async Task GetCacheItem(String key) { @@ -32,4 +33,14 @@ public class TMDBCache else return null; } + public async Task KeyExists(String key) + { + var db = redis.GetDatabase(); + return await db.KeyExistsAsync(key); + } + public async Task SetPair(String key, String value) + { + var db = redis.GetDatabase(); + await db.StringSetAsync(key, value); + } } diff --git a/AnimeAnnouncer/Program.cs b/AnimeAnnouncer/Program.cs index 3fd9a88..3f0b782 100644 --- a/AnimeAnnouncer/Program.cs +++ b/AnimeAnnouncer/Program.cs @@ -1,4 +1,5 @@ using System.ComponentModel; +using System.Security.Cryptography; using AnimeAnnouncer.Cache; using AnimeAnnouncer.RSS; using Mastonet; @@ -166,7 +167,16 @@ namespace AnimeAnnouncer return; } - // Announce + // Announce if unique + if(await tmdbCache.KeyExists($"ShowAnnounced-{supposedShowId}")) + { + Console.WriteLine($"{title} has been previously announced, so avoiding announcing it again."); + return; + } + else + { + _ = tmdbCache.SetPair($"ShowAnnounced-{supposedShowId}", "1"); + } if(mastodonClient != null) { try