mirror of
https://github.com/Radarr/Radarr.git
synced 2024-11-04 10:02:40 +01:00
User can now configure RSS Sync Interval
This commit is contained in:
parent
3a3d43b702
commit
083f649b5c
@ -2,6 +2,8 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
|
using NzbDrone.Common.Messaging;
|
||||||
|
using NzbDrone.Core.Configuration.Events;
|
||||||
using NzbDrone.Core.Download;
|
using NzbDrone.Core.Download;
|
||||||
using NzbDrone.Core.Download.Clients.Nzbget;
|
using NzbDrone.Core.Download.Clients.Nzbget;
|
||||||
using NzbDrone.Core.Download.Clients.Sabnzbd;
|
using NzbDrone.Core.Download.Clients.Sabnzbd;
|
||||||
@ -16,12 +18,14 @@ public enum ConfigKey
|
|||||||
public class ConfigService : IConfigService
|
public class ConfigService : IConfigService
|
||||||
{
|
{
|
||||||
private readonly IConfigRepository _repository;
|
private readonly IConfigRepository _repository;
|
||||||
|
private readonly IMessageAggregator _messageAggregator;
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
private static Dictionary<string, string> _cache;
|
private static Dictionary<string, string> _cache;
|
||||||
|
|
||||||
public ConfigService(IConfigRepository repository, Logger logger)
|
public ConfigService(IConfigRepository repository, IMessageAggregator messageAggregator, Logger logger)
|
||||||
{
|
{
|
||||||
_repository = repository;
|
_repository = repository;
|
||||||
|
_messageAggregator = messageAggregator;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_cache = new Dictionary<string, string>();
|
_cache = new Dictionary<string, string>();
|
||||||
}
|
}
|
||||||
@ -63,6 +67,8 @@ public void SaveValues(Dictionary<string, object> configValues)
|
|||||||
if (!equal)
|
if (!equal)
|
||||||
SetValue(configValue.Key, configValue.Value.ToString());
|
SetValue(configValue.Key, configValue.Value.ToString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_messageAggregator.PublishEvent(new ConfigSavedEvent());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String SabHost
|
public String SabHost
|
||||||
@ -238,6 +244,13 @@ public string ReleaseRestrictions
|
|||||||
set { SetValue("ReleaseRestrictions", value); }
|
set { SetValue("ReleaseRestrictions", value); }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Int32 RssSyncInterval
|
||||||
|
{
|
||||||
|
get { return GetValueInt("RssSyncInterval", 15); }
|
||||||
|
|
||||||
|
set { SetValue("RssSyncInterval", value); }
|
||||||
|
}
|
||||||
|
|
||||||
private string GetValue(string key)
|
private string GetValue(string key)
|
||||||
{
|
{
|
||||||
return GetValue(key, String.Empty);
|
return GetValue(key, String.Empty);
|
||||||
|
8
NzbDrone.Core/Configuration/Events/ConfigSavedEvent.cs
Normal file
8
NzbDrone.Core/Configuration/Events/ConfigSavedEvent.cs
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
using NzbDrone.Common.Messaging;
|
||||||
|
|
||||||
|
namespace NzbDrone.Core.Configuration.Events
|
||||||
|
{
|
||||||
|
public class ConfigSavedEvent : IEvent
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
@ -36,6 +36,7 @@ public interface IConfigService
|
|||||||
PriorityType NzbgetRecentTvPriority { get; set; }
|
PriorityType NzbgetRecentTvPriority { get; set; }
|
||||||
PriorityType NzbgetOlderTvPriority { get; set; }
|
PriorityType NzbgetOlderTvPriority { get; set; }
|
||||||
string ReleaseRestrictions { get; set; }
|
string ReleaseRestrictions { get; set; }
|
||||||
|
Int32 RssSyncInterval { get; set; }
|
||||||
void SaveValues(Dictionary<string, object> configValues);
|
void SaveValues(Dictionary<string, object> configValues);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using NLog;
|
using NLog;
|
||||||
using NzbDrone.Common.Messaging;
|
using NzbDrone.Common.Messaging;
|
||||||
|
using NzbDrone.Core.Configuration;
|
||||||
|
using NzbDrone.Core.Configuration.Events;
|
||||||
using NzbDrone.Core.Indexers;
|
using NzbDrone.Core.Indexers;
|
||||||
using NzbDrone.Core.Instrumentation.Commands;
|
using NzbDrone.Core.Instrumentation.Commands;
|
||||||
using NzbDrone.Core.Lifecycle;
|
using NzbDrone.Core.Lifecycle;
|
||||||
@ -18,18 +20,19 @@ public interface ITaskManager
|
|||||||
IList<ScheduledTask> GetPending();
|
IList<ScheduledTask> GetPending();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class TaskManager : IHandle<ApplicationStartedEvent>, IHandleAsync<CommandExecutedEvent>, ITaskManager
|
public class TaskManager : ITaskManager, IHandle<ApplicationStartedEvent>, IHandleAsync<CommandExecutedEvent>, IHandleAsync<ConfigSavedEvent>
|
||||||
{
|
{
|
||||||
private readonly IScheduledTaskRepository _scheduledTaskRepository;
|
private readonly IScheduledTaskRepository _scheduledTaskRepository;
|
||||||
|
private readonly IConfigService _configService;
|
||||||
private readonly Logger _logger;
|
private readonly Logger _logger;
|
||||||
|
|
||||||
public TaskManager(IScheduledTaskRepository scheduledTaskRepository, Logger logger)
|
public TaskManager(IScheduledTaskRepository scheduledTaskRepository, IConfigService configService, Logger logger)
|
||||||
{
|
{
|
||||||
_scheduledTaskRepository = scheduledTaskRepository;
|
_scheduledTaskRepository = scheduledTaskRepository;
|
||||||
|
_configService = configService;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
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.LastExecution.AddMinutes(c.Interval) < DateTime.UtcNow).ToList();
|
||||||
@ -39,7 +42,7 @@ public void Handle(ApplicationStartedEvent message)
|
|||||||
{
|
{
|
||||||
var defaultTasks = new[]
|
var defaultTasks = new[]
|
||||||
{
|
{
|
||||||
new ScheduledTask{ Interval = 15, TypeName = typeof(RssSyncCommand).FullName},
|
new ScheduledTask{ Interval = _configService.RssSyncInterval, TypeName = typeof(RssSyncCommand).FullName},
|
||||||
new ScheduledTask{ Interval = 12*60, TypeName = typeof(UpdateXemMappingsCommand).FullName},
|
new ScheduledTask{ Interval = 12*60, TypeName = typeof(UpdateXemMappingsCommand).FullName},
|
||||||
new ScheduledTask{ Interval = 12*60, TypeName = typeof(RefreshSeriesCommand).FullName},
|
new ScheduledTask{ Interval = 12*60, TypeName = typeof(RefreshSeriesCommand).FullName},
|
||||||
new ScheduledTask{ Interval = 1, TypeName = typeof(DownloadedEpisodesScanCommand).FullName},
|
new ScheduledTask{ Interval = 1, TypeName = typeof(DownloadedEpisodesScanCommand).FullName},
|
||||||
@ -80,5 +83,12 @@ public void HandleAsync(CommandExecutedEvent message)
|
|||||||
_scheduledTaskRepository.SetLastExecutionTime(scheduledTask.Id, DateTime.UtcNow);
|
_scheduledTaskRepository.SetLastExecutionTime(scheduledTask.Id, DateTime.UtcNow);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void HandleAsync(ConfigSavedEvent message)
|
||||||
|
{
|
||||||
|
var rss = _scheduledTaskRepository.GetDefinition(typeof (RssSyncCommand));
|
||||||
|
rss.Interval = _configService.RssSyncInterval;
|
||||||
|
_scheduledTaskRepository.Update(rss);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -117,6 +117,7 @@
|
|||||||
<Compile Include="Configuration\ConfigFileProvider.cs" />
|
<Compile Include="Configuration\ConfigFileProvider.cs" />
|
||||||
<Compile Include="Configuration\ConfigRepository.cs" />
|
<Compile Include="Configuration\ConfigRepository.cs" />
|
||||||
<Compile Include="Configuration\Events\ConfigFileSavedEvent.cs" />
|
<Compile Include="Configuration\Events\ConfigFileSavedEvent.cs" />
|
||||||
|
<Compile Include="Configuration\Events\ConfigSavedEvent.cs" />
|
||||||
<Compile Include="Configuration\IConfigService.cs" />
|
<Compile Include="Configuration\IConfigService.cs" />
|
||||||
<Compile Include="DataAugmentation\DailySeries\DailySeriesDataProxy.cs" />
|
<Compile Include="DataAugmentation\DailySeries\DailySeriesDataProxy.cs" />
|
||||||
<Compile Include="DataAugmentation\DailySeries\DailySeriesService.cs" />
|
<Compile Include="DataAugmentation\DailySeries\DailySeriesService.cs" />
|
||||||
|
@ -9,22 +9,28 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--<div class="control-group">-->
|
<div class="control-group">
|
||||||
<!--<label class="control-label">RSS Sync Interval</label>-->
|
<label class="control-label">RSS Sync Interval</label>
|
||||||
|
|
||||||
<!--<div class="controls">-->
|
<div class="controls">
|
||||||
<!--<input type="number" min="15" max="120" name="rssSyncInterval"/>-->
|
<input type="number" min="10" max="120" name="rssSyncInterval"/>
|
||||||
<!--</div>-->
|
|
||||||
<!--</div>-->
|
<span class="help-inline">
|
||||||
|
<i class="icon-form-warning" title="This will apply to all indexers, please follow the rules set forth by them"/>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="control-group">
|
<div class="control-group">
|
||||||
<label class="control-label">Release Restrictions</label>
|
<label class="control-label">Release Restrictions</label>
|
||||||
|
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<textarea rows="3" name="releaseRestrictions" class="release-restrictions"></textarea>
|
<textarea rows="3" name="releaseRestrictions" class="release-restrictions"></textarea>
|
||||||
|
|
||||||
<span class="help-inline">
|
<span class="help-inline">
|
||||||
<i class="icon-question-sign" title="Blacklist NZBs based on these words (case-insensitive)"/>
|
<i class="icon-question-sign" title="Blacklist NZBs based on these words (case-insensitive)"/>
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<span class="text-area-help">Newline-delimited set of rules</span>
|
<span class="text-area-help">Newline-delimited set of rules</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user