aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShadowghost <Ghost_of_Stone@web.de>2026-05-14 07:56:19 +0200
committerShadowghost <Ghost_of_Stone@web.de>2026-05-14 07:56:19 +0200
commitae7a8c418b980b84a65b955b151c5ece20523559 (patch)
tree0cd9a3a159fe6d14a1a2b7ee8674c5f44861ab29
parentb1b45199444e369b12844661f09d1cd0830d25f7 (diff)
Make Cache duration user configurable
-rw-r--r--MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/PluginConfiguration.cs5
-rw-r--r--MediaBrowser.Providers/Plugins/ListenBrainz/Configuration/config.html12
-rw-r--r--MediaBrowser.Providers/Plugins/ListenBrainz/ListenBrainzSimilarArtistProvider.cs9
-rw-r--r--MediaBrowser.Providers/Plugins/Tmdb/Configuration/PluginConfiguration.cs5
-rw-r--r--MediaBrowser.Providers/Plugins/Tmdb/Configuration/config.html15
-rw-r--r--MediaBrowser.Providers/Plugins/Tmdb/Movies/TmdbMovieSimilarProvider.cs9
-rw-r--r--MediaBrowser.Providers/Plugins/Tmdb/TV/TmdbSeriesSimilarProvider.cs9
7 files changed, 61 insertions, 3 deletions
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
@@ -54,6 +54,11 @@ public class PluginConfiguration : BasePluginConfiguration
}
/// <summary>
+ /// Gets or sets the cache duration in days for similar item results. A value of 0 disables caching.
+ /// </summary>
+ public int SimilarItemsCacheDays { get; set; } = 14;
+
+ /// <summary>
/// Gets the algorithm string for the API call.
/// </summary>
public string AlgorithmString => Algorithm.ToApiString();
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 @@
<input is="emby-input" type="number" id="rateLimit" required pattern="[0-9]*" min="0" max="10" step=".01" label="Rate Limit (seconds)" />
<div class="fieldDescription">Span of time between requests in seconds. The official server is rate limited to one request per second.</div>
</div>
+ <div class="inputContainer">
+ <input is="emby-input" type="number" id="similarItemsCacheDays" required pattern="[0-9]*" min="0" max="365" label="Cache duration (days)" />
+ <div class="fieldDescription">Number of days to cache similar artist results from ListenBrainz. Set to 0 to disable caching.</div>
+ </div>
<br />
<div>
<button is="emby-button" type="submit" class="raised button-submit block"><span>Save</span></button>
@@ -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<Mus
public MetadataPluginType Type => MetadataPluginType.SimilarityProvider;
/// <inheritdoc/>
- public TimeSpan? CacheDuration => TimeSpan.FromDays(14);
+ public TimeSpan? CacheDuration
+ {
+ get
+ {
+ var days = ListenBrainzPlugin.Instance?.Configuration.SimilarItemsCacheDays ?? 0;
+ return days > 0 ? TimeSpan.FromDays(days) : null;
+ }
+ }
/// <inheritdoc/>
public async IAsyncEnumerable<SimilarItemReference> 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.
/// </summary>
public string? StillSize { get; set; }
+
+ /// <summary>
+ /// Gets or sets the cache duration in days for similar item results. A value of 0 disables caching.
+ /// </summary>
+ 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 @@
<span>Hide crew members without profile images.</span>
</label>
</div>
+ <div class="verticalSection">
+ <h2>Similar Items</h2>
+ <div class="inputContainer">
+ <input is="emby-input" type="number" id="similarItemsCacheDays" pattern="[0-9]*" required min="0" max="365" label="Cache duration (days)" />
+ <div class="fieldDescription">Number of days to cache similar item results from TMDb. Set to 0 to disable caching.</div>
+ </div>
+ </div>
<div class="verticalSection verticalSection-extrabottompadding">
<h2>Image Scaling</h2>
<div class="selectContainer">
@@ -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<Movie>
public MetadataPluginType Type => MetadataPluginType.SimilarityProvider;
/// <inheritdoc/>
- public TimeSpan? CacheDuration => TimeSpan.FromDays(7);
+ public TimeSpan? CacheDuration
+ {
+ get
+ {
+ var days = Plugin.Instance?.Configuration.SimilarItemsCacheDays ?? 0;
+ return days > 0 ? TimeSpan.FromDays(days) : null;
+ }
+ }
/// <inheritdoc/>
public async IAsyncEnumerable<SimilarItemReference> 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<Series>
public MetadataPluginType Type => MetadataPluginType.SimilarityProvider;
/// <inheritdoc/>
- public TimeSpan? CacheDuration => TimeSpan.FromDays(7);
+ public TimeSpan? CacheDuration
+ {
+ get
+ {
+ var days = Plugin.Instance?.Configuration.SimilarItemsCacheDays ?? 0;
+ return days > 0 ? TimeSpan.FromDays(days) : null;
+ }
+ }
/// <inheritdoc/>
public async IAsyncEnumerable<SimilarItemReference> GetSimilarItemsAsync(