Fixed: Multiple series found during manual import prevents manual importing from folder
Fixes #3512
This commit is contained in:
parent
8c93d73b42
commit
00c922875f
|
@ -105,11 +105,25 @@ namespace NzbDrone.Core.MediaFiles.EpisodeImport.Manual
|
|||
private List<ManualImportItem> ProcessFolder(string rootFolder, string baseFolder, string downloadId, int? seriesId, bool filterExistingFiles)
|
||||
{
|
||||
DownloadClientItem downloadClientItem = null;
|
||||
Series series = null;
|
||||
|
||||
var directoryInfo = new DirectoryInfo(baseFolder);
|
||||
|
||||
var series = seriesId.HasValue ?
|
||||
_seriesService.GetSeries(seriesId.Value) :
|
||||
_parsingService.GetSeries(directoryInfo.Name);
|
||||
if (seriesId.HasValue)
|
||||
{
|
||||
series = _seriesService.GetSeries(seriesId.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
series = _parsingService.GetSeries(directoryInfo.Name);
|
||||
}
|
||||
catch (MultipleSeriesFoundException e)
|
||||
{
|
||||
_logger.Warn(e, "Unable to find series from title");
|
||||
}
|
||||
}
|
||||
|
||||
if (downloadId.IsNotNullOrWhiteSpace())
|
||||
{
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
using NzbDrone.Common.Exceptions;
|
||||
|
||||
namespace NzbDrone.Core.Tv
|
||||
{
|
||||
public class MultipleSeriesFoundException : NzbDroneException
|
||||
{
|
||||
public MultipleSeriesFoundException(string message, params object[] args) : base(message, args)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NzbDrone.Core.Datastore;
|
||||
using NzbDrone.Core.Exceptions;
|
||||
using NzbDrone.Core.Messaging.Events;
|
||||
|
||||
|
||||
|
@ -36,17 +37,21 @@ namespace NzbDrone.Core.Tv
|
|||
{
|
||||
cleanTitle = cleanTitle.ToLowerInvariant();
|
||||
|
||||
return Query.Where(s => s.CleanTitle == cleanTitle)
|
||||
.SingleOrDefault();
|
||||
var series = Query.Where(s => s.CleanTitle == cleanTitle)
|
||||
.ToList();
|
||||
|
||||
return ReturnSingleSeriesOrThrow(series);
|
||||
}
|
||||
|
||||
public Series FindByTitle(string cleanTitle, int year)
|
||||
{
|
||||
cleanTitle = cleanTitle.ToLowerInvariant();
|
||||
|
||||
return Query.Where(s => s.CleanTitle == cleanTitle)
|
||||
.AndWhere(s => s.Year == year)
|
||||
.SingleOrDefault();
|
||||
var series = Query.Where(s => s.CleanTitle == cleanTitle)
|
||||
.AndWhere(s => s.Year == year)
|
||||
.ToList();
|
||||
|
||||
return ReturnSingleSeriesOrThrow(series);
|
||||
}
|
||||
|
||||
public List<Series> FindByTitleInexact(string cleanTitle)
|
||||
|
@ -72,5 +77,20 @@ namespace NzbDrone.Core.Tv
|
|||
return Query.Where(s => s.Path == path)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
|
||||
private Series ReturnSingleSeriesOrThrow(List<Series> series)
|
||||
{
|
||||
if (series.Count == 0)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
if (series.Count == 1)
|
||||
{
|
||||
return series.First();
|
||||
}
|
||||
|
||||
throw new MultipleSeriesFoundException("Expected one series, but found {0}. Matching series: {1}", series.Count, string.Join(",", series));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue