【问题标题】:Objective-C YouTube API - creating video object from URLObjective-C YouTube API - 从 URL 创建视频对象
【发布时间】:2013-09-12 10:13:47
【问题描述】:

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

我真的很纠结如何从 ID 中创建视频对象。我不太了解Google's sample code 中给出的过程,他们根据播放列表获得标题。我不希望它基于播放列表,我希望它基于独立 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 我看不到任何与单个视频相关的内容。 有人有什么想法吗?谢谢!

【问题讨论】:

    标签: ios youtube-api


    【解决方案1】:

    最后我用了:

    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];
                                   }];
    

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

    【讨论】:

    • 你能帮帮我吗,我在查询中添加了 fileDetails 但在响应 item.fileDetails 仍然返回 nil
    猜你喜欢
    • 2014-02-25
    • 2016-03-19
    • 2012-07-15
    • 1970-01-01
    • 2012-03-08
    • 2013-07-12
    • 2010-10-17
    相关资源
    最近更新 更多