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 @@ namespace NzbDrone.Core.Books 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 @@ namespace NzbDrone.Core.Books tagsToUpdate = updateList.Concat(upToDate).ToList(); } - _audioTagService.SyncTags(tagsToUpdate); - _eBookTagService.SyncTags(tagsToUpdate); + _metadataTagService.SyncTags(tagsToUpdate); return add.Any() || delete.Any() || updateList.Any() || merge.Any(); } diff --git a/src/NzbDrone.Core/MediaFiles/AudioTagService.cs b/src/NzbDrone.Core/MediaFiles/AudioTagService.cs index 2b9740c68..84fbf1d93 100644 --- a/src/NzbDrone.Core/MediaFiles/AudioTagService.cs +++ b/src/NzbDrone.Core/MediaFiles/AudioTagService.cs @@ -11,9 +11,7 @@ using NzbDrone.Core.Configuration; using NzbDrone.Core.MediaCover; using NzbDrone.Core.MediaFiles.Commands; using NzbDrone.Core.MediaFiles.Events; -using NzbDrone.Core.Messaging.Commands; using NzbDrone.Core.Messaging.Events; -using NzbDrone.Core.Parser; using NzbDrone.Core.Parser.Model; using TagLib; diff --git a/src/NzbDrone.Core/MediaFiles/BookImport/ImportApprovedBooks.cs b/src/NzbDrone.Core/MediaFiles/BookImport/ImportApprovedBooks.cs index 3ed3aff28..8e2f1ba07 100644 --- a/src/NzbDrone.Core/MediaFiles/BookImport/ImportApprovedBooks.cs +++ b/src/NzbDrone.Core/MediaFiles/BookImport/ImportApprovedBooks.cs @@ -29,8 +29,7 @@ namespace NzbDrone.Core.MediaFiles.BookImport { private readonly IUpgradeMediaFiles _bookFileUpgrader; private readonly IMediaFileService _mediaFileService; - private readonly IAudioTagService _audioTagService; - private readonly IEBookTagService _eBookTagService; + private readonly IMetadataTagService _metadataTagService; private readonly IAuthorService _authorService; private readonly IAddAuthorService _addAuthorService; private readonly IBookService _bookService; @@ -45,8 +44,7 @@ namespace NzbDrone.Core.MediaFiles.BookImport public ImportApprovedBooks(IUpgradeMediaFiles bookFileUpgrader, IMediaFileService mediaFileService, - IAudioTagService audioTagService, - IEBookTagService eBookTagService, + IMetadataTagService metadataTagService, IAuthorService authorService, IAddAuthorService addAuthorService, IBookService bookService, @@ -61,8 +59,7 @@ namespace NzbDrone.Core.MediaFiles.BookImport { _bookFileUpgrader = bookFileUpgrader; _mediaFileService = mediaFileService; - _audioTagService = audioTagService; - _eBookTagService = eBookTagService; + _metadataTagService = metadataTagService; _authorService = authorService; _addAuthorService = addAuthorService; _bookService = bookService; @@ -215,8 +212,7 @@ namespace NzbDrone.Core.MediaFiles.BookImport } } - _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.Books.Calibre; 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 @@ namespace NzbDrone.Core.MediaFiles _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 @@ namespace NzbDrone.Core.MediaFiles 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.IO.Abstractions; 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 @@ namespace NzbDrone.Core.MediaFiles { 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 @@ namespace NzbDrone.Core.MediaFiles { _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 @@ namespace NzbDrone.Core.MediaFiles 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 @@ namespace NzbDrone.Core.MediaFiles public UpgradeMediaFileService(IConfigService configService, IRecycleBinProvider recycleBinProvider, IMediaFileService mediaFileService, - IAudioTagService audioTagService, + IMetadataTagService metadataTagService, IMoveBookFiles bookFileMover, IDiskProvider diskProvider, IRootFolderService rootFolderService, @@ -44,7 +44,7 @@ namespace NzbDrone.Core.MediaFiles _configService = configService; _recycleBinProvider = recycleBinProvider; _mediaFileService = mediaFileService; - _audioTagService = audioTagService; + _metadataTagService = metadataTagService; _bookFileMover = bookFileMover; _diskProvider = diskProvider; _rootFolderService = rootFolderService; @@ -109,7 +109,7 @@ namespace NzbDrone.Core.MediaFiles moveFileResult.BookFile = _bookFileMover.MoveBookFile(bookFile, localBook); } - _audioTagService.WriteTags(bookFile, true); + _metadataTagService.WriteTags(bookFile, true); } else {