private TSpec Get <TSpec>(Series series, List <Episode> episodes, bool userInvokedSearch, bool interactiveSearch) where TSpec : SearchCriteriaBase, new() { var spec = new TSpec(); spec.Series = series; spec.SceneTitles = _sceneMapping.GetSceneNames(series.TvdbId, episodes.Select(e => e.SeasonNumber).Distinct().ToList(), episodes.Select(e => e.SceneSeasonNumber ?? e.SeasonNumber).Distinct().ToList()); spec.SceneMappings = _sceneMapping.GetSceneMappings(series.TvdbId, episodes.Select(e => e.SeasonNumber).Distinct().ToList()); if (!spec.SceneTitles.Contains(series.Title)) { spec.SceneTitles.Add(series.Title); } spec.Episodes = episodes; spec.UserInvokedSearch = userInvokedSearch; spec.InteractiveSearch = interactiveSearch; return(spec); }