Merge pull request #119 from RepoDevil/10.8

When a scan is already running, append it
This commit is contained in:
TwistedUmbrellaX 2024-04-16 10:42:23 -04:00 committed by GitHub
commit 0b77809e9f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 42 additions and 15 deletions

View File

@ -26,6 +26,7 @@ public class Entrypoint : IServerEntryPoint
private bool _analyzeAgain; private bool _analyzeAgain;
private static CancellationTokenSource? _cancellationTokenSource; private static CancellationTokenSource? _cancellationTokenSource;
private static ManualResetEventSlim _autoTaskCompletEvent = new ManualResetEventSlim(false); private static ManualResetEventSlim _autoTaskCompletEvent = new ManualResetEventSlim(false);
private QueueManager _queueManager;
/// <summary> /// <summary>
/// Initializes a new instance of the <see cref="Entrypoint"/> class. /// Initializes a new instance of the <see cref="Entrypoint"/> class.
@ -56,6 +57,10 @@ public class Entrypoint : IServerEntryPoint
null, null,
Timeout.InfiniteTimeSpan, Timeout.InfiniteTimeSpan,
Timeout.InfiniteTimeSpan); Timeout.InfiniteTimeSpan);
_queueManager = new QueueManager(
_loggerFactory.CreateLogger<QueueManager>(),
_libraryManager);
} }
/// <summary> /// <summary>
@ -92,8 +97,7 @@ public class Entrypoint : IServerEntryPoint
{ {
// Enqueue all episodes at startup to ensure any FFmpeg errors appear as early as possible // Enqueue all episodes at startup to ensure any FFmpeg errors appear as early as possible
_logger.LogInformation("Running startup enqueue"); _logger.LogInformation("Running startup enqueue");
var queueManager = new QueueManager(_loggerFactory.CreateLogger<QueueManager>(), _libraryManager); _queueManager.GetMediaItems();
queueManager.GetMediaItems();
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -121,7 +125,7 @@ public class Entrypoint : IServerEntryPoint
} }
// Don't do anything if it's not a supported media type // 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; return;
} }
@ -131,9 +135,15 @@ public class Entrypoint : IServerEntryPoint
return; return;
} }
Plugin.Instance!.Configuration.PathRestrictions.Add(itemChangeEventArgs.Item.ContainingFolderPath); if (Plugin.Instance!.AnalyzerTaskIsRunning)
{
StartTimer(); _queueManager.QueueEpisode(episode);
}
else
{
Plugin.Instance!.Configuration.PathRestrictions.Add(itemChangeEventArgs.Item.ContainingFolderPath);
StartTimer();
}
} }
/// <summary> /// <summary>
@ -150,7 +160,7 @@ public class Entrypoint : IServerEntryPoint
} }
// Don't do anything if it's not a supported media type // 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; return;
} }
@ -160,9 +170,15 @@ public class Entrypoint : IServerEntryPoint
return; return;
} }
Plugin.Instance!.Configuration.PathRestrictions.Add(itemChangeEventArgs.Item.ContainingFolderPath); if (Plugin.Instance!.AnalyzerTaskIsRunning)
{
StartTimer(); _queueManager.QueueEpisode(episode);
}
else
{
Plugin.Instance!.Configuration.PathRestrictions.Add(itemChangeEventArgs.Item.ContainingFolderPath);
StartTimer();
}
} }
/// <summary> /// <summary>
@ -284,8 +300,8 @@ public class Entrypoint : IServerEntryPoint
} }
} }
Plugin.Instance!.AnalyzerTaskIsRunning = false;
Plugin.Instance!.Configuration.PathRestrictions.Clear(); Plugin.Instance!.Configuration.PathRestrictions.Clear();
Plugin.Instance!.AnalyzerTaskIsRunning = false;
_autoTaskCompletEvent.Set(); _autoTaskCompletEvent.Set();
// New item detected, start timer again // New item detected, start timer again

View File

@ -171,7 +171,11 @@ public class QueueManager
_logger.LogDebug("Queued {Count} episodes", items.Count); _logger.LogDebug("Queued {Count} episodes", items.Count);
} }
private void QueueEpisode(Episode episode) /// <summary>
/// Adds a single episode to the current queue for analyzing.
/// </summary>
/// <param name="episode">The episode to analyze.</param>
public void QueueEpisode(Episode episode)
{ {
if (Plugin.Instance is null) if (Plugin.Instance is null)
{ {

View File

@ -146,13 +146,20 @@ public class BaseItemAnalyzerTask
EdlManager.UpdateEDLFiles(episodes); EdlManager.UpdateEDLFiles(episodes);
} }
if (_analysisMode == AnalysisMode.Introduction) if (_logger is ILogger<DetectIntrosCreditsTask>)
{ {
progress.Report(((totalProcessed * 100) / totalQueued) / 2); if (_analysisMode == AnalysisMode.Introduction)
{
progress.Report(((totalProcessed * 100) / totalQueued) / 2);
}
else
{
progress.Report((((totalProcessed * 100) / totalQueued) / 2) + 50);
}
} }
else else
{ {
progress.Report((((totalProcessed * 100) / totalQueued) / 2) + 50); progress.Report((totalProcessed * 100) / totalQueued);
} }
}); });