private double Average(FilmProduction f) { if (f.Reviews.Count() > 0) { return(f.Reviews.Average(r => r.Grade)); } else { return(0); } }
private async Task ParseFilms() { for (int i = 1; i <= 1000; i++) { string url = $"https://www.filmweb.pl/films/search?page={i}"; HtmlWeb web = new HtmlWeb(); HtmlDocument doc = await web.LoadFromWebAsync(url); HtmlNode documentNode = doc.DocumentNode; HtmlNodeCollection filmsNodes = documentNode.SelectNodes("//li[@class='hits__item']"); List <FilmProduction> films = new List <FilmProduction>(); foreach (HtmlNode film in filmsNodes) { string Poster = film.SelectSingleNode(".//div[@class='filmPoster__link']")?.SelectSingleNode(".//img")?.Attributes["data-src"]?.Value; string Title = film.SelectSingleNode(".//h3[@class='filmPreview__title']")?.InnerText?.Decode(); string Released = film.SelectSingleNode(".//span[@class='filmPreview__year']")?.InnerText?.Decode(); string Plot = film.SelectSingleNode(".//div[@class='filmPreview__description']")?.InnerText?.Decode(); string Genre = film.SelectSingleNode(".//div[@class='filmPreview__info filmPreview__info--genres']")?.SelectSingleNode(".//a")?.InnerText?.Decode(); string Language = film.SelectSingleNode(".//div[@class='filmPreview__info filmPreview__info--countries']")?.SelectSingleNode(".//a")?.InnerText?.Decode(); string Director = film.SelectSingleNode(".//div[@class='filmPreview__info filmPreview__info--directors']")?.SelectSingleNode(".//a")?.InnerText?.Decode(); string Actors = film.SelectSingleNode(".//div[@class='filmPreview__info filmPreview__info--cast']")?.SelectSingleNode(".//a")?.InnerText?.Decode(); FilmProduction filmProduction = new FilmProduction { Poster = Poster, Title = Title, Released = Released, Plot = Plot, Genre = Genre, Language = Language, Director = Director, Actors = Actors, IsSeries = false }; films.Add(filmProduction); } DbContextOptionsBuilder <MySerialListDBContext> optionsBuilder = new DbContextOptionsBuilder <MySerialListDBContext>(); optionsBuilder.UseSqlServer("Server = tcp:35.184.110.50, 1433; User ID = sa; Password = Wozniak; Database = MySerialList"); using (MySerialListDBContext context = new MySerialListDBContext(optionsBuilder.Options)) { await context.FilmProductions.AddRangeAsync(films); await context.SaveChangesAsync(); } Console.WriteLine("page " + i); } }