Здравствуйте! Пытаюсь получить идентификаторы более, чем у 50 роликов, используя nextPageToken. Но проблема в том, что каждый раз в переменную ids добавляются и идентификаторы с предыдущей итерации - их становится больше 50 - и выполнение запроса крашится. Есть разумные способы как это предотвратить? По итогу необходимо получить все видео по ключевому слову.
public async Task<ActionResult> Parse(string keyword)
{
var youtubeService = new YouTubeService(new BaseClientService.Initializer()
{
ApiKey = "myapikey"
});
var nextPageToken = "";
string part = "snippet, statistics";
string ids = string.Empty;
StringBuilder sb = new StringBuilder();
var videos = new List<Video>();
while (nextPageToken != null)
{
var videosListMultipleIdsRequest = youtubeService.Videos.List(part);
var searchListRequest = youtubeService.Search.List("snippet");
searchListRequest.Q = keyword; // Replace with your search term.
searchListRequest.MaxResults = 50;
searchListRequest.PageToken = nextPageToken;
var searchListResponse = await searchListRequest.ExecuteAsync();
foreach (var searchResult in searchListResponse.Items)
{
if (searchResult.Id.Kind.Equals("youtube#video"))
{
ids = sb.Append($"{searchResult.Id.VideoId},").ToString();
}
}
ids = ids.Remove(ids.Length - 1);
if (!string.IsNullOrEmpty(ids))
{
videosListMultipleIdsRequest.Id = ids;
}
var response = await videosListMultipleIdsRequest.ExecuteAsync();
foreach (var item in response.Items)
{
videos.Add(item);
}
ids = string.Empty;
nextPageToken = searchListResponse.NextPageToken;
}
ViewBag.Videos = videos;
return View();
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей