From 038deb0e8d389cf86dd8ceace033d32a881bab0e Mon Sep 17 00:00:00 2001 From: ta264 Date: Wed, 27 Mar 2019 07:49:32 +0000 Subject: [PATCH] Fixed: Tag writing when release country is missing (#700) --- .../MediaFiles/AudioTagServiceFixture.cs | 46 +++++++++++++++++++ .../MediaFiles/AudioTagService.cs | 4 +- 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/src/NzbDrone.Core.Test/MediaFiles/AudioTagServiceFixture.cs b/src/NzbDrone.Core.Test/MediaFiles/AudioTagServiceFixture.cs index fad3a9cf4..3efee379b 100644 --- a/src/NzbDrone.Core.Test/MediaFiles/AudioTagServiceFixture.cs +++ b/src/NzbDrone.Core.Test/MediaFiles/AudioTagServiceFixture.cs @@ -279,5 +279,51 @@ namespace NzbDrone.Core.Test.MediaFiles.AudioTagServiceFixture tag.Quality.Should().NotBeNull(); tag.MediaInfo.Should().NotBeNull(); } + + private TrackFile GivenPopulatedTrackfile() + { + var meta = Builder.CreateNew().Build(); + var artist = Builder.CreateNew() + .With(x => x.Metadata = meta) + .Build(); + + var album = Builder.CreateNew() + .With(x => x.Artist = artist) + .Build(); + + var media = Builder.CreateListOfSize(2).Build() as List; + var release = Builder.CreateNew() + .With(x => x.Album = album) + .With(x => x.Media = media) + .With(x => x.Country = new List()) + .With(x => x.Label = new List()) + .Build(); + + var tracks = Builder.CreateListOfSize(10) + .All() + .With(x => x.AlbumRelease = release) + .With(x => x.ArtistMetadata = meta) + .TheFirst(5) + .With(x => x.MediumNumber = 1) + .TheNext(5) + .With(x => x.MediumNumber = 2) + .Build() as List; + release.Tracks = tracks; + + var file = Builder.CreateNew() + .With(x => x.Tracks = new List { tracks[0] }) + .Build(); + + return file; + } + + [Test] + public void get_metadata_should_not_fail_with_missing_country() + { + var file = GivenPopulatedTrackfile(); + var tag = Subject.GetTrackMetadata(file); + + tag.MusicBrainzReleaseCountry.Should().BeNull(); + } } } diff --git a/src/NzbDrone.Core/MediaFiles/AudioTagService.cs b/src/NzbDrone.Core/MediaFiles/AudioTagService.cs index cff10c204..a1fe3f91e 100644 --- a/src/NzbDrone.Core/MediaFiles/AudioTagService.cs +++ b/src/NzbDrone.Core/MediaFiles/AudioTagService.cs @@ -67,7 +67,7 @@ namespace NzbDrone.Core.MediaFiles return new AudioTag(path); } - private AudioTag GetTrackMetadata(TrackFile trackfile) + public AudioTag GetTrackMetadata(TrackFile trackfile) { var track = trackfile.Tracks.Value[0]; var release = track.AlbumRelease.Value; @@ -90,7 +90,7 @@ namespace NzbDrone.Core.MediaFiles OriginalReleaseDate = album.ReleaseDate, OriginalYear = (uint)album.ReleaseDate?.Year, Publisher = release.Label.FirstOrDefault(), - MusicBrainzReleaseCountry = IsoCountries.Find(release.Country.FirstOrDefault()).TwoLetterCode, + MusicBrainzReleaseCountry = IsoCountries.Find(release.Country.FirstOrDefault())?.TwoLetterCode, MusicBrainzReleaseStatus = release.Status.ToLower(), MusicBrainzReleaseType = album.AlbumType.ToLower(), MusicBrainzReleaseId = release.ForeignReleaseId,