RefreshChannelsScheduledTask.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #pragma warning disable CS1591
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Threading;
  5. using System.Threading.Tasks;
  6. using MediaBrowser.Common.Progress;
  7. using MediaBrowser.Controller.Channels;
  8. using MediaBrowser.Controller.Library;
  9. using MediaBrowser.Model.Tasks;
  10. using Microsoft.Extensions.Logging;
  11. namespace Emby.Server.Implementations.Channels
  12. {
  13. public class RefreshChannelsScheduledTask : IScheduledTask, IConfigurableScheduledTask
  14. {
  15. private readonly IChannelManager _channelManager;
  16. private readonly IUserManager _userManager;
  17. private readonly ILogger _logger;
  18. private readonly ILibraryManager _libraryManager;
  19. public RefreshChannelsScheduledTask(IChannelManager channelManager, IUserManager userManager, ILogger logger, ILibraryManager libraryManager)
  20. {
  21. _channelManager = channelManager;
  22. _userManager = userManager;
  23. _logger = logger;
  24. _libraryManager = libraryManager;
  25. }
  26. public string Name => "Refresh Channels";
  27. public string Description => "Refreshes internet channel information.";
  28. public string Category => "Internet Channels";
  29. public bool IsHidden => ((ChannelManager)_channelManager).Channels.Length == 0;
  30. public bool IsEnabled => true;
  31. public bool IsLogged => true;
  32. public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
  33. {
  34. var manager = (ChannelManager)_channelManager;
  35. await manager.RefreshChannels(new SimpleProgress<double>(), cancellationToken).ConfigureAwait(false);
  36. await new ChannelPostScanTask(_channelManager, _userManager, _logger, _libraryManager).Run(progress, cancellationToken)
  37. .ConfigureAwait(false);
  38. }
  39. /// <summary>
  40. /// Creates the triggers that define when the task will run
  41. /// </summary>
  42. public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
  43. {
  44. return new[] {
  45. // Every so often
  46. new TaskTriggerInfo { Type = TaskTriggerInfo.TriggerInterval, IntervalTicks = TimeSpan.FromHours(24).Ticks}
  47. };
  48. }
  49. public string Key => "RefreshInternetChannels";
  50. }
  51. }