diff --git a/ConfusedPolarBear.Plugin.IntroSkipper/Entrypoint.cs b/ConfusedPolarBear.Plugin.IntroSkipper/Entrypoint.cs index 97abcc7..faf14aa 100644 --- a/ConfusedPolarBear.Plugin.IntroSkipper/Entrypoint.cs +++ b/ConfusedPolarBear.Plugin.IntroSkipper/Entrypoint.cs @@ -26,6 +26,7 @@ public class Entrypoint : IServerEntryPoint private bool _analyzeAgain; private static CancellationTokenSource? _cancellationTokenSource; private static ManualResetEventSlim _autoTaskCompletEvent = new ManualResetEventSlim(false); + private QueueManager _queueManager; /// /// Initializes a new instance of the class. @@ -56,6 +57,10 @@ public class Entrypoint : IServerEntryPoint null, Timeout.InfiniteTimeSpan, Timeout.InfiniteTimeSpan); + + _queueManager = new QueueManager( + _loggerFactory.CreateLogger(), + _libraryManager); } /// @@ -92,8 +97,7 @@ public class Entrypoint : IServerEntryPoint { // Enqueue all episodes at startup to ensure any FFmpeg errors appear as early as possible _logger.LogInformation("Running startup enqueue"); - var queueManager = new QueueManager(_loggerFactory.CreateLogger(), _libraryManager); - queueManager.GetMediaItems(); + _queueManager.GetMediaItems(); } catch (Exception ex) { @@ -121,7 +125,7 @@ public class Entrypoint : IServerEntryPoint } // Don't do anything if it's not a supported media type - if (itemChangeEventArgs.Item is not Episode) + if (itemChangeEventArgs.Item is not Episode episode) { return; } @@ -131,9 +135,15 @@ public class Entrypoint : IServerEntryPoint return; } - Plugin.Instance!.Configuration.PathRestrictions.Add(itemChangeEventArgs.Item.ContainingFolderPath); - - StartTimer(); + if (Plugin.Instance!.AnalyzerTaskIsRunning) + { + _queueManager.QueueEpisode(episode); + } + else + { + Plugin.Instance!.Configuration.PathRestrictions.Add(itemChangeEventArgs.Item.ContainingFolderPath); + StartTimer(); + } } /// @@ -150,7 +160,7 @@ public class Entrypoint : IServerEntryPoint } // Don't do anything if it's not a supported media type - if (itemChangeEventArgs.Item is not Episode) + if (itemChangeEventArgs.Item is not Episode episode) { return; } @@ -160,9 +170,15 @@ public class Entrypoint : IServerEntryPoint return; } - Plugin.Instance!.Configuration.PathRestrictions.Add(itemChangeEventArgs.Item.ContainingFolderPath); - - StartTimer(); + if (Plugin.Instance!.AnalyzerTaskIsRunning) + { + _queueManager.QueueEpisode(episode); + } + else + { + Plugin.Instance!.Configuration.PathRestrictions.Add(itemChangeEventArgs.Item.ContainingFolderPath); + StartTimer(); + } } /// diff --git a/ConfusedPolarBear.Plugin.IntroSkipper/QueueManager.cs b/ConfusedPolarBear.Plugin.IntroSkipper/QueueManager.cs index ccc1d1c..564d631 100644 --- a/ConfusedPolarBear.Plugin.IntroSkipper/QueueManager.cs +++ b/ConfusedPolarBear.Plugin.IntroSkipper/QueueManager.cs @@ -171,7 +171,11 @@ public class QueueManager _logger.LogDebug("Queued {Count} episodes", items.Count); } - private void QueueEpisode(Episode episode) + /// + /// Adds a single episode to the current queue for analyzing. + /// + /// The episode to analyze. + public void QueueEpisode(Episode episode) { if (Plugin.Instance is null) { diff --git a/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectCreditsTask.cs b/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectCreditsTask.cs index bacb457..2402976 100644 --- a/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectCreditsTask.cs +++ b/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectCreditsTask.cs @@ -74,11 +74,6 @@ public class DetectCreditsTask : IScheduledTask { return Task.CompletedTask; } - else if (Plugin.Instance!.AnalyzerTaskIsRunning && Entrypoint.AutomaticTaskState == TaskState.Running) - { - _logger.LogInformation("Automatic Task is {0} and will be canceled.", Entrypoint.AutomaticTaskState); - Entrypoint.CancelAutomaticTask(); - } _logger.LogInformation("Scheduled Task is starting"); Plugin.Instance!.AnalyzerTaskIsRunning = true; diff --git a/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectIntrosCreditsTask.cs b/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectIntrosCreditsTask.cs index f58472c..89edea1 100644 --- a/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectIntrosCreditsTask.cs +++ b/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectIntrosCreditsTask.cs @@ -73,11 +73,6 @@ public class DetectIntrosCreditsTask : IScheduledTask { return Task.CompletedTask; } - else if (Plugin.Instance!.AnalyzerTaskIsRunning && Entrypoint.AutomaticTaskState == TaskState.Running) - { - _logger.LogInformation("Automatic Task is {0} and will be canceled.", Entrypoint.AutomaticTaskState); - Entrypoint.CancelAutomaticTask(); - } _logger.LogInformation("Scheduled Task is starting"); Plugin.Instance!.AnalyzerTaskIsRunning = true; diff --git a/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectIntrosTask.cs b/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectIntrosTask.cs index c92f800..bbf98ec 100644 --- a/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectIntrosTask.cs +++ b/ConfusedPolarBear.Plugin.IntroSkipper/ScheduledTasks/DetectIntrosTask.cs @@ -73,11 +73,6 @@ public class DetectIntrosTask : IScheduledTask { return Task.CompletedTask; } - else if (Plugin.Instance!.AnalyzerTaskIsRunning && Entrypoint.AutomaticTaskState == TaskState.Running) - { - _logger.LogInformation("Automatic Task is {0} and will be canceled.", Entrypoint.AutomaticTaskState); - Entrypoint.CancelAutomaticTask(); - } _logger.LogInformation("Scheduled Task is starting"); Plugin.Instance!.AnalyzerTaskIsRunning = true;