aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels van Velzen <nielsvanvelzen@users.noreply.github.com>2026-04-02 22:00:01 +0200
committerGitHub <noreply@github.com>2026-04-02 22:00:01 +0200
commit9e489cd41fb7ca55855d5ce84316c5b966bcc4a7 (patch)
tree099831778caef96b7442c55a5c937aa0e57ad6c2
parent397147d0352845afc278e1266cbb2e1b0a1f64b4 (diff)
parentacaeba11f3d2f61d1b23b36cf3c2d96f6a2e91bc (diff)
Merge pull request #16419 from Shadowghost/extend-segment-interfaceHEADmaster
Add callback for segment data pruning to IMediaSegmentProvider
-rw-r--r--Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs12
-rw-r--r--MediaBrowser.Controller/MediaSegments/IMediaSegmentProvider.cs12
2 files changed, 23 insertions, 1 deletions
diff --git a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs
index d00c87463c..c514735688 100644
--- a/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs
+++ b/Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs
@@ -182,6 +182,18 @@ public class MediaSegmentManager : IMediaSegmentManager
/// <inheritdoc />
public async Task DeleteSegmentsAsync(Guid itemId, CancellationToken cancellationToken)
{
+ foreach (var provider in _segmentProviders)
+ {
+ try
+ {
+ await provider.CleanupExtractedData(itemId, cancellationToken).ConfigureAwait(false);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Provider {ProviderName} failed to clean up extracted data for item {ItemId}", provider.Name, itemId);
+ }
+ }
+
var db = await _dbProvider.CreateDbContextAsync(cancellationToken).ConfigureAwait(false);
await using (db.ConfigureAwait(false))
{
diff --git a/MediaBrowser.Controller/MediaSegments/IMediaSegmentProvider.cs b/MediaBrowser.Controller/MediaSegments/IMediaSegmentProvider.cs
index 5a6d15d781..54da218530 100644
--- a/MediaBrowser.Controller/MediaSegments/IMediaSegmentProvider.cs
+++ b/MediaBrowser.Controller/MediaSegments/IMediaSegmentProvider.cs
@@ -1,4 +1,5 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MediaBrowser.Controller.Entities;
@@ -31,4 +32,13 @@ public interface IMediaSegmentProvider
/// <param name="item">The base item to extract segments from.</param>
/// <returns>True if item is supported, otherwise false.</returns>
ValueTask<bool> Supports(BaseItem item);
+
+ /// <summary>
+ /// Called when extracted segment data for an item is being pruned.
+ /// Providers should delete any cached analysis data they hold for the given item.
+ /// </summary>
+ /// <param name="itemId">The item whose data is being pruned.</param>
+ /// <param name="cancellationToken">Abort token.</param>
+ /// <returns>A task representing the asynchronous cleanup operation.</returns>
+ Task CleanupExtractedData(Guid itemId, CancellationToken cancellationToken);
}