예제 #1
0
 private double Average(FilmProduction f)
 {
     if (f.Reviews.Count() > 0)
     {
         return(f.Reviews.Average(r => r.Grade));
     }
     else
     {
         return(0);
     }
 }
예제 #2
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);
            }
        }