ExternalDataManager.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System.IO;
  2. using System.Linq;
  3. using System.Threading;
  4. using System.Threading.Tasks;
  5. using MediaBrowser.Controller.Entities;
  6. using MediaBrowser.Controller.IO;
  7. using MediaBrowser.Controller.MediaSegments;
  8. using MediaBrowser.Controller.Trickplay;
  9. namespace Emby.Server.Implementations.Library;
  10. /// <summary>
  11. /// IExternalDataManager implementation.
  12. /// </summary>
  13. public class ExternalDataManager : IExternalDataManager
  14. {
  15. private readonly IKeyframeManager _keyframeManager;
  16. private readonly IMediaSegmentManager _mediaSegmentManager;
  17. private readonly IPathManager _pathManager;
  18. private readonly ITrickplayManager _trickplayManager;
  19. /// <summary>
  20. /// Initializes a new instance of the <see cref="ExternalDataManager"/> class.
  21. /// </summary>
  22. /// <param name="keyframeManager">The keyframe manager.</param>
  23. /// <param name="mediaSegmentManager">The media segment manager.</param>
  24. /// <param name="pathManager">The path manager.</param>
  25. /// <param name="trickplayManager">The trickplay manager.</param>
  26. public ExternalDataManager(
  27. IKeyframeManager keyframeManager,
  28. IMediaSegmentManager mediaSegmentManager,
  29. IPathManager pathManager,
  30. ITrickplayManager trickplayManager)
  31. {
  32. _keyframeManager = keyframeManager;
  33. _mediaSegmentManager = mediaSegmentManager;
  34. _pathManager = pathManager;
  35. _trickplayManager = trickplayManager;
  36. }
  37. /// <inheritdoc/>
  38. public async Task DeleteExternalItemDataAsync(BaseItem item, CancellationToken cancellationToken)
  39. {
  40. var validPaths = _pathManager.GetExtractedDataPaths(item).Where(Directory.Exists).ToList();
  41. var itemId = item.Id;
  42. if (validPaths.Count > 0)
  43. {
  44. foreach (var path in validPaths)
  45. {
  46. Directory.Delete(path, true);
  47. }
  48. }
  49. await _keyframeManager.DeleteKeyframeDataAsync(itemId, cancellationToken).ConfigureAwait(false);
  50. await _mediaSegmentManager.DeleteSegmentsAsync(itemId, cancellationToken).ConfigureAwait(false);
  51. await _trickplayManager.DeleteTrickplayDataAsync(itemId, cancellationToken).ConfigureAwait(false);
  52. }
  53. }