mirror of
https://github.com/lidarr/lidarr.git
synced 2025-08-19 21:13:28 -07:00
Fixed: Manual import from artist page forces correct artist
This commit is contained in:
parent
fb88017821
commit
8771e715ae
5 changed files with 34 additions and 6 deletions
|
@ -657,6 +657,7 @@ class ArtistDetails extends Component {
|
||||||
|
|
||||||
<InteractiveImportModal
|
<InteractiveImportModal
|
||||||
isOpen={isInteractiveImportModalOpen}
|
isOpen={isInteractiveImportModalOpen}
|
||||||
|
artistId={id}
|
||||||
folder={path}
|
folder={path}
|
||||||
allowArtistChange={false}
|
allowArtistChange={false}
|
||||||
showFilterExistingFiles={true}
|
showFilterExistingFiles={true}
|
||||||
|
|
|
@ -52,6 +52,7 @@ class InteractiveImportModalContentConnector extends Component {
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
const {
|
const {
|
||||||
|
artistId,
|
||||||
downloadId,
|
downloadId,
|
||||||
folder
|
folder
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
@ -62,6 +63,7 @@ class InteractiveImportModalContentConnector extends Component {
|
||||||
} = this.state;
|
} = this.state;
|
||||||
|
|
||||||
this.props.fetchInteractiveImportItems({
|
this.props.fetchInteractiveImportItems({
|
||||||
|
artistId,
|
||||||
downloadId,
|
downloadId,
|
||||||
folder,
|
folder,
|
||||||
filterExistingFiles,
|
filterExistingFiles,
|
||||||
|
@ -78,11 +80,13 @@ class InteractiveImportModalContentConnector extends Component {
|
||||||
if (prevState.filterExistingFiles !== filterExistingFiles ||
|
if (prevState.filterExistingFiles !== filterExistingFiles ||
|
||||||
prevState.replaceExistingFiles !== replaceExistingFiles) {
|
prevState.replaceExistingFiles !== replaceExistingFiles) {
|
||||||
const {
|
const {
|
||||||
|
artistId,
|
||||||
downloadId,
|
downloadId,
|
||||||
folder
|
folder
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
this.props.fetchInteractiveImportItems({
|
this.props.fetchInteractiveImportItems({
|
||||||
|
artistId,
|
||||||
downloadId,
|
downloadId,
|
||||||
folder,
|
folder,
|
||||||
filterExistingFiles,
|
filterExistingFiles,
|
||||||
|
@ -204,6 +208,7 @@ class InteractiveImportModalContentConnector extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
InteractiveImportModalContentConnector.propTypes = {
|
InteractiveImportModalContentConnector.propTypes = {
|
||||||
|
artistId: PropTypes.number.isRequired,
|
||||||
downloadId: PropTypes.string,
|
downloadId: PropTypes.string,
|
||||||
folder: PropTypes.string,
|
folder: PropTypes.string,
|
||||||
filterExistingFiles: PropTypes.bool.isRequired,
|
filterExistingFiles: PropTypes.bool.isRequired,
|
||||||
|
@ -219,6 +224,7 @@ InteractiveImportModalContentConnector.propTypes = {
|
||||||
};
|
};
|
||||||
|
|
||||||
InteractiveImportModalContentConnector.defaultProps = {
|
InteractiveImportModalContentConnector.defaultProps = {
|
||||||
|
artistId: 0,
|
||||||
filterExistingFiles: true,
|
filterExistingFiles: true,
|
||||||
replaceExistingFiles: false
|
replaceExistingFiles: false
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using Lidarr.Http;
|
using Lidarr.Http;
|
||||||
|
@ -44,10 +45,22 @@ namespace Lidarr.Api.V1.ManualImport
|
||||||
{
|
{
|
||||||
var folder = (string)Request.Query.folder;
|
var folder = (string)Request.Query.folder;
|
||||||
var downloadId = (string)Request.Query.downloadId;
|
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 filter = Request.GetBooleanQueryParameter("filterExistingFiles", true) ? FilterFilesType.Matched : FilterFilesType.None;
|
||||||
var replaceExistingFiles = Request.GetBooleanQueryParameter("replaceExistingFiles", true);
|
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)
|
private ManualImportResource AddQualityWeight(ManualImportResource item)
|
||||||
|
|
|
@ -220,6 +220,14 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Identification
|
||||||
if (candidateReleases.Count == 0)
|
if (candidateReleases.Count == 0)
|
||||||
{
|
{
|
||||||
// can't find any candidates even after fingerprinting
|
// 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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
|
||||||
{
|
{
|
||||||
public interface IManualImportService
|
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);
|
List<ManualImportItem> UpdateItems(List<ManualImportItem> item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
|
||||||
_logger = logger;
|
_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())
|
if (downloadId.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
|
@ -116,14 +116,14 @@ namespace NzbDrone.Core.MediaFiles.TrackImport.Manual
|
||||||
return new List<ManualImportItem> { result };
|
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;
|
DownloadClientItem downloadClientItem = null;
|
||||||
var directoryInfo = new DirectoryInfo(folder);
|
var directoryInfo = new DirectoryInfo(folder);
|
||||||
var artist = _parsingService.GetArtist(directoryInfo.Name);
|
artist = artist ?? _parsingService.GetArtist(directoryInfo.Name);
|
||||||
|
|
||||||
if (downloadId.IsNotNullOrWhiteSpace())
|
if (downloadId.IsNotNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue