RefreshChannelsScheduledTask.cs 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Threading;
  4. using System.Threading.Tasks;
  5. using MediaBrowser.Common.Progress;
  6. using MediaBrowser.Controller.Channels;
  7. using MediaBrowser.Controller.Library;
  8. using MediaBrowser.Model.Globalization;
  9. using MediaBrowser.Model.Tasks;
  10. using Microsoft.Extensions.Logging;
  11. namespace Emby.Server.Implementations.Channels
  12. {
  13. /// <summary>
  14. /// The "Refresh Channels" scheduled task.
  15. /// </summary>
  16. public class RefreshChannelsScheduledTask : IScheduledTask, IConfigurableScheduledTask
  17. {
  18. private readonly IChannelManager _channelManager;
  19. private readonly ILogger<RefreshChannelsScheduledTask> _logger;
  20. private readonly ILibraryManager _libraryManager;
  21. private readonly ILocalizationManager _localization;
  22. /// <summary>
  23. /// Initializes a new instance of the <see cref="RefreshChannelsScheduledTask"/> class.
  24. /// </summary>
  25. /// <param name="channelManager">The channel manager.</param>
  26. /// <param name="logger">The logger.</param>
  27. /// <param name="libraryManager">The library manager.</param>
  28. /// <param name="localization">The localization manager.</param>
  29. public RefreshChannelsScheduledTask(
  30. IChannelManager channelManager,
  31. ILogger<RefreshChannelsScheduledTask> logger,
  32. ILibraryManager libraryManager,
  33. ILocalizationManager localization)
  34. {
  35. _channelManager = channelManager;
  36. _logger = logger;
  37. _libraryManager = libraryManager;
  38. _localization = localization;
  39. }
  40. /// <inheritdoc />
  41. public string Name => _localization.GetLocalizedString("TasksRefreshChannels");
  42. /// <inheritdoc />
  43. public string Description => _localization.GetLocalizedString("TasksRefreshChannelsDescription");
  44. /// <inheritdoc />
  45. public string Category => _localization.GetLocalizedString("TasksChannelsCategory");
  46. /// <inheritdoc />
  47. public bool IsHidden => ((ChannelManager)_channelManager).Channels.Length == 0;
  48. /// <inheritdoc />
  49. public bool IsEnabled => true;
  50. /// <inheritdoc />
  51. public bool IsLogged => true;
  52. /// <inheritdoc />
  53. public string Key => "RefreshInternetChannels";
  54. /// <inheritdoc />
  55. public async Task ExecuteAsync(IProgress<double> progress, CancellationToken cancellationToken)
  56. {
  57. var manager = (ChannelManager)_channelManager;
  58. await manager.RefreshChannels(new SimpleProgress<double>(), cancellationToken).ConfigureAwait(false);
  59. await new ChannelPostScanTask(_channelManager, _logger, _libraryManager).Run(progress, cancellationToken)
  60. .ConfigureAwait(false);
  61. }
  62. /// <inheritdoc />
  63. public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
  64. {
  65. return new[]
  66. {
  67. // Every so often
  68. new TaskTriggerInfo
  69. {
  70. Type = TaskTriggerInfo.TriggerInterval, IntervalTicks = TimeSpan.FromHours(24).Ticks
  71. }
  72. };
  73. }
  74. }
  75. }