【问题标题】:iOS Getting a JSON list of videos from YouTubeiOS 从 YouTube 获取视频的 JSON 列表
【发布时间】:2013-08-06 21:15:36
【问题描述】:

我以前从未使用过 YouTube API,所以我完全不了解 API 文档……而且运气不佳。

我设法找到了一些可以获取视频 ID 并在应用中播放的示例代码。这很好。

但是,我想获取用户 ID(即频道 ID)并获取视频 ID 列表(以 JSON 格式)。

我正在查看 v3 文档...

Here I can get the details of the channel by using the channel ID

Here I can get a list of the playlists belonging to a channel by using the channel ID (but no videos)

Here I can get the details of a video but only by using the video ID. (or searching using a name, category, etc...

我想要做的是使用频道 ID(我实际上拥有该频道)并获取视频列表,以便我可以在应用中显示它们并且用户可以观看它们。

...在 JSON 中,而不是 XML。

【问题讨论】:

    标签: ios objective-c youtube


    【解决方案1】:

    好的,两个小时后我就完成了:)

    首先我从 Cocoapods 安装了 iOS-GTLYouTube 和 SCFNetworking 框架。

    然后在应用委托中...

    #import <GTLYouTube.h>
    

    然后提出请求……

    GTLServiceYouTube *service = [[GTLServiceYouTube alloc] init];
    
    service.APIKey = @"my api key from google";
    
    GTLQueryYouTube *query = [GTLQueryYouTube queryForPlaylistItemsListWithPart:@"contentDetails"];
    query.playlistId = @"the playlist id I want to request";
    
    GTLServiceTicket *ticket = [service executeQuery:query
                                   completionHandler:^(GTLServiceTicket *ticket, id object, NSError *error) {
                                       if (!error) {
                                           GTLYouTubePlaylistItemListResponse *playlistItems = object;
    
                                           for (GTLYouTubePlaylistItem *playlistItem in playlistItems) {
                                               GTLYouTubePlaylistItemContentDetails *details = playlistItem.contentDetails;
    
                                               NSLog(@"PlaylistItem video ID = %@", details.videoId);
                                           }
                                       } else {
                                           NSLog(@"%@", error);
                                       }
                                   }];
    

    【讨论】:

    • 我按照你的做法,我在谷歌开发者控制台中启用了 youtube api 并生成了一个 API 密钥,但我在运行时收到此错误:“操作无法完成。(访问未配置。您的项目未启用 API,或者您的 API 密钥上配置了 per-IP 或 per-Referer 限制,并且请求与这些限制不匹配。请使用 Google Developers Console 更新您的配置。)".. ...我做错了什么?
    • 已解决。我从谷歌控制台中删除了捆绑包名称,它起作用了。
    【解决方案2】:

    在问题中,您列出了以下端点:

    • /v3/频道
    • /v3/视频
    • /v3/播放列表

    您找到的解决方案是调用此端点来获取播放列表中的视频:

    • /v3/playlistItems

    在 YouTube 的 API 浏览器链接中:

    https://developers.google.com/youtube/v3/docs/playlistItems/list

    part 设置为contentDetails,将playlistId 设置为YouTube 播放列表ID。

    以下是响应的相关部分:

      {
       "pageInfo": {
        "totalResults": 83,
        "resultsPerPage": 5
       },
       "items": [
        {
         "contentDetails": {
          "videoId": "kGbDymJ75PU"
         }
        },
        {
         "contentDetails": {
          "videoId": "oVPepkniuXI"
         }
        }
       ]
      }
    

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 2012-10-24
      • 2017-08-25
      • 2015-08-31
      • 2012-12-06
      • 2019-04-04
      • 2014-02-09
      • 2012-03-20
      • 1970-01-01
      相关资源
      最近更新 更多