mirror of
https://github.com/Radarr/Radarr.git
synced 2024-09-11 12:02:35 +02:00
Fixed: Remove seeded downloads if they've finished seeding after import
This commit is contained in:
parent
eee6fd9f54
commit
0f0afd62bb
15
src/NzbDrone.Core/Download/DownloadCanBeRemovedEvent.cs
Normal file
15
src/NzbDrone.Core/Download/DownloadCanBeRemovedEvent.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using NzbDrone.Common.Messaging;
|
||||
using NzbDrone.Core.Download.TrackedDownloads;
|
||||
|
||||
namespace NzbDrone.Core.Download
|
||||
{
|
||||
public class DownloadCanBeRemovedEvent : IEvent
|
||||
{
|
||||
public TrackedDownload TrackedDownload { get; private set; }
|
||||
|
||||
public DownloadCanBeRemovedEvent(TrackedDownload trackedDownload)
|
||||
{
|
||||
TrackedDownload = trackedDownload;
|
||||
}
|
||||
}
|
||||
}
|
@ -6,7 +6,7 @@
|
||||
|
||||
namespace NzbDrone.Core.Download
|
||||
{
|
||||
[DebuggerDisplay("{DownloadClientName}:{Title}")]
|
||||
[DebuggerDisplay("{DownloadClientInfo?.Name}:{Title}")]
|
||||
public class DownloadClientItem
|
||||
{
|
||||
public DownloadClientItemClientInfo DownloadClientInfo { get; set; }
|
||||
|
15
src/NzbDrone.Core/Download/DownloadCompletedEvent.cs
Normal file
15
src/NzbDrone.Core/Download/DownloadCompletedEvent.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using NzbDrone.Common.Messaging;
|
||||
using NzbDrone.Core.Download.TrackedDownloads;
|
||||
|
||||
namespace NzbDrone.Core.Download
|
||||
{
|
||||
public class DownloadCompletedEvent : IEvent
|
||||
{
|
||||
public TrackedDownload TrackedDownload { get; private set; }
|
||||
|
||||
public DownloadCompletedEvent(TrackedDownload trackedDownload)
|
||||
{
|
||||
TrackedDownload = trackedDownload;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,24 +1,14 @@
|
||||
using System;
|
||||
using NLog;
|
||||
using NzbDrone.Common.Messaging;
|
||||
using NzbDrone.Core.Configuration;
|
||||
using NzbDrone.Core.Download.TrackedDownloads;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
|
||||
namespace NzbDrone.Core.Download
|
||||
{
|
||||
public class DownloadCompletedEvent : IEvent
|
||||
{
|
||||
public TrackedDownload TrackedDownload { get; private set; }
|
||||
|
||||
public DownloadCompletedEvent(TrackedDownload trackedDownload)
|
||||
{
|
||||
TrackedDownload = trackedDownload;
|
||||
}
|
||||
}
|
||||
|
||||
public class DownloadEventHub : IHandle<DownloadFailedEvent>,
|
||||
IHandle<DownloadCompletedEvent>
|
||||
IHandle<DownloadCompletedEvent>,
|
||||
IHandle<DownloadCanBeRemovedEvent>
|
||||
{
|
||||
private readonly IConfigService _configService;
|
||||
private readonly IProvideDownloadClient _downloadClientProvider;
|
||||
@ -33,6 +23,18 @@ public DownloadEventHub(IConfigService configService,
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
public void Handle(DownloadFailedEvent message)
|
||||
{
|
||||
var trackedDownload = message.TrackedDownload;
|
||||
|
||||
if (trackedDownload == null || !trackedDownload.DownloadItem.CanBeRemoved || _configService.RemoveFailedDownloads == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RemoveFromDownloadClient(trackedDownload);
|
||||
}
|
||||
|
||||
public void Handle(DownloadCompletedEvent message)
|
||||
{
|
||||
if (_configService.RemoveCompletedDownloads &&
|
||||
@ -48,16 +50,10 @@ public void Handle(DownloadCompletedEvent message)
|
||||
}
|
||||
}
|
||||
|
||||
public void Handle(DownloadFailedEvent message)
|
||||
public void Handle(DownloadCanBeRemovedEvent message)
|
||||
{
|
||||
var trackedDownload = message.TrackedDownload;
|
||||
|
||||
if (trackedDownload == null || !trackedDownload.DownloadItem.CanBeRemoved || _configService.RemoveFailedDownloads == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RemoveFromDownloadClient(trackedDownload);
|
||||
// Already verified that it can be removed, just needs to be removed
|
||||
RemoveFromDownloadClient(message.TrackedDownload);
|
||||
}
|
||||
|
||||
private void RemoveFromDownloadClient(TrackedDownload trackedDownload)
|
||||
|
@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NLog;
|
||||
using NzbDrone.Core.Configuration;
|
||||
@ -32,9 +33,18 @@ public DownloadProcessingService(IConfigService configService,
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
private void RemoveCompletedDownloads(List<TrackedDownload> trackedDownloads)
|
||||
{
|
||||
foreach (var trackedDownload in trackedDownloads.Where(c => c.DownloadItem.CanBeRemoved && c.State == TrackedDownloadState.Imported))
|
||||
{
|
||||
_eventAggregator.PublishEvent(new DownloadCompletedEvent(trackedDownload));
|
||||
}
|
||||
}
|
||||
|
||||
public void Execute(ProcessMonitoredDownloadsCommand message)
|
||||
{
|
||||
var enableCompletedDownloadHandling = _configService.EnableCompletedDownloadHandling;
|
||||
var removeCompletedDownloads = _configService.RemoveCompletedDownloads;
|
||||
var trackedDownloads = _trackedDownloadService.GetTrackedDownloads()
|
||||
.Where(t => t.IsTrackable)
|
||||
.ToList();
|
||||
@ -46,11 +56,21 @@ public void Execute(ProcessMonitoredDownloadsCommand message)
|
||||
if (trackedDownload.State == TrackedDownloadState.FailedPending)
|
||||
{
|
||||
_failedDownloadService.ProcessFailed(trackedDownload);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (enableCompletedDownloadHandling && trackedDownload.State == TrackedDownloadState.ImportPending)
|
||||
{
|
||||
_completedDownloadService.Import(trackedDownload);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (removeCompletedDownloads &&
|
||||
trackedDownload.DownloadItem.Removed &&
|
||||
trackedDownload.DownloadItem.CanBeRemoved &&
|
||||
trackedDownload.State == TrackedDownloadState.Imported)
|
||||
{
|
||||
_eventAggregator.PublishEvent(new DownloadCanBeRemovedEvent(trackedDownload));
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
|
@ -108,6 +108,7 @@ private TrackedDownload ProcessClientItem(IDownloadClient downloadClient, Downlo
|
||||
try
|
||||
{
|
||||
var trackedDownload = _trackedDownloadService.TrackDownload((DownloadClientDefinition)downloadClient.Definition, downloadItem);
|
||||
|
||||
if (trackedDownload != null && trackedDownload.State == TrackedDownloadState.Downloading)
|
||||
{
|
||||
_failedDownloadService.Check(trackedDownload);
|
||||
|
Loading…
Reference in New Issue
Block a user