RefreshChannelsScheduledTask.cs 2.5 KB

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