diff --git a/src/NzbDrone.Core/MediaCover/MediaCover.cs b/src/NzbDrone.Core/MediaCover/MediaCover.cs index 446864716..edddb5648 100644 --- a/src/NzbDrone.Core/MediaCover/MediaCover.cs +++ b/src/NzbDrone.Core/MediaCover/MediaCover.cs @@ -16,7 +16,7 @@ public enum MediaCoverTypes Cover = 6, Disc = 7, Logo = 8, - Clearart = 9 + Clearlogo = 9 } public enum MediaCoverEntity diff --git a/src/NzbDrone.Core/MediaCover/MediaCoverService.cs b/src/NzbDrone.Core/MediaCover/MediaCoverService.cs index ac423e415..680321d8c 100644 --- a/src/NzbDrone.Core/MediaCover/MediaCoverService.cs +++ b/src/NzbDrone.Core/MediaCover/MediaCoverService.cs @@ -19,7 +19,7 @@ namespace NzbDrone.Core.MediaCover public interface IMapCoversToLocal { void ConvertToLocalUrls(int entityId, MediaCoverEntity coverEntity, IEnumerable covers); - string GetCoverPath(int entityId, MediaCoverEntity coverEntity, MediaCoverTypes mediaCoverTypes, string extension, int? height = null); + string GetCoverPath(int entityId, MediaCoverEntity coverEntity, MediaCoverTypes coverType, string extension, int? height = null); void EnsureBookCovers(Book book); } @@ -68,33 +68,36 @@ public MediaCoverService(IImageResizer resizer, _coverRootFolder = appFolderInfo.GetMediaCoverPath(); } - public string GetCoverPath(int entityId, MediaCoverEntity coverEntity, MediaCoverTypes coverTypes, string extension, int? height = null) + public string GetCoverPath(int entityId, MediaCoverEntity coverEntity, MediaCoverTypes coverType, string extension, int? height = null) { var heightSuffix = height.HasValue ? "-" + height.ToString() : ""; if (coverEntity == MediaCoverEntity.Book) { - return Path.Combine(GetBookCoverPath(entityId), coverTypes.ToString().ToLower() + heightSuffix + extension); - } - else - { - return Path.Combine(GetAuthorCoverPath(entityId), coverTypes.ToString().ToLower() + heightSuffix + extension); + return Path.Combine(GetBookCoverPath(entityId), coverType.ToString().ToLower() + heightSuffix + GetExtension(coverType, extension)); } + + return Path.Combine(GetAuthorCoverPath(entityId), coverType.ToString().ToLower() + heightSuffix + GetExtension(coverType, extension)); } public void ConvertToLocalUrls(int entityId, MediaCoverEntity coverEntity, IEnumerable covers) { foreach (var mediaCover in covers) { + if (mediaCover.CoverType == MediaCoverTypes.Unknown) + { + continue; + } + var filePath = GetCoverPath(entityId, coverEntity, mediaCover.CoverType, mediaCover.Extension, null); if (coverEntity == MediaCoverEntity.Book) { - mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/Books/" + entityId + "/" + mediaCover.CoverType.ToString().ToLower() + mediaCover.Extension; + mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/Books/" + entityId + "/" + mediaCover.CoverType.ToString().ToLower() + GetExtension(mediaCover.CoverType, mediaCover.Extension); } else { - mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/" + entityId + "/" + mediaCover.CoverType.ToString().ToLower() + mediaCover.Extension; + mediaCover.Url = _configFileProvider.UrlBase + @"/MediaCover/" + entityId + "/" + mediaCover.CoverType.ToString().ToLower() + GetExtension(mediaCover.CoverType, mediaCover.Extension); } if (_diskProvider.FileExists(filePath)) @@ -283,6 +286,15 @@ private int[] GetDefaultHeights(MediaCoverTypes coverType) } } + private string GetExtension(MediaCoverTypes coverType, string defaultExtension) + { + return coverType switch + { + MediaCoverTypes.Clearlogo => ".png", + _ => defaultExtension + }; + } + private HttpHeader GetServerHeaders(string url) { // Goodreads doesn't allow a HEAD, so request a zero byte range instead