From ce6bcbfec1abf608a761b70ee7413cbc8e5a4720 Mon Sep 17 00:00:00 2001 From: markus101 Date: Tue, 22 Feb 2011 16:26:03 -0800 Subject: [PATCH] EpisodeFile parsing was incorrect due to change of relationship with Episode --- NzbDrone.Core/Providers/MediaFileProvider.cs | 48 ++++++++++++-------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/NzbDrone.Core/Providers/MediaFileProvider.cs b/NzbDrone.Core/Providers/MediaFileProvider.cs index e93965a82..409fb2d3c 100644 --- a/NzbDrone.Core/Providers/MediaFileProvider.cs +++ b/NzbDrone.Core/Providers/MediaFileProvider.cs @@ -51,37 +51,49 @@ namespace NzbDrone.Core.Providers { var episodesInFile = Parser.ParseEpisodeInfo(filePath); + //Stores the list of episodes to add to the EpisodeFile var episodes = new List(); + foreach (var parsedEpisode in episodesInFile) { EpisodeParseResult closureEpisode = parsedEpisode; var episode = _episodeProvider.GetEpisode(series.SeriesId, closureEpisode.SeasonNumber, closureEpisode.EpisodeNumber); - episodes.Add(episode); if (episode != null) { - var episodeFile = new EpisodeFile(); - episodeFile.DateAdded = DateTime.Now; - episodeFile.SeriesId = series.SeriesId; - episodeFile.Episodes = episodes; - episodeFile.Path = Parser.NormalizePath(filePath); - episodeFile.Size = _diskProvider.GetSize(filePath); - episodeFile.Quality = Parser.ParseQuality(filePath); - episodeFile.Proper = Parser.ParseProper(filePath); - _repository.Add(episodeFile); - Logger.Trace("File {0}:{1} attached to '{2}'", episodeFile.FileId, filePath, episode.EpisodeId); - - return episodeFile; + episodes.Add(episode); } - Logger.Warn("Unable to find Series:{0} Season:{1} Episode:{2} in the database. File:{3}", series.Title, closureEpisode.SeasonNumber, closureEpisode.EpisodeNumber, filePath); + else + Logger.Warn("Unable to find Series:{0} Season:{1} Episode:{2} in the database. File:{3}", series.Title, closureEpisode.SeasonNumber, closureEpisode.EpisodeNumber, filePath); } - } - else - { - Logger.Trace("[{0}] already exists in the database. skipping.", filePath); + + //Return null if no Episodes exist in the DB for the parsed episodes from file + if (episodes.Count < 1) + return null; + + var episodeFile = new EpisodeFile(); + episodeFile.DateAdded = DateTime.Now; + episodeFile.SeriesId = series.SeriesId; + episodeFile.Episodes = episodes; + episodeFile.Path = Parser.NormalizePath(filePath); + episodeFile.Size = _diskProvider.GetSize(filePath); + episodeFile.Quality = Parser.ParseQuality(filePath); + episodeFile.Proper = Parser.ParseProper(filePath); + _repository.Add(episodeFile); + + //This is for logging, a little ugly... + string episodeList = String.Empty; + foreach (var ep in episodes) + { + episodeList += String.Format(", {0}", ep.EpisodeId).Trim(' ', ','); + } + Logger.Trace("File {0}:{1} attached to episode(s): '{2}'", episodeFile.FileId, filePath, episodeList); + + return episodeFile; } + Logger.Trace("[{0}] already exists in the database. skipping.", filePath); return null; }