Merge pull request #119 from RepoDevil/10.8
When a scan is already running, append it
This commit is contained in:
commit
0b77809e9f
@ -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
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user