Fixed: Manual import from artist page forces correct artist

This commit is contained in:
ta264 2020-03-11 21:24:55 +00:00 committed by Qstick
commit 8771e715ae
5 changed files with 34 additions and 6 deletions

View file

@ -1,3 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Lidarr.Http;
@ -44,10 +45,22 @@ namespace Lidarr.Api.V1.ManualImport
{
var folder = (string)Request.Query.folder;
var downloadId = (string)Request.Query.downloadId;
NzbDrone.Core.Music.Artist artist = null;
var artistIdQuery = Request.Query.artistId;
if (artistIdQuery.HasValue)
{
var artistId = Convert.ToInt32(artistIdQuery.Value);
if (artistId > 0)
{
artist = _artistService.GetArtist(Convert.ToInt32(artistIdQuery.Value));
}
}
var filter = Request.GetBooleanQueryParameter("filterExistingFiles", true) ? FilterFilesType.Matched : FilterFilesType.None;
var replaceExistingFiles = Request.GetBooleanQueryParameter("replaceExistingFiles", true);
return _manualImportService.GetMediaFiles(folder, downloadId, filter, replaceExistingFiles).ToResource().Select(AddQualityWeight).ToList();
return _manualImportService.GetMediaFiles(folder, downloadId, artist, filter, replaceExistingFiles).ToResource().Select(AddQualityWeight).ToList();
}
private ManualImportResource AddQualityWeight(ManualImportResource item)

View file

@ -220,6 +220,14 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Identification
if (candidateReleases.Count == 0)
{
// can't find any candidates even after fingerprinting
// populate the overrides and return
foreach (var localTrack in localAlbumRelease.LocalTracks)
{
localTrack.Release = idOverrides.AlbumRelease;
localTrack.Album = idOverrides.Album;
localTrack.Artist = idOverrides.Artist;
}
return;
}

View file

@ -23,7 +23,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
{
public interface IManualImportService
{
List<ManualImportItem> GetMediaFiles(string path, string downloadId, FilterFilesType filter, bool replaceExistingFiles);
List<ManualImportItem> GetMediaFiles(string path, string downloadId, Artist artist, FilterFilesType filter, bool replaceExistingFiles);
List<ManualImportItem> UpdateItems(List<ManualImportItem> item);
}
@ -78,7 +78,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
_logger = logger;
}
public List<ManualImportItem> GetMediaFiles(string path, string downloadId, FilterFilesType filter, bool replaceExistingFiles)
public List<ManualImportItem> GetMediaFiles(string path, string downloadId, Artist artist, FilterFilesType filter, bool replaceExistingFiles)
{
if (downloadId.IsNotNullOrWhiteSpace())
{
@ -116,14 +116,14 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
return new List<ManualImportItem> { result };
}
return ProcessFolder(path, downloadId, filter, replaceExistingFiles);
return ProcessFolder(path, downloadId, artist, filter, replaceExistingFiles);
}
private List<ManualImportItem> ProcessFolder(string folder, string downloadId, FilterFilesType filter, bool replaceExistingFiles)
private List<ManualImportItem> ProcessFolder(string folder, string downloadId, Artist artist, FilterFilesType filter, bool replaceExistingFiles)
{
DownloadClientItem downloadClientItem = null;
var directoryInfo = new DirectoryInfo(folder);
var artist = _parsingService.GetArtist(directoryInfo.Name);
artist = artist ?? _parsingService.GetArtist(directoryInfo.Name);
if (downloadId.IsNotNullOrWhiteSpace())
{