diff --git a/src/NzbDrone.Core/MediaFiles/BookImport/Identification/IdentificationService.cs b/src/NzbDrone.Core/MediaFiles/BookImport/Identification/IdentificationService.cs index 076045fc5..375b9435a 100644 --- a/src/NzbDrone.Core/MediaFiles/BookImport/Identification/IdentificationService.cs +++ b/src/NzbDrone.Core/MediaFiles/BookImport/Identification/IdentificationService.cs @@ -132,6 +132,7 @@ private void IdentifyRelease(LocalEdition localBookRelease, IdentificationOverri if (!candidateReleases.Any()) { + _logger.Debug("No local candidates found, trying remote"); candidateReleases = _candidateService.GetRemoteCandidates(localBookRelease, idOverrides); if (!config.AddNewAuthors) { diff --git a/src/NzbDrone.Core/MetadataSource/BookInfo/BookInfoProxy.cs b/src/NzbDrone.Core/MetadataSource/BookInfo/BookInfoProxy.cs index c4abffa48..1c7f6b38c 100644 --- a/src/NzbDrone.Core/MetadataSource/BookInfo/BookInfoProxy.cs +++ b/src/NzbDrone.Core/MetadataSource/BookInfo/BookInfoProxy.cs @@ -429,13 +429,25 @@ private void AddDbIds(string authorId, Book book, Dictionary x.ForeignEditionId); + + // If we have any database editions, exactly one will be monitored. + // So unmonitor all the found editions and let the UseDbFieldsFrom set + // the monitored status foreach (var edition in book.Editions.Value) { + edition.Monitored = false; if (editions.TryGetValue(edition.ForeignEditionId, out var dbEdition)) { edition.UseDbFieldsFrom(dbEdition); } } + + // Double check at least one edition is monitored + if (book.Editions.Value.Any() && !book.Editions.Value.Any(x => x.Monitored)) + { + var mostPopular = book.Editions.Value.OrderByDescending(x => x.Ratings.Popularity).First(); + mostPopular.Monitored = true; + } } var author = _authorService.FindById(authorId);