Beispiel #1
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);
            }
        }
Beispiel #2
0
 public UserFilmProductionsRepository(MySerialListDBContext mySerialListDBContext)
 {
     _mySerialListDBContext = mySerialListDBContext;
 }
Beispiel #3
0
 public ReviewEpisodeRepository(MySerialListDBContext movieBookDBContext)
 {
     _mySerialListDBContext = movieBookDBContext;
 }
Beispiel #4
0
 public ReviewFilmProductionRepository(MySerialListDBContext movieBookDBContext)
 {
     _mySerialListDBContext = movieBookDBContext;
 }
Beispiel #5
0
        private async Task AddEpisodes(string link, int filmProductionId)
        {
            HtmlWeb      web = new HtmlWeb();
            HtmlDocument doc = await web.LoadFromWebAsync(link + "/1");

            HtmlNode           documentNode = doc.DocumentNode;
            HtmlNodeCollection seasons      = documentNode.SelectNodes("//div[@class='episodesContainer episodesContainer--season ']");

            List <Episode> episodesList = new List <Episode>();

            if (seasons == null)
            {
                doc = await web.LoadFromWebAsync($"{link}");

                documentNode = doc.DocumentNode;
                HtmlNodeCollection episodes = documentNode.SelectNodes("//li[@class='episode ']");
                Console.WriteLine("sezon 1");
                foreach (HtmlNode episodeNode in episodes)
                {
                    string title    = episodeNode.SelectSingleNode(".//div[@class='episode__title']").InnerText.Decode();
                    string released = episodeNode.SelectSingleNode(".//div[@class='episode__dates']").InnerText.Decode();

                    Episode episode = new Episode
                    {
                        Title            = title.Contains(" - ") ? title.Split(" - ")[1] : title,
                        EpisodeNumber    = title.Contains(" - ") ? int.TryParse(title.Split(" - ")[0], out int k) ? k : 0 : 0,
                        Season           = 1,
                        Released         = released,
                        FilmProductionId = filmProductionId
                    };
                    episodesList.Add(episode);
                    Console.WriteLine("   " + episode.Title);
                }
            }
            else
            {
                for (int i = 1; i <= seasons.Count + 1; i++)
                {
                    doc = await web.LoadFromWebAsync($"{link}/{i}");

                    documentNode = doc.DocumentNode;
                    HtmlNodeCollection episodes = documentNode.SelectNodes("//li[@class='episode ']");
                    Console.WriteLine("sezon " + i, ConsoleColor.Green);
                    foreach (HtmlNode episodeNode in episodes)
                    {
                        string title    = episodeNode.SelectSingleNode(".//div[@class='episode__title']").InnerText.Decode();
                        string released = episodeNode.SelectSingleNode(".//div[@class='episode__dates']").InnerText.Decode();

                        Episode episode = new Episode
                        {
                            Title            = title.Contains(" - ") ? title.Split(" - ")[1] : title,
                            EpisodeNumber    = title.Contains(" - ") ? int.TryParse(title.Split(" - ")[0], out int k) ? k : 0 : 0,
                            Season           = i,
                            Released         = released,
                            FilmProductionId = filmProductionId
                        };
                        episodesList.Add(episode);

                        Console.WriteLine("   " + episode.Title);
                    }
                }
            }

            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.Episodes.AddRangeAsync(episodesList);

            await context.SaveChangesAsync();
        }
 public EpisodeRepository(MySerialListDBContext dbContext)
 {
     _dbContext = dbContext;
 }
Beispiel #7
0
 public FilmProductionRepository(MySerialListDBContext dbContext)
 {
     _dbContext = dbContext;
 }