private IEnumerable <string> GetAllUrlsInSpecifiedGenre(string baseUrl, out HtmlWeb htmlWeb, out MovieParams movieParams, string view = "simple", string sort = "moviemeter.asc", string genres = "Crime", string page = "1") { //var index = 1; //while (true) //{ var listViewUrl = "http://www.imdb.com/search/title?explore=genres&view=" + view + "&sort=" + sort + "&genres=" + genres + "&page=" + page + "&ref_=adv_nxt"; htmlWeb = new HtmlWeb(); var listDocument = htmlWeb.Load(listViewUrl); movieParams = new MovieParams(); var allRelatedAnchors = listDocument.DocumentNode.SelectNodes("//a") .Where(x => x.ParentNode.ParentNode.Attributes.Contains("class") && x.ParentNode.ParentNode.Attributes["class"].Value.Contains("lister-item-header")).ToArray(); var allHrefs = allRelatedAnchors.Select(x => baseUrl + x.GetAttributeValue("href", "")); return(allHrefs); }
public async Task <IActionResult> GetMovies(MovieParams movieParams) { var movies = _context.Movies.Include(x => x.Photos).OrderByDescending(x => x.YearOfRelease).AsQueryable(); if (!string.IsNullOrEmpty(movieParams.Genre)) { movies = movies.Where(m => m.Genre == movieParams.Genre); } if (!string.IsNullOrEmpty(movieParams.Name)) { movies = movies.Where(m => m.Name.ToLower().StartsWith(movieParams.Name.ToLower())); } if (!string.IsNullOrEmpty(movieParams.OrderBy) && movieParams.OrderBy == "price") { movies = movies.OrderByDescending(x => x.Price); } if (!string.IsNullOrEmpty(movieParams.OrderBy) && movieParams.OrderBy == "year") { movies = movies.OrderByDescending(x => x.YearOfRelease); } var pagedMovies = await PagedList <Movie> .CreateAsync(movies, movieParams.PageNumber, movieParams.PageSize); var moviesToReturn = _mapper.Map <IEnumerable <MovieForListDto> >(pagedMovies); Response.AddPagination(pagedMovies.CurrentPage, pagedMovies.PageSize, pagedMovies.TotalCount, pagedMovies.TotalPages); return(Ok(moviesToReturn)); }
public async Task <IActionResult> GetMovies([FromQuery] MovieParams movieParams) { var movies = await _repo.GetMovies(movieParams); var moviesToReturn = _mapper.Map <IEnumerable <MovieForListDto> >(movies); return(Ok(moviesToReturn)); }
public async Task <IActionResult> ClearCart(MovieParams movieParams) { var movies = _context.Movies.Include(x => x.Photos); foreach (var movie in movies) { movie.InCart = false; } var pagedMovies = await PagedList <Movie> .CreateAsync(movies, movieParams.PageNumber, movieParams.PageSize); var moviesToReturn = _mapper.Map <IEnumerable <MovieForListDto> >(pagedMovies); _context.SaveChanges(); return(Ok(moviesToReturn)); }
public async Task <IEnumerable <TblMovie> > GetMovies(MovieParams movieParams) { var movies = _context.TblMovie.OrderByDescending(movie => movie.ARating); if (!string.IsNullOrEmpty(movieParams.OrderBy)) { switch (movieParams.OrderBy) { case "rating": movies = movies.OrderByDescending(movie => movie.ARating); break; default: movies = movies.OrderBy(movie => movie.APrice); break; } } return(await movies.ToListAsync()); }
public void StoreAllMovieInGenres(int page = 1, string hrefInit = null) { string baseUrl = "http://www.imdb.com"; HtmlWeb htmlWeb; page = page == 1 ? 1 : page; while (page > 0) { var allHrefs = GetAllUrlsInSpecifiedGenre(baseUrl, out htmlWeb, page); if (allHrefs == null) { page = 0; break; } var allHrefList = allHrefs.ToList(); if (allHrefList.Contains(hrefInit)) { var index = allHrefList.ToList().FindIndex(x => x == hrefInit); if (index >= 0) { allHrefList.RemoveRange(0, index); } } foreach (var href in allHrefList) { var movieParams = new MovieParams(); var detailDocument = htmlWeb.Load(href); //< span itemprop = "actors" itemtype = "http://schema.org/Person" itemscope = "" > // < a href = "/name/nm1785339?ref_=tt_ov_st_sm" itemprop = "url" > // < span class="itemprop" itemprop="name">Rami Malek</span> // </a> //</span> HtmlNode documentNode = detailDocument.DocumentNode; var title = GetMovieTitle(documentNode); movieParams.Title = title; var date = GetMovieDate(documentNode); movieParams.Year = date; var originalTitle = GetMovieOriginalTitle(documentNode); movieParams.OriginalTitle = originalTitle; movieParams.Status = Status.Active; movieParams.UserType = UserTypes.Dashboard; var creditNodes = documentNode.SelectNodes(".//div[@class='credit_summary_item']"); var stars = new List <string>(); if (creditNodes != null) { stars = creditNodes.SelectMany(x => x.Descendants("span") .Where(y => y.GetAttributeValue("class", "") == "itemprop" && y.GetAttributeValue("itemprop", "") == "name") .Select(z => z.InnerText)).ToList(); } string rating; var ratingNode = documentNode.SelectSingleNode(".//span[@itemprop='ratingValue']"); if (ratingNode == null) { continue; } rating = ratingNode.InnerText; movieParams.Rating = Double.Parse(rating.Replace(".", ",")); var ratingCount = documentNode.SelectSingleNode(".//span[@itemprop='ratingCount']")?.InnerText; movieParams.NumberOfVotes = Int32.Parse(ratingCount?.Replace(",", "")); var country = GetCountry(documentNode); movieParams.Country = country; var titleWrapper = documentNode.SelectSingleNode("//div[@class='title_wrapper']"); var typeAnchor = titleWrapper.SelectSingleNode("div/a[last()]"); if (typeAnchor != null) { movieParams.MovieType = typeAnchor.InnerText .Contains(MovieType.MiniSeries.GetEnumDescription <DisplayAttribute>().Name) ? MovieType.MiniSeries : typeAnchor.InnerText .Contains(MovieType.Series.GetEnumDescription <DisplayAttribute>().Name) ? MovieType.Series : typeAnchor.InnerText .Contains(MovieType.TvMovie.GetEnumDescription <DisplayAttribute>().Name) ? MovieType.TvMovie : MovieType.Movie; } var genreList = GetMovieCategories(documentNode)?.Select(x => x.Name).ToList(); var crewHref = baseUrl + documentNode.SelectSingleNode("//a[@class='quicklink']").GetAttributeValue("href", "404"); var crewNameCharacterPairs = GetCrewNamesOfMovie(crewHref, htmlWeb, stars); var directors = GetDirectors(crewHref, htmlWeb); movieParams.Director = directors; _movieService.CreateOrUpdate(movieParams); if (genreList != null) { _genreService.CreateGenres(genreList, movieParams.BaseEntityId); } if (crewNameCharacterPairs != null) { _actorService.CreateActors(crewNameCharacterPairs, movieParams.BaseEntityId); } } page = page + 1; } }