diff options
Diffstat (limited to 'src/Jellyfin.LiveTv/Channels/RefreshChannelsScheduledTask.cs')
| -rw-r--r-- | src/Jellyfin.LiveTv/Channels/RefreshChannelsScheduledTask.cs | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/src/Jellyfin.LiveTv/Channels/RefreshChannelsScheduledTask.cs b/src/Jellyfin.LiveTv/Channels/RefreshChannelsScheduledTask.cs new file mode 100644 index 000000000..556e052d4 --- /dev/null +++ b/src/Jellyfin.LiveTv/Channels/RefreshChannelsScheduledTask.cs @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using MediaBrowser.Common.Progress; +using MediaBrowser.Controller.Channels; +using MediaBrowser.Controller.Library; +using MediaBrowser.Model.Globalization; +using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; + +namespace Jellyfin.LiveTv.Channels +{ + /// <summary> + /// The "Refresh Channels" scheduled task. + /// </summary> + public class RefreshChannelsScheduledTask : IScheduledTask, IConfigurableScheduledTask + { + private readonly IChannelManager _channelManager; + private readonly ILogger<RefreshChannelsScheduledTask> _logger; + private readonly ILibraryManager _libraryManager; + private readonly ILocalizationManager _localization; + + /// <summary> + /// Initializes a new instance of the <see cref="RefreshChannelsScheduledTask"/> class. + /// </summary> + /// <param name="channelManager">The channel manager.</param> + /// <param name="logger">The logger.</param> + /// <param name="libraryManager">The library manager.</param> + /// <param name="localization">The localization manager.</param> + public RefreshChannelsScheduledTask( + IChannelManager channelManager, + ILogger<RefreshChannelsScheduledTask> logger, + ILibraryManager libraryManager, + ILocalizationManager localization) + { + _channelManager = channelManager; + _logger = logger; + _libraryManager = libraryManager; + _localization = localization; + } + + /// <inheritdoc /> + public string Name => _localization.GetLocalizedString("TasksRefreshChannels"); + + /// <inheritdoc /> + public string Description => _localization.GetLocalizedString("TasksRefreshChannelsDescription"); + + /// <inheritdoc /> + public string Category => _localization.GetLocalizedString("TasksChannelsCategory"); + + /// <inheritdoc /> + public bool IsHidden => ((ChannelManager)_channelManager).Channels.Length == 0; + + /// <inheritdoc /> + public bool IsEnabled => true; + + /// <inheritdoc /> + public bool IsLogged => true; + + /// <inheritdoc /> + public string Key => "RefreshInternetChannels"; + + /// <inheritdoc /> + public async Task ExecuteAsync(IProgress<double> progress, CancellationToken cancellationToken) + { + var manager = (ChannelManager)_channelManager; + + await manager.RefreshChannels(new SimpleProgress<double>(), cancellationToken).ConfigureAwait(false); + + await new ChannelPostScanTask(_channelManager, _logger, _libraryManager).Run(progress, cancellationToken) + .ConfigureAwait(false); + } + + /// <inheritdoc /> + public IEnumerable<TaskTriggerInfo> GetDefaultTriggers() + { + return new[] + { + // Every so often + new TaskTriggerInfo + { + Type = TaskTriggerInfo.TriggerInterval, IntervalTicks = TimeSpan.FromHours(24).Ticks + } + }; + } + } +} |
