From 9644702add969e46b1f57ec785de19a768d878e4 Mon Sep 17 00:00:00 2001 From: bakerboy448 <55419169+bakerboy448@users.noreply.github.com> Date: Tue, 9 Sep 2025 15:36:16 -0500 Subject: [PATCH] Fixed: Custom List try id search for album not only artist --- .../ImportLists/Custom/CustomImport.cs | 42 +++++++++++++++++-- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/src/NzbDrone.Core/ImportLists/Custom/CustomImport.cs b/src/NzbDrone.Core/ImportLists/Custom/CustomImport.cs index 0cd6d5151..4d050ba20 100644 --- a/src/NzbDrone.Core/ImportLists/Custom/CustomImport.cs +++ b/src/NzbDrone.Core/ImportLists/Custom/CustomImport.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; +using System.Linq; using FluentValidation.Results; using NLog; using NzbDrone.Common.Extensions; using NzbDrone.Core.Configuration; +using NzbDrone.Core.MetadataSource; using NzbDrone.Core.Parser; using NzbDrone.Core.Parser.Model; @@ -12,12 +14,14 @@ namespace NzbDrone.Core.ImportLists.Custom public class CustomImport : ImportListBase { private readonly ICustomImportProxy _customProxy; + private readonly ISearchForNewAlbum _albumSearchService; public override string Name => "Custom List"; public override ImportListType ListType => ImportListType.Advanced; public override TimeSpan MinRefreshInterval => TimeSpan.FromHours(6); public CustomImport(ICustomImportProxy customProxy, + ISearchForNewAlbum albumSearchService, IImportListStatusService importListStatusService, IConfigService configService, IParsingService parsingService, @@ -25,6 +29,7 @@ public CustomImport(ICustomImportProxy customProxy, : base(importListStatusService, configService, parsingService, logger) { _customProxy = customProxy; + _albumSearchService = albumSearchService; } public override IList Fetch() @@ -37,10 +42,41 @@ public override IList Fetch() foreach (var item in remoteSeries) { - artists.Add(new ImportListItemInfo + var importItem = new ImportListItemInfo(); + + try { - ArtistMusicBrainzId = item.MusicBrainzId - }); + var albumQuery = $"lidarr:{item.MusicBrainzId}"; + var mappedAlbum = _albumSearchService.SearchForNewAlbum(albumQuery, null).FirstOrDefault(); + + if (mappedAlbum != null) + { + // MusicBrainzId was actually an album ID + importItem.AlbumMusicBrainzId = mappedAlbum.ForeignAlbumId; + importItem.Album = mappedAlbum.Title; + importItem.Artist = mappedAlbum.ArtistMetadata?.Value?.Name; + importItem.ArtistMusicBrainzId = mappedAlbum.ArtistMetadata?.Value?.ForeignArtistId; + + _logger.Debug("Custom List item {0} identified as album: {1} - {2}", + item.MusicBrainzId, + importItem.Artist, + importItem.Album); + } + else + { + importItem.ArtistMusicBrainzId = item.MusicBrainzId; + + _logger.Debug("Custom List item {0} treated as artist ID", item.MusicBrainzId); + } + } + catch (Exception ex) + { + _logger.Debug(ex, "Failed to search for album with ID {0}, treating as artist", item.MusicBrainzId); + + importItem.ArtistMusicBrainzId = item.MusicBrainzId; + } + + artists.Add(importItem); } _importListStatusService.RecordSuccess(Definition.Id);