Fixed: Error trying to write calibre tags when calibre not enabled

This commit is contained in:
ta264 2021-07-19 21:57:52 +01:00
parent e0236e781a
commit eaa1578c65
6 changed files with 28 additions and 26 deletions

View file

@ -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<Edition> add, List<Edition> update, List<Tup
tagsToUpdate = updateList.Concat(upToDate).ToList();
}
_audioTagService.SyncTags(tagsToUpdate);
_eBookTagService.SyncTags(tagsToUpdate);
_metadataTagService.SyncTags(tagsToUpdate);
return add.Any() || delete.Any() || updateList.Any() || merge.Any();
}

View file

@ -11,9 +11,7 @@
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;

View file

@ -29,8 +29,7 @@ public class ImportApprovedBooks : IImportApprovedBooks
{
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 @@ public class ImportApprovedBooks : IImportApprovedBooks
public ImportApprovedBooks(IUpgradeMediaFiles bookFileUpgrader,
IMediaFileService mediaFileService,
IAudioTagService audioTagService,
IEBookTagService eBookTagService,
IMetadataTagService metadataTagService,
IAuthorService authorService,
IAddAuthorService addAuthorService,
IBookService bookService,
@ -61,8 +59,7 @@ public ImportApprovedBooks(IUpgradeMediaFiles bookFileUpgrader,
{
_bookFileUpgrader = bookFileUpgrader;
_mediaFileService = mediaFileService;
_audioTagService = audioTagService;
_eBookTagService = eBookTagService;
_metadataTagService = metadataTagService;
_authorService = authorService;
_addAuthorService = addAuthorService;
_bookService = bookService;
@ -215,8 +212,7 @@ public List<ImportResult> Import(List<ImportDecision<LocalBook>> decisions, bool
}
}
_audioTagService.WriteTags(bookFile, false);
_eBookTagService.WriteTags(bookFile, false);
_metadataTagService.WriteTags(bookFile, false);
}
filesToAdd.Add(bookFile);

View file

@ -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<Edition> 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);

View file

@ -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<Edition> books);
List<RetagBookFilePreview> GetRetagPreviewsByAuthor(int authorId);
List<RetagBookFilePreview> 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<Edition> editions)
{
_audioTagService.SyncTags(editions);
_eBookTagService.SyncTags(editions);
}
public List<RetagBookFilePreview> GetRetagPreviewsByAuthor(int authorId)
{
var previews = _audioTagService.GetRetagPreviewsByAuthor(authorId);

View file

@ -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
{