Пример #1
0
        public async Task StartScrapingAsync()
        {
            try
            {
                var shows = await ProcessTVShows();

                foreach (var show in shows)
                {
                    var castList = await ProcessCastmembers(show.Id);

                    if (castList.Any())
                    {
                        var exsitingLinkages = await _tvMazeRepository.GetCastShowLinkageAsync();

                        var linkageList = castList.ToList().Select(cm => new CastShowLinkage()
                        {
                            CastmemberId = cm.Id, TVShowId = show.Id
                        })
                                          .Where(cm => !exsitingLinkages.Any(link => link.CastmemberId == cm.CastmemberId && link.TVShowId == cm.TVShowId))
                                          .GroupBy(cm => new { cm.CastmemberId, cm.TVShowId }).Select(x => x.First());

                        _tvMazeRepository.AddShow(show);
                        _tvMazeRepository.AddCastmembers(castList);
                        _tvMazeRepository.AddCastShowLinkage(linkageList);
                        _tvMazeRepository.Save();
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.LogError(ex.Message);
            }
        }