diff --git a/src/NzbDrone.Core/MediaFiles/BookImport/Identification/Distance.cs b/src/NzbDrone.Core/MediaFiles/BookImport/Identification/Distance.cs index 0d5c0b7a5..246c95d1d 100644 --- a/src/NzbDrone.Core/MediaFiles/BookImport/Identification/Distance.cs +++ b/src/NzbDrone.Core/MediaFiles/BookImport/Identification/Distance.cs @@ -21,6 +21,7 @@ public class Distance { "media_format", 1.0 }, { "year", 1.0 }, { "country", 0.5 }, + { "language", 5.0 }, { "label", 0.5 }, { "catalog_number", 0.5 }, { "book_disambiguation", 0.5 }, diff --git a/src/NzbDrone.Core/MediaFiles/BookImport/Identification/DistanceCalculator.cs b/src/NzbDrone.Core/MediaFiles/BookImport/Identification/DistanceCalculator.cs index 57656c20f..ed0eaeebc 100644 --- a/src/NzbDrone.Core/MediaFiles/BookImport/Identification/DistanceCalculator.cs +++ b/src/NzbDrone.Core/MediaFiles/BookImport/Identification/DistanceCalculator.cs @@ -6,6 +6,7 @@ using NzbDrone.Common.Extensions; using NzbDrone.Common.Instrumentation; using NzbDrone.Core.Books; +using NzbDrone.Core.Books.Calibre; using NzbDrone.Core.Parser; using NzbDrone.Core.Parser.Model; @@ -113,6 +114,15 @@ public static Distance BookDistance(List localTracks, Edition edition Logger.Trace($"year: {localYear} vs {edition.ReleaseDate?.Year}; {dist.NormalizedDistance()}"); } + // Language - only if set for both the local book and remote edition + var localLanguage = localTracks.MostCommon(x => x.FileTrackInfo.Language).CanonicalizeLanguage(); + var editionLanguage = edition.Language.CanonicalizeLanguage(); + if (localLanguage.IsNotNullOrWhiteSpace() && editionLanguage.IsNotNullOrWhiteSpace()) + { + dist.AddBool("language", localLanguage != editionLanguage); + Logger.Trace($"language: {localLanguage} vs {editionLanguage}; {dist.NormalizedDistance()}"); + } + return dist; }