diff options
Diffstat (limited to 'Emby.Server.Implementations/ScheduledTasks')
12 files changed, 97 insertions, 206 deletions
diff --git a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs index 09dcc320a..0ae7ae96c 100644 --- a/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/ChapterImagesTask.cs @@ -1,22 +1,20 @@ -using MediaBrowser.Common.Configuration; -using MediaBrowser.Controller.Entities; -using MediaBrowser.Controller.Library; -using MediaBrowser.Controller.MediaEncoding; -using MediaBrowser.Controller.Persistence; -using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Common.Configuration; using MediaBrowser.Controller.Dto; -using MediaBrowser.Controller.IO; -using MediaBrowser.Model.IO; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Library; +using MediaBrowser.Controller.MediaEncoding; +using MediaBrowser.Controller.Persistence; +using MediaBrowser.Controller.Providers; using MediaBrowser.Model.Entities; +using MediaBrowser.Model.IO; using MediaBrowser.Model.Tasks; -using MediaBrowser.Model.Extensions; -using MediaBrowser.Controller.Providers; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { @@ -70,10 +68,7 @@ namespace Emby.Server.Implementations.ScheduledTasks }; } - public string Key - { - get { return "RefreshChapterImages"; } - } + public string Key => "RefreshChapterImages"; /// <summary> /// Returns the task to be executed @@ -156,6 +151,7 @@ namespace Emby.Server.Implementations.ScheduledTasks } catch (ObjectDisposedException) { + //TODO Investigate and properly fix. break; } } @@ -165,33 +161,18 @@ namespace Emby.Server.Implementations.ScheduledTasks /// Gets the name of the task /// </summary> /// <value>The name.</value> - public string Name - { - get - { - return "Chapter image extraction"; - } - } + public string Name => "Chapter image extraction"; /// <summary> /// Gets the description. /// </summary> /// <value>The description.</value> - public string Description - { - get { return "Creates thumbnails for videos that have chapters."; } - } + public string Description => "Creates thumbnails for videos that have chapters."; /// <summary> /// Gets the category. /// </summary> /// <value>The category.</value> - public string Category - { - get - { - return "Library"; - } - } + public string Category => "Library"; } } diff --git a/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs index afcee02e5..98685cebe 100644 --- a/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/DailyTrigger.cs @@ -1,9 +1,8 @@ -using System; +using System; using System.Globalization; using System.Threading; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs index 5f6a0dfe6..3a34da3af 100644 --- a/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/IntervalTrigger.cs @@ -1,9 +1,8 @@ -using System; +using System; using System.Linq; using System.Threading; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs b/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs index 02568fe3a..68031170f 100644 --- a/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/PeopleValidationTask.cs @@ -1,9 +1,9 @@ -using MediaBrowser.Controller.Library; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using MediaBrowser.Controller; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.Tasks; namespace Emby.Server.Implementations.ScheduledTasks @@ -24,6 +24,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// Initializes a new instance of the <see cref="PeopleValidationTask" /> class. /// </summary> /// <param name="libraryManager">The library manager.</param> + /// <param name="appHost">The server application host</param> public PeopleValidationTask(ILibraryManager libraryManager, IServerApplicationHost appHost) { _libraryManager = libraryManager; @@ -35,8 +36,8 @@ namespace Emby.Server.Implementations.ScheduledTasks /// </summary> public IEnumerable<TaskTriggerInfo> GetDefaultTriggers() { - return new[] - { + return new[] + { // Every so often new TaskTriggerInfo { @@ -46,10 +47,7 @@ namespace Emby.Server.Implementations.ScheduledTasks }; } - public string Key - { - get { return "RefreshPeople"; } - } + public string Key => "RefreshPeople"; /// <summary> /// Returns the task to be executed @@ -66,30 +64,18 @@ namespace Emby.Server.Implementations.ScheduledTasks /// Gets the name of the task /// </summary> /// <value>The name.</value> - public string Name - { - get { return "Refresh people"; } - } + public string Name => "Refresh people"; /// <summary> /// Gets the description. /// </summary> /// <value>The description.</value> - public string Description - { - get { return "Updates metadata for actors and directors in your media library."; } - } + public string Description => "Updates metadata for actors and directors in your media library."; /// <summary> /// Gets the category. /// </summary> /// <value>The category.</value> - public string Category - { - get - { - return "Library"; - } - } + public string Category => "Library"; } } diff --git a/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs b/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs index fb07b8e99..f6fa64d13 100644 --- a/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/RefreshMediaLibraryTask.cs @@ -1,10 +1,10 @@ -using MediaBrowser.Controller.Configuration; -using MediaBrowser.Controller.Library; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using Emby.Server.Implementations.Library; +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Library; using MediaBrowser.Model.Tasks; namespace Emby.Server.Implementations.ScheduledTasks @@ -36,8 +36,8 @@ namespace Emby.Server.Implementations.ScheduledTasks /// <returns>IEnumerable{BaseTaskTrigger}.</returns> public IEnumerable<TaskTriggerInfo> GetDefaultTriggers() { - return new[] { - + return new[] { + // Every so often new TaskTriggerInfo { Type = TaskTriggerInfo.TriggerInterval, IntervalTicks = TimeSpan.FromHours(12).Ticks} }; @@ -62,35 +62,20 @@ namespace Emby.Server.Implementations.ScheduledTasks /// Gets the name. /// </summary> /// <value>The name.</value> - public string Name - { - get { return "Scan media library"; } - } + public string Name => "Scan media library"; /// <summary> /// Gets the description. /// </summary> /// <value>The description.</value> - public string Description - { - get { return "Scans your media library and refreshes metatata based on configuration."; } - } + public string Description => "Scans your media library and refreshes metatata based on configuration."; /// <summary> /// Gets the category. /// </summary> /// <value>The category.</value> - public string Category - { - get - { - return "Library"; - } - } + public string Category => "Library"; - public string Key - { - get { return "RefreshLibrary"; } - } + public string Key => "RefreshLibrary"; } } diff --git a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs index 0bebca8fc..44f6e2d7b 100644 --- a/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs +++ b/Emby.Server.Implementations/ScheduledTasks/ScheduledTaskWorker.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -9,10 +9,10 @@ using MediaBrowser.Common.Extensions; using MediaBrowser.Common.Progress; using MediaBrowser.Model.Events; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { @@ -63,7 +63,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// <param name="taskManager">The task manager.</param> /// <param name="jsonSerializer">The json serializer.</param> /// <param name="logger">The logger.</param> - /// <exception cref="System.ArgumentNullException"> + /// <exception cref="ArgumentNullException"> /// scheduledTask /// or /// applicationPaths @@ -78,23 +78,23 @@ namespace Emby.Server.Implementations.ScheduledTasks { if (scheduledTask == null) { - throw new ArgumentNullException("scheduledTask"); + throw new ArgumentNullException(nameof(scheduledTask)); } if (applicationPaths == null) { - throw new ArgumentNullException("applicationPaths"); + throw new ArgumentNullException(nameof(applicationPaths)); } if (taskManager == null) { - throw new ArgumentNullException("taskManager"); + throw new ArgumentNullException(nameof(taskManager)); } if (jsonSerializer == null) { - throw new ArgumentNullException("jsonSerializer"); + throw new ArgumentNullException(nameof(jsonSerializer)); } if (logger == null) { - throw new ArgumentNullException("logger"); + throw new ArgumentNullException(nameof(logger)); } ScheduledTask = scheduledTask; @@ -171,28 +171,19 @@ namespace Emby.Server.Implementations.ScheduledTasks /// Gets the name. /// </summary> /// <value>The name.</value> - public string Name - { - get { return ScheduledTask.Name; } - } + public string Name => ScheduledTask.Name; /// <summary> /// Gets the description. /// </summary> /// <value>The description.</value> - public string Description - { - get { return ScheduledTask.Description; } - } + public string Description => ScheduledTask.Description; /// <summary> /// Gets the category. /// </summary> /// <value>The category.</value> - public string Category - { - get { return ScheduledTask.Category; } - } + public string Category => ScheduledTask.Category; /// <summary> /// Gets the current cancellation token @@ -241,15 +232,12 @@ namespace Emby.Server.Implementations.ScheduledTasks /// <value>The triggers.</value> private Tuple<TaskTriggerInfo, ITaskTrigger>[] InternalTriggers { - get - { - return _triggers; - } + get => _triggers; set { if (value == null) { - throw new ArgumentNullException("value"); + throw new ArgumentNullException(nameof(value)); } // Cleanup current triggers @@ -268,7 +256,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// Gets the triggers that define when the task will run /// </summary> /// <value>The triggers.</value> - /// <exception cref="System.ArgumentNullException">value</exception> + /// <exception cref="ArgumentNullException">value</exception> public TaskTriggerInfo[] Triggers { get @@ -280,7 +268,7 @@ namespace Emby.Server.Implementations.ScheduledTasks { if (value == null) { - throw new ArgumentNullException("value"); + throw new ArgumentNullException(nameof(value)); } // This null check is not great, but is needed to handle bad user input, or user mucking with the config file incorrectly @@ -377,7 +365,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// </summary> /// <param name="options">Task options.</param> /// <returns>Task.</returns> - /// <exception cref="System.InvalidOperationException">Cannot execute a Task that is already running</exception> + /// <exception cref="InvalidOperationException">Cannot execute a Task that is already running</exception> public async Task Execute(TaskOptions options) { var task = Task.Run(async () => await ExecuteInternal(options).ConfigureAwait(false)); @@ -473,7 +461,7 @@ namespace Emby.Server.Implementations.ScheduledTasks /// <summary> /// Stops the task if it is currently executing /// </summary> - /// <exception cref="System.InvalidOperationException">Cannot cancel a Task unless it is in the Running state.</exception> + /// <exception cref="InvalidOperationException">Cannot cancel a Task unless it is in the Running state.</exception> public void Cancel() { if (State != TaskState.Running) @@ -717,8 +705,8 @@ namespace Emby.Server.Implementations.ScheduledTasks /// </summary> /// <param name="info">The info.</param> /// <returns>BaseTaskTrigger.</returns> - /// <exception cref="System.ArgumentNullException"></exception> - /// <exception cref="System.ArgumentException">Invalid trigger type: + info.Type</exception> + /// <exception cref="ArgumentNullException"></exception> + /// <exception cref="ArgumentException">Invalid trigger type: + info.Type</exception> private ITaskTrigger GetTrigger(TaskTriggerInfo info) { var options = new TaskOptions @@ -730,7 +718,7 @@ namespace Emby.Server.Implementations.ScheduledTasks { if (!info.TimeOfDayTicks.HasValue) { - throw new ArgumentNullException(); + throw new ArgumentException("Info did not contain a TimeOfDayTicks.", nameof(info)); } return new DailyTrigger @@ -744,12 +732,12 @@ namespace Emby.Server.Implementations.ScheduledTasks { if (!info.TimeOfDayTicks.HasValue) { - throw new ArgumentNullException(); + throw new ArgumentException("Info did not contain a TimeOfDayTicks.", nameof(info)); } if (!info.DayOfWeek.HasValue) { - throw new ArgumentNullException(); + throw new ArgumentException("Info did not contain a DayOfWeek.", nameof(info)); } return new WeeklyTrigger @@ -764,7 +752,7 @@ namespace Emby.Server.Implementations.ScheduledTasks { if (!info.IntervalTicks.HasValue) { - throw new ArgumentNullException(); + throw new ArgumentException("Info did not contain a IntervalTicks.", nameof(info)); } return new IntervalTrigger @@ -778,7 +766,7 @@ namespace Emby.Server.Implementations.ScheduledTasks { if (!info.SystemEvent.HasValue) { - throw new ArgumentNullException(); + throw new ArgumentException("Info did not contain a SystemEvent.", nameof(info)); } return new SystemEventTrigger(_systemEvents) diff --git a/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs index 35366a044..08ff4f55f 100644 --- a/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/StartupTrigger.cs @@ -1,8 +1,7 @@ -using System; +using System; using System.Threading.Tasks; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs index def142f88..7a88fc2b0 100644 --- a/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/SystemEventTrigger.cs @@ -1,9 +1,8 @@ -using System; +using System; using System.Threading.Tasks; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { diff --git a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs index 361c31acb..02a082d3f 100644 --- a/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs +++ b/Emby.Server.Implementations/ScheduledTasks/TaskManager.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.IO; @@ -7,10 +7,10 @@ using System.Threading.Tasks; using MediaBrowser.Common.Configuration; using MediaBrowser.Model.Events; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Serialization; using MediaBrowser.Model.System; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { @@ -60,13 +60,18 @@ namespace Emby.Server.Implementations.ScheduledTasks /// </summary> /// <param name="applicationPaths">The application paths.</param> /// <param name="jsonSerializer">The json serializer.</param> - /// <param name="logger">The logger.</param> + /// <param name="loggerFactory">The logger factory.</param> /// <exception cref="System.ArgumentException">kernel</exception> - public TaskManager(IApplicationPaths applicationPaths, IJsonSerializer jsonSerializer, ILogger logger, IFileSystem fileSystem, ISystemEvents systemEvents) + public TaskManager( + IApplicationPaths applicationPaths, + IJsonSerializer jsonSerializer, + ILoggerFactory loggerFactory, + IFileSystem fileSystem, + ISystemEvents systemEvents) { ApplicationPaths = applicationPaths; JsonSerializer = jsonSerializer; - Logger = logger; + Logger = loggerFactory.CreateLogger(nameof(TaskManager)); _fileSystem = fileSystem; _systemEvents = systemEvents; @@ -94,7 +99,7 @@ namespace Emby.Server.Implementations.ScheduledTasks try { - lines = _fileSystem.ReadAllLines(path).ToList() ; + lines = _fileSystem.ReadAllLines(path).ToList(); } catch { @@ -364,8 +369,7 @@ namespace Emby.Server.Implementations.ScheduledTasks { var list = new List<Tuple<Type, TaskOptions>>(); - Tuple<Type, TaskOptions> item; - while (_taskQueue.TryDequeue(out item)) + while (_taskQueue.TryDequeue(out var item)) { if (list.All(i => i.Item1 != item.Item1)) { diff --git a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs index c60f59ce4..2590f455c 100644 --- a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteCacheFileTask.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -6,8 +6,8 @@ using System.Threading; using System.Threading.Tasks; using MediaBrowser.Common.Configuration; using MediaBrowser.Model.IO; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks.Tasks { @@ -42,8 +42,8 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks /// <returns>IEnumerable{BaseTaskTrigger}.</returns> public IEnumerable<TaskTriggerInfo> GetDefaultTriggers() { - return new[] { - + return new[] { + // Every so often new TaskTriggerInfo { Type = TaskTriggerInfo.TriggerInterval, IntervalTicks = TimeSpan.FromHours(24).Ticks} }; @@ -162,54 +162,30 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks /// Gets the name of the task /// </summary> /// <value>The name.</value> - public string Name - { - get { return "Cache file cleanup"; } - } + public string Name => "Cache file cleanup"; - public string Key - { - get { return "DeleteCacheFiles"; } - } + public string Key => "DeleteCacheFiles"; /// <summary> /// Gets the description. /// </summary> /// <value>The description.</value> - public string Description - { - get { return "Deletes cache files no longer needed by the system"; } - } + public string Description => "Deletes cache files no longer needed by the system"; /// <summary> /// Gets the category. /// </summary> /// <value>The category.</value> - public string Category - { - get - { - return "Maintenance"; - } - } + public string Category => "Maintenance"; /// <summary> /// Gets a value indicating whether this instance is hidden. /// </summary> /// <value><c>true</c> if this instance is hidden; otherwise, <c>false</c>.</value> - public bool IsHidden - { - get { return true; } - } + public bool IsHidden => true; - public bool IsEnabled - { - get { return true; } - } + public bool IsEnabled => true; - public bool IsLogged - { - get { return true; } - } + public bool IsLogged => true; } } diff --git a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs index 95395f96c..a57fe4945 100644 --- a/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs +++ b/Emby.Server.Implementations/ScheduledTasks/Tasks/DeleteLogFileTask.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Threading; @@ -38,8 +38,8 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks /// <returns>IEnumerable{BaseTaskTrigger}.</returns> public IEnumerable<TaskTriggerInfo> GetDefaultTriggers() { - return new[] { - + return new[] { + // Every so often new TaskTriggerInfo { Type = TaskTriggerInfo.TriggerInterval, IntervalTicks = TimeSpan.FromHours(24).Ticks} }; @@ -65,7 +65,7 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks foreach (var file in filesToDelete) { - double percent = index / (double) filesToDelete.Count; + double percent = index / (double)filesToDelete.Count; progress.Report(100 * percent); @@ -81,58 +81,34 @@ namespace Emby.Server.Implementations.ScheduledTasks.Tasks return Task.CompletedTask; } - public string Key - { - get { return "CleanLogFiles"; } - } + public string Key => "CleanLogFiles"; /// <summary> /// Gets the name of the task /// </summary> /// <value>The name.</value> - public string Name - { - get { return "Log file cleanup"; } - } + public string Name => "Log file cleanup"; /// <summary> /// Gets the description. /// </summary> /// <value>The description.</value> - public string Description - { - get { return string.Format("Deletes log files that are more than {0} days old.", ConfigurationManager.CommonConfiguration.LogFileRetentionDays); } - } + public string Description => string.Format("Deletes log files that are more than {0} days old.", ConfigurationManager.CommonConfiguration.LogFileRetentionDays); /// <summary> /// Gets the category. /// </summary> /// <value>The category.</value> - public string Category - { - get - { - return "Maintenance"; - } - } + public string Category => "Maintenance"; /// <summary> /// Gets a value indicating whether this instance is hidden. /// </summary> /// <value><c>true</c> if this instance is hidden; otherwise, <c>false</c>.</value> - public bool IsHidden - { - get { return true; } - } + public bool IsHidden => true; - public bool IsEnabled - { - get { return true; } - } + public bool IsEnabled => true; - public bool IsLogged - { - get { return true; } - } + public bool IsLogged => true; } } diff --git a/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs b/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs index e694e0855..2a6a7b13c 100644 --- a/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs +++ b/Emby.Server.Implementations/ScheduledTasks/WeeklyTrigger.cs @@ -1,8 +1,7 @@ -using System; +using System; using System.Threading; -using MediaBrowser.Model.Events; -using Microsoft.Extensions.Logging; using MediaBrowser.Model.Tasks; +using Microsoft.Extensions.Logging; namespace Emby.Server.Implementations.ScheduledTasks { |
