我无法获取YouTube视频的视频网址。我可以使用缩略图和标题检索播放列表项目,但我无法获得实际的视频网址。
GTLServiceYouTube *service = [[GTLServiceYouTube alloc] init];
service.APIKey = @"API Key";
GTLQueryYouTube *query = [GTLQueryYouTube queryForPlaylistItemsListWithPart:@"snippet,contentDetails"];
query.playlistId = @"playlist ID";
query.maxResults = 50;
GTLServiceTicket *ticket = [service executeQuery:query
completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) {
// This callback block is run when the fetch completes
if (error == nil)
{
GTLYouTubeSearchListResponse *products = object;
for (GTLYouTubeSearchResult *item in products)
{
NSLog(@"%@", item.snippet);
NSString *dictionary = [item.snippet JSONValueForKey:@"videoId"];
GTLYouTubeThumbnailDetails *thumbnails = item.snippet.thumbnails;
GTLYouTubeThumbnail *thumbnail = thumbnails.high;
NSString *thumbnailString = thumbnail.url;
if (thumbnailString != nil)
{
[self.thumbnailsArray addObject:thumbnailString];
[self.thumbnailTitleArray addObject:item.snippet.title];
//[self.videos addObject:video];
NSLog(@"id: %@", dictionary);
}
}
}
else
{
NSLog(@"Error: %@", error.description);
}
[self.tableView reloadData];
}];
是否有人知道如何使用YouTube API获取视频网址?
答案 0 :(得分:2)
首先,如果您只想在搜索结果中添加视频,则应设置type =视频。 在您的代码中:
query.playlistId = @"playlist ID";
query.maxResults = 50;
query.type = @"video";
您需要将“id”添加到部分中。您的查询电话将是:
GTLQueryYouTube *query = [GTLQueryYouTube queryForPlaylistItemsListWithPart:@"id,snippet,contentDetails"];
作为回应,您可以使用id.videoId获取视频ID。所以在你的代码中它将是:
NSString *videoId = item.identifier.videoId;
获得ID后,您可以将其插入:
http://www.youtube.com/watch?v={VIDEO ID HERE}
答案 1 :(得分:0)
v3 API中的video resource不提供网址。您可以做的是将视频ID附加到字符串。播放页面网址的格式通常为:
http://www.youtube.com/watch?v={VIDEO ID HERE}