diff --git a/src/NzbDrone.Core.Test/MediaCoverTests/MediaCoverServiceFixture.cs b/src/NzbDrone.Core.Test/MediaCoverTests/MediaCoverServiceFixture.cs index b82c224d3..03c687ab2 100644 --- a/src/NzbDrone.Core.Test/MediaCoverTests/MediaCoverServiceFixture.cs +++ b/src/NzbDrone.Core.Test/MediaCoverTests/MediaCoverServiceFixture.cs @@ -66,6 +66,30 @@ namespace NzbDrone.Core.Test.MediaCoverTests covers.Single().Url.Should().Be("/MediaCover/12/banner" + extension + "?lastWrite=1234"); } + [TestCase(".png")] + [TestCase(".jpg")] + public void convert_to_local_url_should_not_change_extension(string extension) + { + var covers = new List + { + new MediaCover.MediaCover + { + Url = "http://dummy.com/test" + extension, + CoverType = MediaCoverTypes.Banner + } + }; + + Mocker.GetMock().Setup(c => c.FileGetLastWrite(It.IsAny())) + .Returns(new DateTime(1234)); + + Mocker.GetMock().Setup(c => c.FileExists(It.IsAny())) + .Returns(true); + + Subject.ConvertToLocalUrls(12, MediaCoverEntity.Artist, covers); + + covers.Single().Extension.Should().Be(extension); + } + [TestCase(".png")] [TestCase(".jpg")] public void should_convert_album_cover_urls_to_local(string extension) diff --git a/src/NzbDrone.Core/MediaCover/MediaCover.cs b/src/NzbDrone.Core/MediaCover/MediaCover.cs index ea77a9e44..bdca37a68 100644 --- a/src/NzbDrone.Core/MediaCover/MediaCover.cs +++ b/src/NzbDrone.Core/MediaCover/MediaCover.cs @@ -1,4 +1,5 @@ using System.IO; +using NzbDrone.Common.Extensions; using NzbDrone.Core.Datastore; namespace NzbDrone.Core.MediaCover @@ -25,9 +26,25 @@ namespace NzbDrone.Core.MediaCover public class MediaCover : IEmbeddedDocument { + private string _url; + public string Url + { + get + { + return _url; + } + set + { + _url = value; + if (Extension.IsNullOrWhiteSpace()) + { + Extension = Path.GetExtension(value); + } + } + } + public MediaCoverTypes CoverType { get; set; } - public string Url { get; set; } - public string Extension => Path.GetExtension(Url); + public string Extension { get; private set; } public MediaCover() { diff --git a/src/NzbDrone.Core/MediaFiles/AudioTagService.cs b/src/NzbDrone.Core/MediaFiles/AudioTagService.cs index 8d660589a..f4b1ec50e 100644 --- a/src/NzbDrone.Core/MediaFiles/AudioTagService.cs +++ b/src/NzbDrone.Core/MediaFiles/AudioTagService.cs @@ -86,6 +86,7 @@ namespace NzbDrone.Core.MediaFiles if (cover != null) { imageFile = _mediaCoverService.GetCoverPath(album.Id, MediaCoverEntity.Album, cover.CoverType, cover.Extension, null); + _logger.Trace($"Embedding: {imageFile}"); var fileInfo = _diskProvider.GetFileInfo(imageFile); if (fileInfo.Exists) {