From eaa1578c656082bb9a20666324b60959d9991a5f Mon Sep 17 00:00:00 2001 From: ta264 Date: Mon, 19 Jul 2021 21:57:52 +0100 Subject: [PATCH] Fixed: Error trying to write calibre tags when calibre not enabled --- .../Books/Services/RefreshEditionService.cs | 14 +++++--------- src/NzbDrone.Core/MediaFiles/AudioTagService.cs | 2 -- .../MediaFiles/BookImport/ImportApprovedBooks.cs | 12 ++++-------- src/NzbDrone.Core/MediaFiles/EbookTagService.cs | 8 ++++++-- src/NzbDrone.Core/MediaFiles/MetadataTagService.cs | 10 +++++++++- .../MediaFiles/UpgradeMediaFileService.cs | 8 ++++---- 6 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/NzbDrone.Core/Books/Services/RefreshEditionService.cs b/src/NzbDrone.Core/Books/Services/RefreshEditionService.cs index f63e3ed92..d068a869b 100644 --- a/src/NzbDrone.Core/Books/Services/RefreshEditionService.cs +++ b/src/NzbDrone.Core/Books/Services/RefreshEditionService.cs @@ -14,18 +14,15 @@ public interface IRefreshEditionService public class RefreshEditionService : IRefreshEditionService { private readonly IEditionService _editionService; - private readonly IAudioTagService _audioTagService; - private readonly IEBookTagService _eBookTagService; + private readonly IMetadataTagService _metadataTagService; private readonly Logger _logger; public RefreshEditionService(IEditionService editionService, - IAudioTagService audioTagService, - IEBookTagService eBookTagService, - Logger logger) + IMetadataTagService metadataTagService, + Logger logger) { _editionService = editionService; - _audioTagService = audioTagService; - _eBookTagService = eBookTagService; + _metadataTagService = metadataTagService; _logger = logger; } @@ -54,8 +51,7 @@ public bool RefreshEditionInfo(List add, List update, List Import(List> decisions, bool } } - _audioTagService.WriteTags(bookFile, false); - _eBookTagService.WriteTags(bookFile, false); + _metadataTagService.WriteTags(bookFile, false); } filesToAdd.Add(bookFile); diff --git a/src/NzbDrone.Core/MediaFiles/EbookTagService.cs b/src/NzbDrone.Core/MediaFiles/EbookTagService.cs index 92286ba41..5e0c5d56e 100644 --- a/src/NzbDrone.Core/MediaFiles/EbookTagService.cs +++ b/src/NzbDrone.Core/MediaFiles/EbookTagService.cs @@ -12,7 +12,6 @@ using NzbDrone.Core.Configuration; using NzbDrone.Core.MediaFiles.Azw; using NzbDrone.Core.MediaFiles.Commands; -using NzbDrone.Core.Messaging.Commands; using NzbDrone.Core.Parser.Model; using NzbDrone.Core.Qualities; using NzbDrone.Core.RootFolders; @@ -107,7 +106,7 @@ public void SyncTags(List editions) _logger.Debug($"Syncing ebook tags for {edition}"); - foreach (var file in bookFiles) + foreach (var file in bookFiles.Where(x => x.CalibreId != 0)) { // populate tracks (which should also have release/book/author set) because // not all of the updates will have been committed to the database yet @@ -169,6 +168,11 @@ public void RetagAuthor(RetagAuthorCommand message) private void WriteTagsInternal(BookFile file, bool updateCover, bool embedMetadata) { + if (file.CalibreId == 0) + { + _logger.Trace($"No calibre id for {file.Path}, skipping writing tags"); + } + var rootFolder = _rootFolderService.GetBestRootFolder(file.Path); _calibre.SetFields(file, rootFolder.CalibreSettings, updateCover, embedMetadata); diff --git a/src/NzbDrone.Core/MediaFiles/MetadataTagService.cs b/src/NzbDrone.Core/MediaFiles/MetadataTagService.cs index b122b3286..9d90773d0 100644 --- a/src/NzbDrone.Core/MediaFiles/MetadataTagService.cs +++ b/src/NzbDrone.Core/MediaFiles/MetadataTagService.cs @@ -4,6 +4,7 @@ using System.Linq; using NLog; using NzbDrone.Common.Instrumentation.Extensions; +using NzbDrone.Core.Books; using NzbDrone.Core.MediaFiles.Commands; using NzbDrone.Core.Messaging.Commands; using NzbDrone.Core.Parser.Model; @@ -14,6 +15,7 @@ public interface IMetadataTagService { ParsedTrackInfo ReadTags(IFileInfo file); void WriteTags(BookFile trackfile, bool newDownload, bool force = false); + void SyncTags(List books); List GetRetagPreviewsByAuthor(int authorId); List GetRetagPreviewsByBook(int authorId); } @@ -55,12 +57,18 @@ public void WriteTags(BookFile bookFile, bool newDownload, bool force = false) { _audioTagService.WriteTags(bookFile, newDownload, force); } - else + else if (bookFile.CalibreId > 0) { _eBookTagService.WriteTags(bookFile, newDownload, force); } } + public void SyncTags(List editions) + { + _audioTagService.SyncTags(editions); + _eBookTagService.SyncTags(editions); + } + public List GetRetagPreviewsByAuthor(int authorId) { var previews = _audioTagService.GetRetagPreviewsByAuthor(authorId); diff --git a/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs b/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs index e8118d6ec..e2b161dbb 100644 --- a/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs +++ b/src/NzbDrone.Core/MediaFiles/UpgradeMediaFileService.cs @@ -22,7 +22,7 @@ public class UpgradeMediaFileService : IUpgradeMediaFiles private readonly IConfigService _configService; private readonly IRecycleBinProvider _recycleBinProvider; private readonly IMediaFileService _mediaFileService; - private readonly IAudioTagService _audioTagService; + private readonly IMetadataTagService _metadataTagService; private readonly IMoveBookFiles _bookFileMover; private readonly IDiskProvider _diskProvider; private readonly IRootFolderService _rootFolderService; @@ -33,7 +33,7 @@ public class UpgradeMediaFileService : IUpgradeMediaFiles public UpgradeMediaFileService(IConfigService configService, IRecycleBinProvider recycleBinProvider, IMediaFileService mediaFileService, - IAudioTagService audioTagService, + IMetadataTagService metadataTagService, IMoveBookFiles bookFileMover, IDiskProvider diskProvider, IRootFolderService rootFolderService, @@ -44,7 +44,7 @@ public UpgradeMediaFileService(IConfigService configService, _configService = configService; _recycleBinProvider = recycleBinProvider; _mediaFileService = mediaFileService; - _audioTagService = audioTagService; + _metadataTagService = metadataTagService; _bookFileMover = bookFileMover; _diskProvider = diskProvider; _rootFolderService = rootFolderService; @@ -109,7 +109,7 @@ public BookFileMoveResult UpgradeBookFile(BookFile bookFile, LocalBook localBook moveFileResult.BookFile = _bookFileMover.MoveBookFile(bookFile, localBook); } - _audioTagService.WriteTags(bookFile, true); + _metadataTagService.WriteTags(bookFile, true); } else {