Пример #1
0
 private static IEnumerable<Movie> DoSearch(Func<MovieSearchCriteria, IEnumerable<Movie>> searchMovies, MovieSearchCriteria movieSearchCriteria, string providerName)
 {
     Logger.InfoFormat("Seaching {0}...", providerName);
     var results = searchMovies(movieSearchCriteria);
     Logger.InfoFormat("based on the following criteria: {0} {1} returned: {2} results ", movieSearchCriteria, providerName, results.Count());
     return results;
 }
Пример #2
0
 public IEnumerable<Movie> Search(MovieSearchCriteria criteria)
 {
     var results = new Dictionary<string, IEnumerable<Movie>>();
     foreach (var provider in movieProviders)
     {
         var movies = DoSearch(provider.SearchMovies, criteria, provider.Name);
         results.Add(provider.Name, movies);
     }
     return MergeResults(results["Netflix"], results["Rotten Tomatoes"]);
 }
Пример #3
0
        private static IEnumerable<Title> DoSearch(NetflixCatalog context, MovieSearchCriteria criteria)
        {
            var movies = new List<Title>();
            if (!string.IsNullOrWhiteSpace(criteria.Title))
            {
                movies = context.Titles.Expand("Cast").Where(t => t.Name.ToLower().Equals(criteria.Title.ToLower())).Select(t => t).ToList();
                if (!movies.Any())
                {
                    movies =context.Titles.Expand("Cast").Where(t => t.Name.ToLower().Contains(criteria.Title.ToLower())).Select(t => t).ToList();
                }
                return movies;
            }

            if (!string.IsNullOrWhiteSpace(criteria.Genre))
            {
                var genreList = GenreMap.GetMap(criteria.Genre);
                var genre = genreList.First();
                var byGenre = context.Genres.Expand("Titles/Cast").Where(g => g.Name.Equals(genre)).ToList();
                var titles = byGenre.SelectMany(g => g.Titles.ToList());
                movies = new List<Title>(titles);
                return movies.ToList();
            }

            if (criteria.Key!=null)
            {
                var id = criteria.Key.NetflixId;
                if (!string.IsNullOrWhiteSpace(id))
                {

                    try
                    {
                        movies = context.Titles.Expand("Cast").Where(t => t.Id.Equals(id)).ToList();
                    }
                    catch (Exception e)
                    {
                        Logger.Error(e);
                    }
                }
            }

            return movies;
        }
Пример #4
0
        public IEnumerable<Movie> SearchMovies(MovieSearchCriteria criteria)
        {
            var netflixUri = new Uri("http://odata.netflix.com/Catalog/");
            var context = new NetflixCatalog(netflixUri);

            var titlesList = DoSearch(context, criteria);
            var movies = titlesList.Select(m => new Movie
                                                    {
                                                        ProviderMovieId = m.Id,
                                                        Availability = m.GetAvailability(),
                                                        WatchedDate = null,
                                                        Title = m.Name,
                                                        Cast = m.GetCast(),
                                                        Key = new MovieKey{NetflixId = m.Id},
                                                        Summary = m.Synopsis,
                                                        RunTime = m.GetRunTimeInMinutes(),
                                                        RelatedImages = m.GetRelatedImages(),
                                                        Reviews = m.GetReviews(),
                                                        Rating = m.GetRating(),
                                                         MPAARating = m.Rating,
                                                         Source = "Netflix"
                                                     }).ToList();
            return movies;
        }
Пример #5
0
        private List<Movie> GetMovies(Member member)
        {
            var helper = new SearchHelper();

            var movies = new List<Movie>();
            var memberMovies = member.Movies;
            foreach (var movie in memberMovies)
            {
                var criteria = new MovieSearchCriteria {Key = movie.Key};
                var movieDetail = helper.Search(criteria).FirstOrDefault();
                if (movieDetail!=null)
                {
                    //make sure we set the key to the one we already have....otherwise a new one will get created.
                    movieDetail.Key = movie.Key;
                    movies.Add(movieDetail);
                }
            }
            return movies;
        }