public NowPlayingResults GetRegionPageResults(string region, int page) { var client = new RestClient("https://api.themoviedb.org/3/movie/now_playing"); var request = new RestRequest(Method.GET); bool done = true; IRestResponse response; request.AddParameter("region", region, ParameterType.QueryString); request.AddParameter("page", page, ParameterType.QueryString); request.AddParameter("language", "en-US", ParameterType.QueryString); request.AddParameter("api_key", token, ParameterType.QueryString); request.AddParameter("undefined", "{}", ParameterType.RequestBody); do { done = true; Console.WriteLine("Grabbing now playing page = " + page); response = client.Execute(request); if (response.StatusCode == (System.Net.HttpStatusCode) 429) { Console.WriteLine("Waiting"); int waitTime = Int32.Parse(response.Headers[2].Value.ToString()); System.Threading.Thread.Sleep((waitTime + 2) * 1000); done = false; } } while (!done); NowPlayingResults p = JsonConvert.DeserializeObject <NowPlayingResults>(response.Content); return(p); }
public FullResponse GetNowPlaying() { List <NowPlayingResults> resultSet = new List <NowPlayingResults>(); foreach (string region in regions) { int i = 1; int total_pages = 0; do { NowPlayingResults npr = GetRegionPageResults(region, i); npr.region = region; total_pages = npr.total_pages; resultSet.Add(npr); i++; } while (i <= total_pages); } var movieIDs = (from result in resultSet from movie in result.results select movie.id).Distinct().ToList(); Dictionary <int, MovieDetails> movieDetails = new Dictionary <int, MovieDetails>(); Dictionary <int, MovieCredits> movieCredits = new Dictionary <int, MovieCredits>(); Dictionary <int, MovieReviews[]> movieReviews = new Dictionary <int, MovieReviews[]>(); foreach (int movieID in movieIDs) { movieDetails[movieID] = getDetailsForMovieID(movieID); movieCredits[movieID] = getCreditsForMovieID(movieID); movieReviews[movieID] = getReviewsForMovieID(movieID); } FullResponse fr = new FullResponse { nowPlaying = resultSet, details = movieDetails, credits = movieCredits, reviews = movieReviews }; return(fr); }