public async Task <RuleResult> Execute(SearchViewModel obj) { EmbyContent item = null; var useImdb = false; var useTheMovieDb = false; var useTvDb = false; if (obj.ImdbId.HasValue()) { item = await EmbyContentRepository.GetByImdbId(obj.ImdbId); if (item != null) { useImdb = true; } } if (item == null) { if (obj.TheMovieDbId.HasValue()) { item = await EmbyContentRepository.GetByTheMovieDbId(obj.TheMovieDbId); if (item != null) { useTheMovieDb = true; } } if (item == null) { if (obj.TheTvDbId.HasValue()) { item = await EmbyContentRepository.GetByTvDbId(obj.TheTvDbId); if (item != null) { useTvDb = true; } } } } if (item != null) { if (obj is SearchMovieViewModel movie) { var is4kEnabled = await _featureService.FeatureEnabled(FeatureNames.Movie4KRequests); if (item.Has4K && is4kEnabled) { movie.Available4K = true; obj.EmbyUrl = item.Url; } else { obj.Available = true; obj.EmbyUrl = item.Url; obj.Quality = item.Quality; } if (item.Quality.HasValue()) { obj.Available = true; obj.EmbyUrl = item.Url; obj.Quality = item.Quality; } } else { obj.Available = true; obj.EmbyUrl = item.Url; } if (obj.Type == RequestType.TvShow) { var search = (SearchTvShowViewModel)obj; // Let's go through the episodes now if (search.SeasonRequests.Any()) { var allEpisodes = EmbyContentRepository.GetAllEpisodes().Include(x => x.Series); foreach (var season in search.SeasonRequests) { foreach (var episode in season.Episodes) { await AvailabilityRuleHelper.SingleEpisodeCheck(useImdb, allEpisodes, episode, season, item, useTheMovieDb, useTvDb, Log); } } } AvailabilityRuleHelper.CheckForUnairedEpisodes(search); } } return(Success()); }
public async Task <RuleResult> Execute(SearchViewModel obj) { EmbyContent item = null; var useImdb = false; var useTheMovieDb = false; var useTvDb = false; if (obj.ImdbId.HasValue()) { item = await EmbyContentRepository.GetByImdbId(obj.ImdbId); if (item != null) { useImdb = true; } } if (item == null) { if (obj.TheMovieDbId.HasValue()) { item = await EmbyContentRepository.GetByTheMovieDbId(obj.TheMovieDbId); if (item != null) { useTheMovieDb = true; } } if (item == null) { if (obj.TheTvDbId.HasValue()) { item = await EmbyContentRepository.GetByTvDbId(obj.TheTvDbId); if (item != null) { useTvDb = true; } } } } if (item != null) { obj.Available = true; var s = await EmbySettings.GetSettingsAsync(); var server = s.Servers.FirstOrDefault(x => x.ServerHostname != null); if ((server?.ServerHostname ?? string.Empty).HasValue()) { obj.EmbyUrl = EmbyHelper.GetEmbyMediaUrl(item.EmbyId, server?.ServerHostname, s.IsJellyfin); } else { obj.EmbyUrl = EmbyHelper.GetEmbyMediaUrl(item.EmbyId, null, s.IsJellyfin); } if (obj.Type == RequestType.TvShow) { var search = (SearchTvShowViewModel)obj; // Let's go through the episodes now if (search.SeasonRequests.Any()) { var allEpisodes = EmbyContentRepository.GetAllEpisodes().Include(x => x.Series); foreach (var season in search.SeasonRequests) { foreach (var episode in season.Episodes) { await AvailabilityRuleHelper.SingleEpisodeCheck(useImdb, allEpisodes, episode, season, item, useTheMovieDb, useTvDb); } } } AvailabilityRuleHelper.CheckForUnairedEpisodes(search); } } return(Success()); }