diff options
| author | Bond-009 <bond.009@outlook.com> | 2026-06-07 20:28:34 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-07 20:28:34 +0200 |
| commit | ec43ea156e11705227eccbe760e2510a28d774a4 (patch) | |
| tree | 2db01cf81a94d8eaf527613576c69141ae6556bb /Emby.Server.Implementations/Library/ExternalDataManager.cs | |
| parent | cbf284d2299f2d225119e738d2794cd891e13335 (diff) | |
| parent | 8aaea6ea52950a2791cc9d519944e7a2136339ef (diff) | |
Merge pull request #16941 from Shadowghost/fix-external-data-pruning
Fix external data pruning on item deletion
Diffstat (limited to 'Emby.Server.Implementations/Library/ExternalDataManager.cs')
| -rw-r--r-- | Emby.Server.Implementations/Library/ExternalDataManager.cs | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/Emby.Server.Implementations/Library/ExternalDataManager.cs b/Emby.Server.Implementations/Library/ExternalDataManager.cs index 4ad0f999bf..2c18e56df7 100644 --- a/Emby.Server.Implementations/Library/ExternalDataManager.cs +++ b/Emby.Server.Implementations/Library/ExternalDataManager.cs @@ -1,6 +1,5 @@ using System; using System.IO; -using System.Linq; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller.Chapters; @@ -52,26 +51,33 @@ public class ExternalDataManager : IExternalDataManager /// <inheritdoc/> public async Task DeleteExternalItemDataAsync(BaseItem item, CancellationToken cancellationToken) { - var validPaths = _pathManager.GetExtractedDataPaths(item).Where(Directory.Exists).ToList(); - var itemId = item.Id; - if (validPaths.Count > 0) - { - foreach (var path in validPaths) - { - try - { - Directory.Delete(path, true); - } - catch (Exception ex) - { - _logger.LogWarning("Unable to prune external item data at {Path}: {Exception}", path, ex); - } - } - } + DeleteExternalItemFiles(item); + var itemId = item.Id; await _keyframeManager.DeleteKeyframeDataAsync(itemId, cancellationToken).ConfigureAwait(false); await _mediaSegmentManager.DeleteSegmentsAsync(itemId, cancellationToken).ConfigureAwait(false); await _trickplayManager.DeleteTrickplayDataAsync(itemId, cancellationToken).ConfigureAwait(false); await _chapterManager.DeleteChapterDataAsync(itemId, cancellationToken).ConfigureAwait(false); } + + /// <inheritdoc/> + public void DeleteExternalItemFiles(BaseItem item) + { + foreach (var path in _pathManager.GetExtractedDataPaths(item)) + { + if (!Directory.Exists(path)) + { + continue; + } + + try + { + Directory.Delete(path, true); + } + catch (Exception ex) + { + _logger.LogWarning("Unable to prune external item data at {Path}: {Exception}", path, ex); + } + } + } } |
