diff --git a/Jellyfin.Plugin.Tvdb/ScheduledTasks/PurgeCacheTask.cs b/Jellyfin.Plugin.Tvdb/ScheduledTasks/PurgeCacheTask.cs
new file mode 100644
index 0000000..f949c4f
--- /dev/null
+++ b/Jellyfin.Plugin.Tvdb/ScheduledTasks/PurgeCacheTask.cs
@@ -0,0 +1,65 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using MediaBrowser.Model.Tasks;
+using Microsoft.Extensions.Logging;
+
+namespace Jellyfin.Plugin.Tvdb.ScheduledTasks
+{
+ ///
+ /// Task to purge TheTVDB plugin cache.
+ ///
+ public class PurgeCacheTask : IScheduledTask
+ {
+ private readonly ILogger _logger;
+ private readonly TvdbClientManager _tvdbClientManager;
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// Instance of the interface.
+ /// Instance of .
+ public PurgeCacheTask(
+ ILogger logger,
+ TvdbClientManager tvdbClientManager)
+ {
+ _logger = logger;
+ _tvdbClientManager = tvdbClientManager;
+ }
+
+ ///
+ public string Name => "Purge TheTVDB plugin cache";
+
+ ///
+ public string Key => "PurgeTheTVDBPluginCache";
+
+ ///
+ public string Description => "Purges the TheTVDB Cache";
+
+ ///
+ public string Category => "TheTVDB";
+
+ ///
+ public Task ExecuteAsync(IProgress progress, CancellationToken cancellationToken)
+ {
+ if (_tvdbClientManager.PurgeCache())
+ {
+ _logger.LogInformation("TheTvdb plugin cache purged successfully");
+ }
+ else
+ {
+ _logger.LogError("TheTvdb plugin cache purge failed");
+ }
+
+ return Task.CompletedTask;
+ }
+
+ ///
+ public IEnumerable GetDefaultTriggers()
+ {
+ return Enumerable.Empty();
+ }
+ }
+}
diff --git a/Jellyfin.Plugin.Tvdb/TvdbClientManager.cs b/Jellyfin.Plugin.Tvdb/TvdbClientManager.cs
index 3865b83..0853e0d 100644
--- a/Jellyfin.Plugin.Tvdb/TvdbClientManager.cs
+++ b/Jellyfin.Plugin.Tvdb/TvdbClientManager.cs
@@ -501,6 +501,23 @@ public async Task> GetArtworkTypeAsync(CancellationTo
}
}
+ ///
+ /// Purge the cache.
+ ///
+ /// True if success else false.
+ public bool PurgeCache()
+ {
+ if (_memoryCache is MemoryCache memoryCache)
+ {
+ memoryCache.Compact(1);
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
///
/// Create an independent ServiceProvider because registering HttpClients directly into Jellyfin
/// causes issues upstream.