diff options
| author | Niels van Velzen <nielsvanvelzen@users.noreply.github.com> | 2026-04-02 22:00:01 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-04-02 22:00:01 +0200 |
| commit | 9e489cd41fb7ca55855d5ce84316c5b966bcc4a7 (patch) | |
| tree | 099831778caef96b7442c55a5c937aa0e57ad6c2 | |
| parent | 397147d0352845afc278e1266cbb2e1b0a1f64b4 (diff) | |
| parent | acaeba11f3d2f61d1b23b36cf3c2d96f6a2e91bc (diff) | |
Add callback for segment data pruning to IMediaSegmentProvider
| -rw-r--r-- | Jellyfin.Server.Implementations/MediaSegments/MediaSegmentManager.cs | 12 | ||||
| -rw-r--r-- | MediaBrowser.Controller/MediaSegments/IMediaSegmentProvider.cs | 12 |
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); } |
