public async Task <IActionResult> Scrape() { var shows = await _scrapeService.GetShowsAsync(0); while (shows.Count > 0) { foreach (var show in shows) { await _showRepository.CreateIfNotExistsAsync(show); await _showRepository.SaveAsync(); foreach (var person in show.Cast) { await _personRepository.CreateIfNotExistsAsync(person); } await _personRepository.SaveAsync(); } var nextPage = (await _showRepository.GetLastShowAsync())?.ShowId ?? 0 / 250; shows = await _scrapeService.GetShowsAsync(nextPage); } return(Ok()); }
protected override async Task Handle(ScrapeHandler request, CancellationToken cancellationToken) { var pageNumber = await GetNextPageNumber(); var tvShows = await _scrapeService.GetShowsAsync(pageNumber); while (tvShows.Count > 0) { foreach (var show in tvShows) { await _showRepository.CreateIfNotExistsAsync(show); } await _showRepository.SaveAsync(); var nextPage = await GetNextPageNumber(); tvShows = await _scrapeService.GetShowsAsync(nextPage); } }