diff --git a/MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/PluginConfiguration.cs b/MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/PluginConfiguration.cs
index c80d0f7218..6f60d18c33 100644
--- a/MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/PluginConfiguration.cs
+++ b/MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/PluginConfiguration.cs
@@ -53,6 +53,11 @@ public class PluginConfiguration : BasePluginConfiguration
}
}
+ ///
+ /// Gets or sets the cache duration in days for similar item results. A value of 0 disables caching.
+ ///
+ public int SimilarItemsCacheDays { get; set; } = 14;
+
///
/// Gets the algorithm string for the API call.
///
diff --git a/MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/config.html b/MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/config.html
index 3dd1033fdf..8fd792e5ac 100644
--- a/MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/config.html
+++ b/MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/config.html
@@ -30,6 +30,10 @@
Span of time between requests in seconds. The official server is rate limited to one request per second.
+
+
+
Number of days to cache similar artist results from ListenBrainz. Set to 0 to disable caching.
+
@@ -62,6 +66,13 @@
cancelable: false
}));
+ var similarItemsCacheDays = document.querySelector('#similarItemsCacheDays');
+ similarItemsCacheDays.value = config.SimilarItemsCacheDays;
+ similarItemsCacheDays.dispatchEvent(new Event('change', {
+ bubbles: true,
+ cancelable: false
+ }));
+
Dashboard.hideLoadingMsg();
});
});
@@ -74,6 +85,7 @@
config.LabsServer = document.querySelector('#labsServer').value;
config.Algorithm = parseInt(document.querySelector('#algorithm').value, 10);
config.RateLimit = document.querySelector('#rateLimit').value;
+ config.SimilarItemsCacheDays = parseInt(document.querySelector('#similarItemsCacheDays').value, 10);
ApiClient.updatePluginConfiguration(ListenBrainzPluginConfig.uniquePluginId, config).then(Dashboard.processPluginConfigurationUpdateResult);
});
diff --git a/MediaBrowser.Providers/Plugins/ListenBrainz/ListenBrainzSimilarArtistProvider.cs b/MediaBrowser.Providers/Plugins/ListenBrainz/ListenBrainzSimilarArtistProvider.cs
index 3f03a724c5..3dca748d06 100644
--- a/MediaBrowser.Providers/Plugins/ListenBrainz/ListenBrainzSimilarArtistProvider.cs
+++ b/MediaBrowser.Providers/Plugins/ListenBrainz/ListenBrainzSimilarArtistProvider.cs
@@ -40,7 +40,14 @@ public class ListenBrainzSimilarArtistProvider : IRemoteSimilarItemsProvider MetadataPluginType.SimilarityProvider;
///
- public TimeSpan? CacheDuration => TimeSpan.FromDays(14);
+ public TimeSpan? CacheDuration
+ {
+ get
+ {
+ var days = ListenBrainzPlugin.Instance?.Configuration.SimilarItemsCacheDays ?? 0;
+ return days > 0 ? TimeSpan.FromDays(days) : null;
+ }
+ }
///
public async IAsyncEnumerable GetSimilarItemsAsync(
diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Configuration/PluginConfiguration.cs b/MediaBrowser.Providers/Plugins/Tmdb/Configuration/PluginConfiguration.cs
index f11b1d95aa..78405c21fc 100644
--- a/MediaBrowser.Providers/Plugins/Tmdb/Configuration/PluginConfiguration.cs
+++ b/MediaBrowser.Providers/Plugins/Tmdb/Configuration/PluginConfiguration.cs
@@ -77,5 +77,10 @@ namespace MediaBrowser.Providers.Plugins.Tmdb
/// Gets or sets a value indicating the still image size to fetch.
///
public string? StillSize { get; set; }
+
+ ///
+ /// Gets or sets the cache duration in days for similar item results. A value of 0 disables caching.
+ ///
+ public int SimilarItemsCacheDays { get; set; } = 7;
}
}
diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Configuration/config.html b/MediaBrowser.Providers/Plugins/Tmdb/Configuration/config.html
index 89d380ec1f..4048fc1655 100644
--- a/MediaBrowser.Providers/Plugins/Tmdb/Configuration/config.html
+++ b/MediaBrowser.Providers/Plugins/Tmdb/Configuration/config.html
@@ -44,6 +44,13 @@
Hide crew members without profile images.
+
+
Similar Items
+
+
+
Number of days to cache similar item results from TMDb. Set to 0 to disable caching.
+
+
Image Scaling
@@ -161,6 +168,13 @@
cancelable: false
}));
+ var similarItemsCacheDays = document.querySelector('#similarItemsCacheDays');
+ similarItemsCacheDays.value = config.SimilarItemsCacheDays;
+ similarItemsCacheDays.dispatchEvent(new Event('change', {
+ bubbles: true,
+ cancelable: false
+ }));
+
pluginConfig = config;
configureImageScaling();
});
@@ -179,6 +193,7 @@
config.MaxCrewMembers = document.querySelector('#maxCrewMembers').value;
config.HideMissingCastMembers = document.querySelector('#hideMissingCastMembers').checked;
config.HideMissingCrewMembers = document.querySelector('#hideMissingCrewMembers').checked;
+ config.SimilarItemsCacheDays = parseInt(document.querySelector('#similarItemsCacheDays').value, 10);
config.PosterSize = document.querySelector('#selectPosterSize').value;
config.BackdropSize = document.querySelector('#selectBackdropSize').value;
config.LogoSize = document.querySelector('#selectLogoSize').value;
diff --git a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieSimilarProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieSimilarProvider.cs
index 8cf4e3b6f5..5206de78ce 100644
--- a/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieSimilarProvider.cs
+++ b/MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieSimilarProvider.cs
@@ -37,7 +37,14 @@ public class TmdbMovieSimilarProvider : IRemoteSimilarItemsProvider
public MetadataPluginType Type => MetadataPluginType.SimilarityProvider;
///
- public TimeSpan? CacheDuration => TimeSpan.FromDays(7);
+ public TimeSpan? CacheDuration
+ {
+ get
+ {
+ var days = Plugin.Instance?.Configuration.SimilarItemsCacheDays ?? 0;
+ return days > 0 ? TimeSpan.FromDays(days) : null;
+ }
+ }
///
public async IAsyncEnumerable GetSimilarItemsAsync(
diff --git a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesSimilarProvider.cs b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesSimilarProvider.cs
index e713c37be8..c85718b993 100644
--- a/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesSimilarProvider.cs
+++ b/MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesSimilarProvider.cs
@@ -37,7 +37,14 @@ public class TmdbSeriesSimilarProvider : IRemoteSimilarItemsProvider
public MetadataPluginType Type => MetadataPluginType.SimilarityProvider;
///
- public TimeSpan? CacheDuration => TimeSpan.FromDays(7);
+ public TimeSpan? CacheDuration
+ {
+ get
+ {
+ var days = Plugin.Instance?.Configuration.SimilarItemsCacheDays ?? 0;
+ return days > 0 ? TimeSpan.FromDays(days) : null;
+ }
+ }
///
public async IAsyncEnumerable GetSimilarItemsAsync(