mirror of
https://github.com/Lidarr/Lidarr
synced 2025-12-06 08:25:54 +01:00
Fixed: Queue not showing items with conflicting titles
(cherry picked from commit 789a8f53013a247cd195f864484089c27b5f3858) (cherry picked from commit 96b31e3c94f178cacabeb2bedd57fd4316e52380)
This commit is contained in:
parent
ec9625f2b3
commit
cce7ffa6ac
4 changed files with 24 additions and 26 deletions
|
|
@ -111,24 +111,26 @@ private List<TrackedDownload> ProcessClientDownloads(IDownloadClient downloadCli
|
||||||
|
|
||||||
private TrackedDownload ProcessClientItem(IDownloadClient downloadClient, DownloadClientItem downloadItem)
|
private TrackedDownload ProcessClientItem(IDownloadClient downloadClient, DownloadClientItem downloadItem)
|
||||||
{
|
{
|
||||||
|
TrackedDownload trackedDownload = null;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var trackedDownload = _trackedDownloadService.TrackDownload((DownloadClientDefinition)downloadClient.Definition, downloadItem);
|
trackedDownload =
|
||||||
|
_trackedDownloadService.TrackDownload((DownloadClientDefinition)downloadClient.Definition,
|
||||||
|
downloadItem);
|
||||||
|
|
||||||
if (trackedDownload is { State: TrackedDownloadState.Downloading or TrackedDownloadState.ImportBlocked })
|
if (trackedDownload is { State: TrackedDownloadState.Downloading or TrackedDownloadState.ImportBlocked })
|
||||||
{
|
{
|
||||||
_failedDownloadService.Check(trackedDownload);
|
_failedDownloadService.Check(trackedDownload);
|
||||||
_completedDownloadService.Check(trackedDownload);
|
_completedDownloadService.Check(trackedDownload);
|
||||||
}
|
}
|
||||||
|
|
||||||
return trackedDownload;
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_logger.Error(e, "Couldn't process tracked download {0}", downloadItem.Title);
|
_logger.Error(e, "Couldn't process tracked download {0}", downloadItem.Title);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return trackedDownload;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool DownloadIsTrackable(TrackedDownload trackedDownload)
|
private bool DownloadIsTrackable(TrackedDownload trackedDownload)
|
||||||
|
|
|
||||||
|
|
@ -169,8 +169,8 @@ public TrackedDownload TrackDownload(DownloadClientDefinition downloadClient, Do
|
||||||
{
|
{
|
||||||
trackedDownload.RemoteAlbum = _parsingService.Map(parsedAlbumInfo,
|
trackedDownload.RemoteAlbum = _parsingService.Map(parsedAlbumInfo,
|
||||||
firstHistoryItem.ArtistId,
|
firstHistoryItem.ArtistId,
|
||||||
historyItems.Where(v => v.EventType == EntityHistoryEventType.Grabbed).Select(h => h.AlbumId)
|
historyItems.Where(v => v.EventType == EntityHistoryEventType.Grabbed)
|
||||||
.Distinct());
|
.Select(h => h.AlbumId).Distinct());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -183,8 +183,8 @@ public TrackedDownload TrackDownload(DownloadClientDefinition downloadClient, Do
|
||||||
{
|
{
|
||||||
trackedDownload.RemoteAlbum = _parsingService.Map(parsedAlbumInfo,
|
trackedDownload.RemoteAlbum = _parsingService.Map(parsedAlbumInfo,
|
||||||
firstHistoryItem.ArtistId,
|
firstHistoryItem.ArtistId,
|
||||||
historyItems.Where(v => v.EventType == EntityHistoryEventType.Grabbed).Select(h => h.AlbumId)
|
historyItems.Where(v => v.EventType == EntityHistoryEventType.Grabbed)
|
||||||
.Distinct());
|
.Select(h => h.AlbumId).Distinct());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -211,10 +211,17 @@ public TrackedDownload TrackDownload(DownloadClientDefinition downloadClient, Do
|
||||||
_logger.Trace("No Album found for download '{0}'", trackedDownload.DownloadItem.Title);
|
_logger.Trace("No Album found for download '{0}'", trackedDownload.DownloadItem.Title);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch (MultipleArtistsFoundException e)
|
||||||
|
{
|
||||||
|
_logger.Debug(e, "Found multiple artists for " + downloadItem.Title);
|
||||||
|
|
||||||
|
trackedDownload.Warn("Unable to import automatically, found multiple artists: {0}", string.Join(", ", e.Artists));
|
||||||
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
_logger.Debug(e, "Failed to find album for " + downloadItem.Title);
|
_logger.Debug(e, "Failed to find album for " + downloadItem.Title);
|
||||||
return null;
|
|
||||||
|
trackedDownload.Warn("Unable to parse albums from title");
|
||||||
}
|
}
|
||||||
|
|
||||||
LogItemChange(trackedDownload, existingItem?.DownloadItem, trackedDownload.DownloadItem);
|
LogItemChange(trackedDownload, existingItem?.DownloadItem, trackedDownload.DownloadItem);
|
||||||
|
|
|
||||||
|
|
@ -1,27 +1,16 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
using NzbDrone.Common.Exceptions;
|
using NzbDrone.Common.Exceptions;
|
||||||
|
|
||||||
namespace NzbDrone.Core.Music
|
namespace NzbDrone.Core.Music
|
||||||
{
|
{
|
||||||
public class MultipleArtistsFoundException : NzbDroneException
|
public class MultipleArtistsFoundException : NzbDroneException
|
||||||
{
|
{
|
||||||
public MultipleArtistsFoundException(string message, params object[] args)
|
public List<Artist> Artists { get; }
|
||||||
|
|
||||||
|
public MultipleArtistsFoundException(List<Artist> artists, string message, params object[] args)
|
||||||
: base(message, args)
|
: base(message, args)
|
||||||
{
|
{
|
||||||
}
|
Artists = artists;
|
||||||
|
|
||||||
public MultipleArtistsFoundException(string message)
|
|
||||||
: base(message)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public MultipleArtistsFoundException(string message, System.Exception innerException)
|
|
||||||
: base(message, innerException)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
protected MultipleArtistsFoundException(string message, System.Exception innerException, params object[] args)
|
|
||||||
: base(message, innerException, args)
|
|
||||||
{
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ private static Artist ReturnSingleArtistOrThrow(List<Artist> artists)
|
||||||
return artists[0];
|
return artists[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
throw new MultipleArtistsFoundException("Expected one artist, but found {0}. Matching artists: {1}", artists.Count, string.Join(",", artists.Select(s => s.Name)));
|
throw new MultipleArtistsFoundException(artists, "Expected one artist, but found {0}. Matching artists: {1}", artists.Count, string.Join(", ", artists));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue