public RemoteEpisode Map(ParsedEpisodeInfo parsedEpisodeInfo, int tvdbId, int tvRageId, SearchCriteriaBase searchCriteria = null) { var remoteEpisode = new RemoteEpisode { ParsedEpisodeInfo = parsedEpisodeInfo, }; var series = GetSeries(parsedEpisodeInfo, tvdbId, tvRageId, searchCriteria); if (series == null) { return(remoteEpisode); } remoteEpisode.Series = series; if (ValidateParsedEpisodeInfo.ValidateForSeriesType(parsedEpisodeInfo, series)) { remoteEpisode.Episodes = GetEpisodes(parsedEpisodeInfo, series, true, searchCriteria); } else { remoteEpisode.Episodes = new List <Episode>(); } return(remoteEpisode); }
private RemoteEpisode Map(ParsedEpisodeInfo parsedEpisodeInfo, int tvdbId, int tvRageId, Series series, SearchCriteriaBase searchCriteria) { var sceneMapping = _sceneMappingService.FindSceneMapping(parsedEpisodeInfo.SeriesTitle, parsedEpisodeInfo.ReleaseTitle, parsedEpisodeInfo.SeasonNumber); var remoteEpisode = new RemoteEpisode { ParsedEpisodeInfo = parsedEpisodeInfo, SceneMapping = sceneMapping, MappedSeasonNumber = parsedEpisodeInfo.SeasonNumber }; // For now we just detect tvdb vs scene, but we can do multiple 'origins' in the future. var sceneSource = true; if (sceneMapping != null) { if (sceneMapping.SeasonNumber.HasValue && sceneMapping.SeasonNumber.Value >= 0 && sceneMapping.SceneSeasonNumber <= parsedEpisodeInfo.SeasonNumber) { remoteEpisode.MappedSeasonNumber += sceneMapping.SeasonNumber.Value - sceneMapping.SceneSeasonNumber.Value; } if (sceneMapping.SceneOrigin == "tvdb") { sceneSource = false; } } if (series == null) { series = GetSeries(parsedEpisodeInfo, tvdbId, tvRageId, sceneMapping, searchCriteria); } if (series != null) { remoteEpisode.Series = series; if (ValidateParsedEpisodeInfo.ValidateForSeriesType(parsedEpisodeInfo, series)) { remoteEpisode.Episodes = GetEpisodes(parsedEpisodeInfo, series, remoteEpisode.MappedSeasonNumber, sceneSource, searchCriteria); } } if (remoteEpisode.Episodes == null) { remoteEpisode.Episodes = new List <Episode>(); } if (searchCriteria != null) { var requestedEpisodes = searchCriteria.Episodes.ToDictionaryIgnoreDuplicates(v => v.Id); remoteEpisode.EpisodeRequested = remoteEpisode.Episodes.Any(v => requestedEpisodes.ContainsKey(v.Id)); } return(remoteEpisode); }