RefreshChannelsScheduledTask.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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(
  20. IChannelManager channelManager,
  21. IUserManager userManager,
  22. ILogger<RefreshChannelsScheduledTask> logger,
  23. ILibraryManager libraryManager)
  24. {
  25. _channelManager = channelManager;
  26. _userManager = userManager;
  27. _logger = logger;
  28. _libraryManager = libraryManager;
  29. }
  30. /// <inheritdoc />
  31. public string Name => "Refresh Channels";
  32. /// <inheritdoc />
  33. public string Description => "Refreshes internet channel information.";
  34. /// <inheritdoc />
  35. public string Category => "Internet Channels";
  36. /// <inheritdoc />
  37. public bool IsHidden => ((ChannelManager)_channelManager).Channels.Length == 0;
  38. /// <inheritdoc />
  39. public bool IsEnabled => true;
  40. /// <inheritdoc />
  41. public bool IsLogged => true;
  42. /// <inheritdoc />
  43. public string Key => "RefreshInternetChannels";
  44. /// <inheritdoc />
  45. public async Task Execute(CancellationToken cancellationToken, IProgress<double> progress)
  46. {
  47. var manager = (ChannelManager)_channelManager;
  48. await manager.RefreshChannels(new SimpleProgress<double>(), cancellationToken).ConfigureAwait(false);
  49. await new ChannelPostScanTask(_channelManager, _userManager, _logger, _libraryManager).Run(progress, cancellationToken)
  50. .ConfigureAwait(false);
  51. }
  52. /// <inheritdoc />
  53. public IEnumerable<TaskTriggerInfo> GetDefaultTriggers()
  54. {
  55. return new[]
  56. {
  57. // Every so often
  58. new TaskTriggerInfo
  59. {
  60. Type = TaskTriggerInfo.TriggerInterval, IntervalTicks = TimeSpan.FromHours(24).Ticks
  61. }
  62. };
  63. }
  64. }
  65. }