|
|
|
@ -94,86 +94,18 @@ namespace NzbDrone.Core.Download
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var series = _parsingService.GetSeries(trackedDownload.DownloadItem.Title);
|
|
|
|
|
|
|
|
|
|
if (series == null)
|
|
|
|
|
var movie = _parsingService.GetMovie(trackedDownload.DownloadItem.Title);
|
|
|
|
|
if (movie == null)
|
|
|
|
|
{
|
|
|
|
|
if (historyItem != null)
|
|
|
|
|
{
|
|
|
|
|
//series = _seriesService.GetSeries(historyItem.SeriesId);
|
|
|
|
|
movie = _movieService.GetMovie(historyItem.MovieId);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (series == null)
|
|
|
|
|
if (movie == null)
|
|
|
|
|
{
|
|
|
|
|
var movie = _parsingService.GetMovie(trackedDownload.DownloadItem.Title);
|
|
|
|
|
|
|
|
|
|
if (movie == null)
|
|
|
|
|
{
|
|
|
|
|
if (historyItem != null)
|
|
|
|
|
{
|
|
|
|
|
movie = _movieService.GetMovie(historyItem.MovieId);
|
|
|
|
|
if (movie.MovieFile != null)
|
|
|
|
|
{
|
|
|
|
|
movie.MovieFile.LazyLoad();
|
|
|
|
|
if (movie.MovieFile.Value != null)
|
|
|
|
|
{
|
|
|
|
|
_logger.Debug("File Title: {0}, download item title: {1}", Parser.Parser.CleanSeriesTitle(movie.MovieFile.Value.RelativePath), Parser.Parser.CleanSeriesTitle(trackedDownload.DownloadItem.Title));
|
|
|
|
|
if (Parser.Parser.CleanSeriesTitle(movie.MovieFile.Value.RelativePath).Contains(Parser.Parser.CleanSeriesTitle(trackedDownload.DownloadItem.Title)))
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("Seems like the movie already has a file associated with this download item. Maybe the History failed?");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
var parserResult = Parser.Parser.ParseMovieTitle(trackedDownload.DownloadItem.Title);
|
|
|
|
|
if (parserResult != null)
|
|
|
|
|
{
|
|
|
|
|
movie = _movieService.FindByTitle(parserResult.MovieTitle);
|
|
|
|
|
if (movie.MovieFile != null)
|
|
|
|
|
{
|
|
|
|
|
movie.MovieFile.LazyLoad();
|
|
|
|
|
if (movie.MovieFile.Value != null)
|
|
|
|
|
{
|
|
|
|
|
_logger.Debug("File Title: {0}, download item title: {1}", Parser.Parser.CleanSeriesTitle(movie.MovieFile.Value.RelativePath), Parser.Parser.CleanSeriesTitle(trackedDownload.DownloadItem.Title));
|
|
|
|
|
if (Parser.Parser.CleanSeriesTitle(movie.MovieFile.Value.RelativePath).Contains(Parser.Parser.CleanSeriesTitle(trackedDownload.DownloadItem.Title)))
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("Seems like the movie already has a file associated with this download item. Maybe the History failed?");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (movie == null)
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("Movie title mismatch, automatic import is not possible.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if (movie.MovieFile != null)
|
|
|
|
|
{
|
|
|
|
|
movie.MovieFile.LazyLoad();
|
|
|
|
|
if (movie.MovieFile.Value != null)
|
|
|
|
|
{
|
|
|
|
|
_logger.Debug("File Title: {0}, download item title: {1}", Parser.Parser.CleanSeriesTitle(movie.MovieFile.Value.RelativePath), Parser.Parser.CleanSeriesTitle(trackedDownload.DownloadItem.Title));
|
|
|
|
|
if (Parser.Parser.CleanSeriesTitle(movie.MovieFile.Value.RelativePath).Contains(Parser.Parser.CleanSeriesTitle(trackedDownload.DownloadItem.Title)))
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("Seems like the movie already has a file associated with this download item. Maybe the History failed?");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
//trackedDownload.Warn("Series title mismatch, automatic import is not possible.");
|
|
|
|
|
//return;
|
|
|
|
|
trackedDownload.Warn("Movie title mismatch, automatic import is not possible.");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -184,61 +116,30 @@ namespace NzbDrone.Core.Download
|
|
|
|
|
private void Import(TrackedDownload trackedDownload)
|
|
|
|
|
{
|
|
|
|
|
var outputPath = trackedDownload.DownloadItem.OutputPath.FullPath;
|
|
|
|
|
if (trackedDownload.RemoteMovie != null && trackedDownload.RemoteMovie.Movie != null)
|
|
|
|
|
{
|
|
|
|
|
var importResults = _downloadedMovieImportService.ProcessPath(outputPath, ImportMode.Auto, trackedDownload.RemoteMovie.Movie, trackedDownload.DownloadItem);
|
|
|
|
|
|
|
|
|
|
if (importResults.Empty())
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("No files found are eligible for import in {0}", outputPath);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
var importResults = _downloadedMovieImportService.ProcessPath(outputPath, ImportMode.Auto, trackedDownload.RemoteMovie.Movie, trackedDownload.DownloadItem);
|
|
|
|
|
|
|
|
|
|
if (importResults.Count(c => c.Result == ImportResultType.Imported) >= 1)
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.State = TrackedDownloadStage.Imported;
|
|
|
|
|
_eventAggregator.PublishEvent(new DownloadCompletedEvent(trackedDownload));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (importResults.Any(c => c.Result != ImportResultType.Imported))
|
|
|
|
|
{
|
|
|
|
|
var statusMessages = importResults
|
|
|
|
|
.Where(v => v.Result != ImportResultType.Imported)
|
|
|
|
|
.Select(v => new TrackedDownloadStatusMessage(Path.GetFileName(v.ImportDecision.LocalEpisode.Path), v.Errors))
|
|
|
|
|
.ToArray();
|
|
|
|
|
|
|
|
|
|
trackedDownload.Warn(statusMessages);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (trackedDownload.RemoteEpisode != null && trackedDownload.RemoteEpisode.Series != null)
|
|
|
|
|
if (importResults.Empty())
|
|
|
|
|
{
|
|
|
|
|
var importResults = _downloadedEpisodesImportService.ProcessPath(outputPath, ImportMode.Auto, trackedDownload.RemoteEpisode.Series, trackedDownload.DownloadItem);
|
|
|
|
|
|
|
|
|
|
if (importResults.Empty())
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.Warn("No files found are eligible for import in {0}", outputPath);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
trackedDownload.Warn("No files found are eligible for import in {0}", outputPath);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (importResults.Count(c => c.Result == ImportResultType.Imported) >= Math.Max(1, trackedDownload.RemoteEpisode.Episodes.Count))
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.State = TrackedDownloadStage.Imported;
|
|
|
|
|
_eventAggregator.PublishEvent(new DownloadCompletedEvent(trackedDownload));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
if (importResults.Count(c => c.Result == ImportResultType.Imported) >= 1)
|
|
|
|
|
{
|
|
|
|
|
trackedDownload.State = TrackedDownloadStage.Imported;
|
|
|
|
|
_eventAggregator.PublishEvent(new DownloadCompletedEvent(trackedDownload));
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (importResults.Any(c => c.Result != ImportResultType.Imported))
|
|
|
|
|
{
|
|
|
|
|
var statusMessages = importResults
|
|
|
|
|
.Where(v => v.Result != ImportResultType.Imported)
|
|
|
|
|
.Select(v => new TrackedDownloadStatusMessage(Path.GetFileName(v.ImportDecision.LocalEpisode.Path), v.Errors))
|
|
|
|
|
.ToArray();
|
|
|
|
|
if (importResults.Any(c => c.Result != ImportResultType.Imported))
|
|
|
|
|
{
|
|
|
|
|
var statusMessages = importResults
|
|
|
|
|
.Where(v => v.Result != ImportResultType.Imported)
|
|
|
|
|
.Select(v => new TrackedDownloadStatusMessage(Path.GetFileName(v.ImportDecision.LocalEpisode.Path), v.Errors))
|
|
|
|
|
.ToArray();
|
|
|
|
|
|
|
|
|
|
trackedDownload.Warn(statusMessages);
|
|
|
|
|
}
|
|
|
|
|
trackedDownload.Warn(statusMessages);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|