diff --git a/src/NzbDrone.Api/Indexers/ReleaseResource.cs b/src/NzbDrone.Api/Indexers/ReleaseResource.cs index ddf800331..3086113c5 100644 --- a/src/NzbDrone.Api/Indexers/ReleaseResource.cs +++ b/src/NzbDrone.Api/Indexers/ReleaseResource.cs @@ -14,6 +14,7 @@ namespace NzbDrone.Api.Indexers public Int32 QualityWeight { get; set; } public Int32 Age { get; set; } public Double AgeHours { get; set; } + public Double AgeMinutes { get; set; } public Int64 Size { get; set; } public String Indexer { get; set; } public String ReleaseGroup { get; set; } diff --git a/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs b/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs index df8c9939f..8129043fe 100644 --- a/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs +++ b/src/NzbDrone.Core.Test/DecisionEngineTests/RssSync/DelaySpecificationFixture.cs @@ -114,7 +114,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync _remoteEpisode.ParsedEpisodeInfo.Quality = new QualityModel(Quality.HDTV720p); _remoteEpisode.Release.PublishDate = DateTime.UtcNow.AddHours(-10); - _delayProfile.UsenetDelay = 1; + _delayProfile.UsenetDelay = 60; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); } @@ -125,7 +125,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync _remoteEpisode.ParsedEpisodeInfo.Quality = new QualityModel(Quality.SDTV); _remoteEpisode.Release.PublishDate = DateTime.UtcNow; - _delayProfile.UsenetDelay = 12; + _delayProfile.UsenetDelay = 720; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeFalse(); } @@ -143,7 +143,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync .Setup(s => s.IsRevisionUpgrade(It.IsAny(), It.IsAny())) .Returns(true); - _delayProfile.UsenetDelay = 12; + _delayProfile.UsenetDelay = 720; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); } @@ -161,7 +161,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync .Setup(s => s.IsRevisionUpgrade(It.IsAny(), It.IsAny())) .Returns(true); - _delayProfile.UsenetDelay = 12; + _delayProfile.UsenetDelay = 720; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeTrue(); } @@ -174,7 +174,7 @@ namespace NzbDrone.Core.Test.DecisionEngineTests.RssSync GivenExistingFile(new QualityModel(Quality.SDTV)); - _delayProfile.UsenetDelay = 12; + _delayProfile.UsenetDelay = 720; Subject.IsSatisfiedBy(_remoteEpisode, null).Accepted.Should().BeFalse(); } diff --git a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs index 5b4e23608..a824fa298 100644 --- a/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs +++ b/src/NzbDrone.Core/DecisionEngine/Specifications/RssSync/DelaySpecification.cs @@ -85,14 +85,14 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync var oldest = _pendingReleaseService.OldestPendingRelease(subject.Series.Id, episodeIds); - if (oldest != null && oldest.Release.AgeHours > delay) + if (oldest != null && oldest.Release.AgeMinutes > delay) { return Decision.Accept(); } - if (subject.Release.AgeHours < delay) + if (subject.Release.AgeMinutes < delay) { - _logger.Debug("Waiting for better quality release, There is a {0} hour delay on {1}", delay, subject.Release.DownloadProtocol); + _logger.Debug("Waiting for better quality release, There is a {0} minute delay on {1}", delay, subject.Release.DownloadProtocol); return Decision.Reject("Waiting for better quality release"); } diff --git a/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs b/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs index 91fb3acdb..7f19c5ce4 100644 --- a/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs +++ b/src/NzbDrone.Core/Parser/Model/ReleaseInfo.cs @@ -40,6 +40,18 @@ namespace NzbDrone.Core.Parser.Model private set { } } + public Double AgeMinutes + { + get + { + return DateTime.UtcNow.Subtract(PublishDate).TotalMinutes; + } + + //This prevents manually downloading a release from blowing up in mono + //TODO: Is there a better way? + private set { } + } + public override string ToString() { return String.Format("[{0}] {1} [{2}]", PublishDate, Title, Size);