以下是我从特定频道检索YouTube视频列表的代码:
GTLServiceYouTube *service;
self.vidInfos = [[NSMutableArray alloc] init];
service = [[GTLServiceYouTube alloc] init];
service.APIKey = @"my-api-key";
GTLQueryYouTube *query1 = [GTLQueryYouTube queryForPlaylistItemsListWithPart:@"id,snippet"];
query1.playlistId = @"the-playlist-id-from-utube-channel";
query1.maxResults = 50;
[service executeQuery:query1 completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) {
if (!error) {
GTLYouTubePlaylistItemListResponse *playlistItems = object;
for (GTLYouTubePlaylistItem *playlistItem in playlistItems) {
[self.vidInfos addObject:playlistItem];
}
[self.tableView reloadData];
}else {
NSLog(@"%@", error);
}
}];
而且,在cellForRowAtIndexPath
方法中:
GTLYouTubePlaylistItem *itemToDisplay = [self.vidInfos objectAtIndex:indexPath.row];
cell.textLabel.text = itemToDisplay.snippet.title;
查询接受max 50作为最大结果限制。但我需要显示整个列表,大约250个视频。
我该怎么做?我读到了关于使用pageTokens
的内容,但是我找不到关于如何使用pageTokens
的任何示例或代码,在哪里获取它们以及在哪里传递它们?
答案 0 :(得分:0)
在进行查询后收到的GTLYouTubeListResponse
具有名为NSString
的{{1}}属性。
此属性表示地址'如果你有多个页面,那么在下一页'搜索结果,
(意思是,搜索结果的数量高于您在nextPageToken
媒体资源中设置的数量,正如您所说,该数据有50个结果限制)
因此,使用您的问题作为总共250个结果的示例,您有5个搜索结果'页面'每个'页面上有50个搜索结果。
maxResults
有相应的GTLYouTubeQuery
属性,其中包含“{1}}属性。查询'页面'您希望收到的结果。
可能是实现这一目标的另一种方式,但这只是我的头脑 我认为这是实现这一目标的非常简单明了的方式 无论如何,下面的示例使用您的代码来演示如何使用此属性。
重要提示!!!
在下面的代码中,我正在循环播放'通过所有搜索结果,
这仅用于说明目的,
在您的应用中,您可能还想创建自己的自定义限制,
因此,如果用户搜索具有大量结果的常规关键字,您将不会尝试获取所有这些关键字,除了其他缺点之外,可能会比他将要阅读的更多,使不必要的网络和内存使用,并且会“哼哼”您的谷歌开发者积分(或任何它被称为,当它'成本'您进行谷歌API调用)
因此,如果我们使用您的原始代码 -
pageToken
祝你好运。