Youtube api v3获取频道列表的活动流

时间:2016-08-05 11:39:02

标签: youtube-api youtube-data-api

我正在尝试获取当前活动的直播列表。我知道,有search/list方法,但它需要100个单位的api配额,并且只适用于每个请求一个通道。对于每天总配额​​为1M api的大量频道,不可能经常更新流的可用性。

那么,还有其他方法,我可以获得频道或频道列表的活跃流,避免“沉重”的搜索方法吗?

1 个答案:

答案 0 :(得分:0)

您可以直接使用Live Streaming API - LiveStreams:list,LiveStreams:list返回与API请求参数匹配的视频流列表。

HTTP请求:

GET https://www.googleapis.com/youtube/v3/liveStreams

请注意,在每个请求中都需要授权访问以提供用户数据。您需要实施OAuth 2.0

包括onBehalfOfContentOwner参数,此参数适用于拥有和管理许多不同YouTube频道的YouTube内容合作伙伴。它允许内容所有者进行一次身份验证并访问其所有视频和频道数据,而无需为每个单独的频道提供身份验证凭据。

HTTP响应:

{
  "kind": "youtube#liveStreamListResponse",
  "etag": etag,
  "nextPageToken": string,
  "prevPageToken": string,
  "pageInfo": {
    "totalResults": integer,
    "resultsPerPage": integer
  },
  "items": [
    liveStream Resource
  ]
}

以下是如何请求liveStream资源的示例代码段:

 // This object is used to make YouTube Data API requests.
            youtube = new YouTube.Builder(Auth.HTTP_TRANSPORT, Auth.JSON_FACTORY, credential)
                    .setApplicationName("youtube-cmdline-liststreams-sample")
                    .build();
        // Create a request to list liveStream resources.
        YouTube.LiveStreams.List livestreamRequest = youtube.liveStreams().list("id,snippet");

        // Modify results to only return the user's streams.
        livestreamRequest.setMine(true);

        // Execute the API request and return the list of streams.
        LiveStreamListResponse returnedListResponse = livestreamRequest.execute();
        List<LiveStream> returnedList = returnedListResponse.getItems();

        // Print information from the API response.
        System.out.println("\n================== Returned Streams ==================\n");
        for (LiveStream stream : returnedList) {
            System.out.println("  - Id: " + stream.getId());
            System.out.println("  - Title: " + stream.getSnippet().getTitle());
            System.out.println("  - Description: " + stream.getSnippet().getDescription());
            System.out.println("  - Published At: " + stream.getSnippet().getPublishedAt());
            System.out.println("\n-------------------------------------------------------------\n");
        }