1
0
mirror of https://github.com/Radarr/Radarr.git synced 2024-11-20 01:42:35 +01:00

Fixed: Calculate movie availability comparing UTC dates

This commit is contained in:
Bogdan 2024-07-28 12:56:30 +03:00 committed by Qstick
parent 04c5e6c2a6
commit 44c7c71226
2 changed files with 14 additions and 15 deletions

View File

@ -7,12 +7,12 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
{ {
public class AvailabilitySpecification : IDecisionEngineSpecification public class AvailabilitySpecification : IDecisionEngineSpecification
{ {
private readonly IConfigService _settingsService; private readonly IConfigService _configService;
private readonly Logger _logger; private readonly Logger _logger;
public AvailabilitySpecification(IConfigService settingsService, Logger logger) public AvailabilitySpecification(IConfigService configService, Logger logger)
{ {
_settingsService = settingsService; _configService = configService;
_logger = logger; _logger = logger;
} }
@ -21,18 +21,17 @@ public AvailabilitySpecification(IConfigService settingsService, Logger logger)
public Decision IsSatisfiedBy(RemoteMovie subject, SearchCriteriaBase searchCriteria) public Decision IsSatisfiedBy(RemoteMovie subject, SearchCriteriaBase searchCriteria)
{ {
if (searchCriteria != null) if (searchCriteria is { UserInvokedSearch: true })
{
if (searchCriteria.UserInvokedSearch)
{ {
_logger.Debug("Skipping availability check during search"); _logger.Debug("Skipping availability check during search");
return Decision.Accept(); return Decision.Accept();
} }
}
if (!subject.Movie.IsAvailable(_settingsService.AvailabilityDelay)) var availabilityDelay = _configService.AvailabilityDelay;
if (!subject.Movie.IsAvailable(availabilityDelay))
{ {
return Decision.Reject("Movie {0} will only be considered available {1} days after {2}", subject.Movie, _settingsService.AvailabilityDelay, subject.Movie.MinimumAvailability.ToString()); return Decision.Reject("Movie {0} will only be considered available {1} days after {2}", subject.Movie, availabilityDelay, subject.Movie.MinimumAvailability.ToString());
} }
return Decision.Accept(); return Decision.Accept();

View File

@ -81,7 +81,7 @@ public bool IsAvailable(int delay = 0)
// This more complex sequence handles the delay // This more complex sequence handles the delay
DateTime minimumAvailabilityDate; DateTime minimumAvailabilityDate;
if ((MinimumAvailability == MovieStatusType.TBA) || (MinimumAvailability == MovieStatusType.Announced)) if (MinimumAvailability is MovieStatusType.TBA or MovieStatusType.Announced)
{ {
minimumAvailabilityDate = DateTime.MinValue; minimumAvailabilityDate = DateTime.MinValue;
} }
@ -105,16 +105,16 @@ public bool IsAvailable(int delay = 0)
} }
else else
{ {
minimumAvailabilityDate = MovieMetadata.Value.InCinemas.HasValue ? MovieMetadata.Value.InCinemas.Value.AddDays(90) : DateTime.MaxValue; minimumAvailabilityDate = MovieMetadata.Value.InCinemas?.AddDays(90) ?? DateTime.MaxValue;
} }
} }
if (minimumAvailabilityDate == DateTime.MinValue || minimumAvailabilityDate == DateTime.MaxValue) if (minimumAvailabilityDate == DateTime.MinValue || minimumAvailabilityDate == DateTime.MaxValue)
{ {
return DateTime.Now >= minimumAvailabilityDate; return DateTime.UtcNow >= minimumAvailabilityDate;
} }
return DateTime.Now >= minimumAvailabilityDate.AddDays((double)delay); return DateTime.UtcNow >= minimumAvailabilityDate.AddDays(delay);
} }
public override string ToString() public override string ToString()