Fixed: Custom List try id search for album not only artist

This commit is contained in:
bakerboy448 2025-09-09 15:36:16 -05:00
parent 323b366ac6
commit 9644702add

View file

@ -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<CustomSettings>
{
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<ImportListItemInfo> Fetch()
@ -37,10 +42,41 @@ public override IList<ImportListItemInfo> 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);