SortingScheduledTask.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. using MediaBrowser.Common.IO;
  2. using MediaBrowser.Common.ScheduledTasks;
  3. using MediaBrowser.Controller.Configuration;
  4. using MediaBrowser.Controller.Library;
  5. using MediaBrowser.Controller.Persistence;
  6. using MediaBrowser.Model.Logging;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Threading;
  10. using System.Threading.Tasks;
  11. namespace MediaBrowser.Server.Implementations.FileSorting
  12. {
  13. public class SortingScheduledTask : IScheduledTask, IConfigurableScheduledTask
  14. {
  15. private readonly IServerConfigurationManager _config;
  16. private readonly ILogger _logger;
  17. private readonly ILibraryManager _libraryManager;
  18. private readonly IFileSystem _fileSystem;
  19. private readonly IFileSortingRepository _iFileSortingRepository;
  20. public SortingScheduledTask(IServerConfigurationManager config, ILogger logger, ILibraryManager libraryManager, IFileSystem fileSystem, IFileSortingRepository iFileSortingRepository)
  21. {
  22. _config = config;
  23. _logger = logger;
  24. _libraryManager = libraryManager;
  25. _fileSystem = fileSystem;
  26. _iFileSortingRepository = iFileSortingRepository;
  27. }
  28. public string Name
  29. {
  30. get { return "Sort new files"; }
  31. }
  32. public string Description
  33. {
  34. get { return "Processes new files available in the configured sorting location."; }
  35. }
  36. public string Category
  37. {
  38. get { return "Library"; }
  39. }
  40. public Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
  41. {
  42. return new TvFileSorter(_libraryManager, _logger, _fileSystem, _iFileSortingRepository).Sort(_config.Configuration.TvFileSortingOptions, cancellationToken, progress);
  43. }
  44. public IEnumerable<ITaskTrigger> GetDefaultTriggers()
  45. {
  46. return new ITaskTrigger[]
  47. {
  48. new IntervalTrigger{ Interval = TimeSpan.FromMinutes(5)}
  49. };
  50. }
  51. public bool IsHidden
  52. {
  53. get { return !_config.Configuration.TvFileSortingOptions.IsEnabled; }
  54. }
  55. public bool IsEnabled
  56. {
  57. get { return _config.Configuration.TvFileSortingOptions.IsEnabled; }
  58. }
  59. }
  60. }