1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-16 11:37:58 +02:00

New: Set scanning interval for Drone Factory

This commit is contained in:
Mark McDowall 2014-03-14 02:41:56 -07:00
parent 0914441de7
commit c2ab59f5c5
5 changed files with 41 additions and 4 deletions

View File

@ -7,6 +7,7 @@ public class DownloadClientConfigResource : RestResource
{ {
public String DownloadedEpisodesFolder { get; set; } public String DownloadedEpisodesFolder { get; set; }
public String DownloadClientWorkingFolders { get; set; } public String DownloadClientWorkingFolders { get; set; }
public Int32 DownloadedEpisodesScanInterval { get; set; }
public Boolean AutoRedownloadFailed { get; set; } public Boolean AutoRedownloadFailed { get; set; }
public Boolean RemoveFailedDownloads { get; set; } public Boolean RemoveFailedDownloads { get; set; }

View File

@ -157,6 +157,13 @@ public String DownloadClientWorkingFolders
set { SetValue("DownloadClientWorkingFolders", value); } set { SetValue("DownloadClientWorkingFolders", value); }
} }
public Int32 DownloadedEpisodesScanInterval
{
get { return GetValueInt("DownloadedEpisodesScanInterval", 1); }
set { SetValue("DownloadedEpisodesScanInterval", value); }
}
public Boolean SetPermissionsLinux public Boolean SetPermissionsLinux
{ {
get { return GetValueBoolean("SetPermissionsLinux", false); } get { return GetValueBoolean("SetPermissionsLinux", false); }

View File

@ -13,6 +13,7 @@ public interface IConfigService
//Download Client //Download Client
String DownloadedEpisodesFolder { get; set; } String DownloadedEpisodesFolder { get; set; }
String DownloadClientWorkingFolders { get; set; } String DownloadClientWorkingFolders { get; set; }
Int32 DownloadedEpisodesScanInterval { get; set; }
//Failed Download Handling (Download client) //Failed Download Handling (Download client)
Boolean AutoRedownloadFailed { get; set; } Boolean AutoRedownloadFailed { get; set; }

View File

@ -5,7 +5,6 @@
using NzbDrone.Core.Configuration; using NzbDrone.Core.Configuration;
using NzbDrone.Core.Configuration.Events; using NzbDrone.Core.Configuration.Events;
using NzbDrone.Core.DataAugmentation.Scene; using NzbDrone.Core.DataAugmentation.Scene;
using NzbDrone.Core.DataAugmentation.Xem;
using NzbDrone.Core.Download; using NzbDrone.Core.Download;
using NzbDrone.Core.HealthCheck; using NzbDrone.Core.HealthCheck;
using NzbDrone.Core.Housekeeping; using NzbDrone.Core.Housekeeping;
@ -40,14 +39,15 @@ public TaskManager(IScheduledTaskRepository scheduledTaskRepository, IConfigServ
public IList<ScheduledTask> GetPending() public IList<ScheduledTask> GetPending()
{ {
return _scheduledTaskRepository.All().Where(c => c.LastExecution.AddMinutes(c.Interval) < DateTime.UtcNow).ToList(); return _scheduledTaskRepository.All()
.Where(c => c.Interval > 0 && c.LastExecution.AddMinutes(c.Interval) < DateTime.UtcNow)
.ToList();
} }
public void Handle(ApplicationStartedEvent message) public void Handle(ApplicationStartedEvent message)
{ {
var defaultTasks = new[] var defaultTasks = new[]
{ {
new ScheduledTask{ Interval = _configService.RssSyncInterval, TypeName = typeof(RssSyncCommand).FullName},
new ScheduledTask{ Interval = 1, TypeName = typeof(DownloadedEpisodesScanCommand).FullName}, new ScheduledTask{ Interval = 1, TypeName = typeof(DownloadedEpisodesScanCommand).FullName},
new ScheduledTask{ Interval = 1, TypeName = typeof(TrackedCommandCleanupCommand).FullName}, new ScheduledTask{ Interval = 1, TypeName = typeof(TrackedCommandCleanupCommand).FullName},
new ScheduledTask{ Interval = 1, TypeName = typeof(CheckForFailedDownloadCommand).FullName}, new ScheduledTask{ Interval = 1, TypeName = typeof(CheckForFailedDownloadCommand).FullName},
@ -57,6 +57,18 @@ public void Handle(ApplicationStartedEvent message)
new ScheduledTask{ Interval = 3*60, TypeName = typeof(UpdateSceneMappingCommand).FullName}, new ScheduledTask{ Interval = 3*60, TypeName = typeof(UpdateSceneMappingCommand).FullName},
new ScheduledTask{ Interval = 12*60, TypeName = typeof(RefreshSeriesCommand).FullName}, new ScheduledTask{ Interval = 12*60, TypeName = typeof(RefreshSeriesCommand).FullName},
new ScheduledTask{ Interval = 24*60, TypeName = typeof(HousekeepingCommand).FullName}, new ScheduledTask{ Interval = 24*60, TypeName = typeof(HousekeepingCommand).FullName},
new ScheduledTask
{
Interval = _configService.RssSyncInterval,
TypeName = typeof(RssSyncCommand).FullName
},
new ScheduledTask
{
Interval = _configService.DownloadedEpisodesScanInterval,
TypeName = typeof(DownloadedEpisodesScanCommand).FullName
},
}; };
var currentTasks = _scheduledTaskRepository.All().ToList(); var currentTasks = _scheduledTaskRepository.All().ToList();
@ -102,7 +114,11 @@ public void HandleAsync(ConfigSavedEvent message)
{ {
var rss = _scheduledTaskRepository.GetDefinition(typeof(RssSyncCommand)); var rss = _scheduledTaskRepository.GetDefinition(typeof(RssSyncCommand));
rss.Interval = _configService.RssSyncInterval; rss.Interval = _configService.RssSyncInterval;
_scheduledTaskRepository.Update(rss);
var downloadedEpisodes = _scheduledTaskRepository.GetDefinition(typeof(DownloadedEpisodesScanCommand));
downloadedEpisodes.Interval = _configService.DownloadedEpisodesScanInterval;
_scheduledTaskRepository.UpdateMany(new List<ScheduledTask>{ rss, downloadedEpisodes });
} }
} }
} }

View File

@ -11,4 +11,16 @@
</span> </span>
</div> </div>
</div> </div>
<div class="control-group advanced-setting">
<label class="control-label">Drone Factory Internal</label>
<div class="controls">
<input type="number" name="downloadedEpisodesScanInterval"/>
<span class="help-inline">
<i class="icon-nd-form-info" title="Interval in minutes to scan the Drone Factory. Set to zero to disable."/>
<i class="icon-nd-form-warning" title="Setting a high interval or disabling scanning will prevent episodes from being imported."></i>
</span>
</div>
</div>
</fieldset> </fieldset>