diff --git a/src/NzbDrone.Core/Parser/ParsingService.cs b/src/NzbDrone.Core/Parser/ParsingService.cs index a98731256..de9fa4e05 100644 --- a/src/NzbDrone.Core/Parser/ParsingService.cs +++ b/src/NzbDrone.Core/Parser/ParsingService.cs @@ -350,7 +350,7 @@ private ParsedEpisodeInfo ParseSpecialEpisodeTitle(string title, Series series) private Movie GetMovie(ParsedMovieInfo parsedMovieInfo, string imdbId, SearchCriteriaBase searchCriteria) { // TODO: Answer me this: Wouldn't it be smarter to start out looking for a movie if we have an ImDb Id? - if (!String.IsNullOrWhiteSpace(imdbId)) + if (!String.IsNullOrWhiteSpace(imdbId) && imdbId != "0") { Movie movieByImDb; if (TryGetMovieByImDbId(parsedMovieInfo, imdbId, out movieByImDb)) @@ -403,6 +403,8 @@ private bool TryGetMovieByTitleAndOrYear(ParsedMovieInfo parsedMovieInfo, out Mo { return true; } + + return false; } movieByTitleAndOrYear = _movieService.FindByTitle(parsedMovieInfo.MovieTitle); if (isNotNull(movieByTitleAndOrYear)) @@ -686,4 +688,30 @@ private List GetStandardEpisodes(Series series, ParsedEpisodeInfo parse return result; } } + + public class MappingException : Exception + { + public virtual string Reason() + { + return "Parsed movie does not match wanted movie"; + } + } + + public class YearDoesNotMatchException : MappingException + { + public int ExpectedYear { get; set; } + public int? ParsedYear { get; set; } + + override public string Reason() + { + if (ParsedYear.HasValue && ParsedYear > 1800) + { + return $"Expected {ExpectedYear}, but found {ParsedYear} for year"; + } + else + { + return "Did not find a valid year"; + } + } + } } \ No newline at end of file