RefreshChannelsScheduledTask.cs 2.5 KB

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