New: Use release quality source if not in downloaded file and resolution matches

This commit is contained in:
Mark McDowall 2020-04-26 12:53:29 -07:00 committed by Bogdan
parent a3c33fe8cc
commit 8d8c08c5f2
12 changed files with 28 additions and 22 deletions

View File

@ -47,7 +47,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Aggregation.Aggregators
"Adele - 19 - 203 - That's It, I Quit, I'm Moving On.mp3" "Adele - 19 - 203 - That's It, I Quit, I'm Moving On.mp3"
}, @"C:\incoming".AsOsAgnostic()); }, @"C:\incoming".AsOsAgnostic());
Subject.Aggregate(release, true); Subject.Aggregate(release, null, true);
VerifyData(release.LocalTracks[0], "Adele", "Daydreamer", 1, 1); VerifyData(release.LocalTracks[0], "Adele", "Daydreamer", 1, 1);
VerifyData(release.LocalTracks[1], "Adele", "Best for Last", 2, 1); VerifyData(release.LocalTracks[1], "Adele", "Best for Last", 2, 1);
@ -198,7 +198,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport.Aggregation.Aggregators
var files = GivenFilenames(testcase.Item1, testcase.Item2, testcase.Item3); var files = GivenFilenames(testcase.Item1, testcase.Item2, testcase.Item3);
var release = GivenTracks(files, @"C:\incoming".AsOsAgnostic()); var release = GivenTracks(files, @"C:\incoming".AsOsAgnostic());
Subject.Aggregate(release, true); Subject.Aggregate(release, null, true);
VerifyDataAuto(release.LocalTracks, testcase.Item1, testcase.Item3); VerifyDataAuto(release.LocalTracks, testcase.Item1, testcase.Item3);
} }

View File

@ -151,8 +151,8 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
private void GivenAugmentationSuccess() private void GivenAugmentationSuccess()
{ {
Mocker.GetMock<IAugmentingService>() Mocker.GetMock<IAugmentingService>()
.Setup(s => s.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>())) .Setup(s => s.Augment(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>(), It.IsAny<bool>()))
.Callback<LocalTrack, bool>((localTrack, otherFiles) => .Callback<LocalTrack, DownloadClientItem, bool>((localTrack, downloadClientItem, otherFiles) =>
{ {
localTrack.Tracks = _localTrack.Tracks; localTrack.Tracks = _localTrack.Tracks;
}); });
@ -323,7 +323,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
GivenSpecifications(_pass1); GivenSpecifications(_pass1);
Mocker.GetMock<IAugmentingService>() Mocker.GetMock<IAugmentingService>()
.Setup(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>())) .Setup(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>(), It.IsAny<bool>()))
.Throws<TestException>(); .Throws<TestException>();
GivenAudioFiles(new[] GivenAudioFiles(new[]
@ -336,7 +336,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
var decisions = Subject.GetImportDecisions(_fileInfos, _idOverrides, null, _idConfig); var decisions = Subject.GetImportDecisions(_fileInfos, _idOverrides, null, _idConfig);
Mocker.GetMock<IAugmentingService>() Mocker.GetMock<IAugmentingService>()
.Verify(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count)); .Verify(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count));
ExceptionVerification.ExpectedErrors(3); ExceptionVerification.ExpectedErrors(3);
} }
@ -363,7 +363,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
var decisions = Subject.GetImportDecisions(_fileInfos, _idOverrides, null, _idConfig); var decisions = Subject.GetImportDecisions(_fileInfos, _idOverrides, null, _idConfig);
Mocker.GetMock<IAugmentingService>() Mocker.GetMock<IAugmentingService>()
.Verify(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count)); .Verify(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count));
decisions.Should().HaveCount(3); decisions.Should().HaveCount(3);
decisions.First().Rejections.Should().NotBeEmpty(); decisions.First().Rejections.Should().NotBeEmpty();
@ -384,7 +384,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
var decisions = Subject.GetImportDecisions(_fileInfos, _idOverrides, null, _idConfig); var decisions = Subject.GetImportDecisions(_fileInfos, _idOverrides, null, _idConfig);
Mocker.GetMock<IAugmentingService>() Mocker.GetMock<IAugmentingService>()
.Verify(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count)); .Verify(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>(), It.IsAny<bool>()), Times.Exactly(_fileInfos.Count));
decisions.Should().HaveCount(3); decisions.Should().HaveCount(3);
decisions.First().Rejections.Should().NotBeEmpty(); decisions.First().Rejections.Should().NotBeEmpty();
@ -394,7 +394,7 @@ namespace NzbDrone.Core.Test.MediaFiles.TrackImport
public void should_return_a_decision_when_exception_is_caught() public void should_return_a_decision_when_exception_is_caught()
{ {
Mocker.GetMock<IAugmentingService>() Mocker.GetMock<IAugmentingService>()
.Setup(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<bool>())) .Setup(c => c.Augment(It.IsAny<LocalTrack>(), It.IsAny<DownloadClientItem>(), It.IsAny<bool>()))
.Throws<TestException>(); .Throws<TestException>();
GivenAudioFiles(new[] GivenAudioFiles(new[]

View File

@ -50,7 +50,7 @@ namespace NzbDrone.Core.Extras.Lyrics
try try
{ {
_augmentingService.Augment(localTrack, false); _augmentingService.Augment(localTrack, null, false);
} }
catch (AugmentingFailedException) catch (AugmentingFailedException)
{ {

View File

@ -85,7 +85,7 @@ namespace NzbDrone.Core.Extras.Metadata
try try
{ {
_augmentingService.Augment(localTrack, false); _augmentingService.Augment(localTrack, null, false);
} }
catch (AugmentingFailedException) catch (AugmentingFailedException)
{ {

View File

@ -54,7 +54,7 @@ namespace NzbDrone.Core.Extras.Others
try try
{ {
_augmentingService.Augment(localTrack, false); _augmentingService.Augment(localTrack, null, false);
} }
catch (AugmentingFailedException) catch (AugmentingFailedException)
{ {

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.IO; using System.IO;
using NLog; using NLog;
using NzbDrone.Common.Disk; using NzbDrone.Common.Disk;
using NzbDrone.Core.Download;
using NzbDrone.Core.MediaFiles.EpisodeImport; using NzbDrone.Core.MediaFiles.EpisodeImport;
using NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators; using NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
@ -11,7 +12,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation
{ {
public interface IAugmentingService public interface IAugmentingService
{ {
LocalTrack Augment(LocalTrack localTrack, bool otherFiles); LocalTrack Augment(LocalTrack localTrack, DownloadClientItem downloadClientItem, bool otherFiles);
LocalAlbumRelease Augment(LocalAlbumRelease localAlbum); LocalAlbumRelease Augment(LocalAlbumRelease localAlbum);
} }
@ -33,7 +34,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation
_logger = logger; _logger = logger;
} }
public LocalTrack Augment(LocalTrack localTrack, bool otherFiles) public LocalTrack Augment(LocalTrack localTrack, DownloadClientItem downloadClientItem, bool otherFiles)
{ {
if (localTrack.DownloadClientAlbumInfo == null && if (localTrack.DownloadClientAlbumInfo == null &&
localTrack.FolderAlbumInfo == null && localTrack.FolderAlbumInfo == null &&
@ -52,7 +53,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation
{ {
try try
{ {
augmenter.Aggregate(localTrack, otherFiles); augmenter.Aggregate(localTrack, downloadClientItem, otherFiles);
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -71,7 +72,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation
{ {
try try
{ {
augmenter.Aggregate(localAlbum, false); augmenter.Aggregate(localAlbum, null, false);
} }
catch (Exception ex) catch (Exception ex)
{ {

View File

@ -5,6 +5,7 @@ using System.Linq;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using NLog; using NLog;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Download;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators
@ -55,7 +56,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators
_logger = logger; _logger = logger;
} }
public LocalAlbumRelease Aggregate(LocalAlbumRelease release, bool others) public LocalAlbumRelease Aggregate(LocalAlbumRelease release, DownloadClientItem downloadClientItem, bool others)
{ {
var tracks = release.LocalTracks; var tracks = release.LocalTracks;
if (tracks.Any(x => x.FileTrackInfo.Title.IsNullOrWhiteSpace()) if (tracks.Any(x => x.FileTrackInfo.Title.IsNullOrWhiteSpace())

View File

@ -1,10 +1,11 @@
using NzbDrone.Core.Download;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators
{ {
public class AggregateQuality : IAggregate<LocalTrack> public class AggregateQuality : IAggregate<LocalTrack>
{ {
public LocalTrack Aggregate(LocalTrack localTrack, bool otherFiles) public LocalTrack Aggregate(LocalTrack localTrack, DownloadClientItem downloadClientItem, bool otherFiles)
{ {
var quality = localTrack.FileTrackInfo?.Quality; var quality = localTrack.FileTrackInfo?.Quality;

View File

@ -1,11 +1,12 @@
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Download;
using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators
{ {
public class AggregateReleaseGroup : IAggregate<LocalTrack> public class AggregateReleaseGroup : IAggregate<LocalTrack>
{ {
public LocalTrack Aggregate(LocalTrack localTrack, bool otherFiles) public LocalTrack Aggregate(LocalTrack localTrack, DownloadClientItem downloadClientItem, bool otherFiles)
{ {
var releaseGroup = localTrack.DownloadClientAlbumInfo?.ReleaseGroup; var releaseGroup = localTrack.DownloadClientAlbumInfo?.ReleaseGroup;

View File

@ -1,7 +1,9 @@
using NzbDrone.Core.Download;
namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators namespace NzbDrone.Core.MediaFiles.TrackImport.Aggregation.Aggregators
{ {
public interface IAggregate<T> public interface IAggregate<T>
{ {
T Aggregate(T item, bool otherFiles); T Aggregate(T item, DownloadClientItem downloadClientItem, bool otherFiles);
} }
} }

View File

@ -185,7 +185,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Identification
})) }))
.ToList(); .ToList();
localTracks.ForEach(x => _augmentingService.Augment(x, true)); localTracks.ForEach(x => _augmentingService.Augment(x, null, true));
return localTracks; return localTracks;
} }

View File

@ -119,7 +119,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport
try try
{ {
// TODO fix otherfiles? // TODO fix otherfiles?
_augmentingService.Augment(localTrack, true); _augmentingService.Augment(localTrack, downloadClientItem, true);
localTracks.Add(localTrack); localTracks.Add(localTrack);
} }
catch (AugmentingFailedException) catch (AugmentingFailedException)