0

我得到了一个 youtube ID 列表。对于每个 IDS,我想使用YouTube API来获取标题、持续时间和缩略图。然后,我希望用户能够单击这些缩略图,从而将他们带到一个 UIWebView,他们可以在其中观看视频。

我真的很纠结如何从 ID 中实际创建视频对象。我不太了解Google 示例代码中给出的过程,他们根据播放列表获得标题。我不希望它基于播放列表,我希望它基于独立 ID 或 URL。

使用播放列表查询,代码使用:

  if ([playlistID length] > 0) {
GTLServiceYouTube *service = self.youTubeService;

GTLQueryYouTube *query = [GTLQueryYouTube queryForPlaylistItemsListWithPart:@"snippet,contentDetails"];
query.playlistId = playlistID;
query.maxResults = 50;

_playlistItemListTicket = [service executeQuery:query
                               completionHandler:^(GTLServiceTicket *ticket,
                                                   GTLYouTubePlaylistItemListResponse *playlistItemList,
                                                   NSError *error) {
   // Callback
   _playlistItemList = playlistItemList;
   _playlistFetchError = error;
   _playlistItemListTicket = nil;

   [self updateUI];
 }];
  }

我明白,但通过GTLQueryYouTube看,我看不到任何与单个视频相关的内容。有人有什么想法吗?谢谢!

4

1 回答 1

0

最终我使用了:

GTLServiceYouTube *service = [[GTLServiceYouTube alloc] init];
// Services which do not require sign-in may need an API key from the
service.APIKey = @"myKey";

GTLQueryYouTube *query = [GTLQueryYouTube queryForVideosListWithPart:@"id, snippet, fileDetails"];
query.identifier = @"xxxxxxxxxx, yyyyyyyyyy";

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;
                                       // iteration of items and subscript access to items.
                                       for (GTLYouTubeSearchResult *item in products) {

                                           //NSMutableDictionary *dictionary = [item JSONValueForKey:@"id"];
                                           GTLYouTubeThumbnailDetails *thumbnails = item.snippet.thumbnails;
                                           GTLYouTubeThumbnail *thumbnail = thumbnails.high;

                                           [imageArray addObject:thumbnail.url];
                                           [titleArray addObject:item.snippet.title];

                                           //NSLog(@"id: %@", [dictionary objectForKey:@"videoId"]);
                                           //NSLog(@"Title: %@", item.snippet.title);

                                       }
                                   }else{
                                       NSLog(@"Error: %@", error.description);

                                   }
                                   [self.thumbnailView reloadData];
                               }];

因此,使用逗号分隔的视频 ID 列表创建了一个queryForVideosListWithPart

于 2013-09-12T20:52:22.820 回答