diff --git a/src/NzbDrone.Core/Music/Repositories/ArtistMetadataRepository.cs b/src/NzbDrone.Core/Music/Repositories/ArtistMetadataRepository.cs index 1f54aa3e5..de8a95cbc 100644 --- a/src/NzbDrone.Core/Music/Repositories/ArtistMetadataRepository.cs +++ b/src/NzbDrone.Core/Music/Repositories/ArtistMetadataRepository.cs @@ -39,6 +39,12 @@ public bool UpsertMany(List data) var existing = existingMetadata.SingleOrDefault(x => x.ForeignArtistId == meta.ForeignArtistId); if (existing != null) { + if (IsPlaceholderData(meta) && !IsPlaceholderData(existing)) + { + _logger.Warn($"Skipping metadata downgrade: {existing.Name} -> {meta.Name}, for artist {meta.ForeignArtistId}"); + continue; + } + meta.UseDbFieldsFrom(existing); if (!meta.Equals(existing)) { @@ -62,5 +68,10 @@ public bool UpsertMany(List data) return updateMetadataList.Count > 0 || addMetadataList.Count > 0; } + + private static bool IsPlaceholderData(ArtistMetadata metadata) => + metadata.Name?.StartsWith("Unknown Artist", System.StringComparison.OrdinalIgnoreCase) != false || + metadata.Disambiguation == "Artist not found in database" || + metadata.Type == "Unknown"; } }