我正在尝试获取当前活动的直播列表。我知道,有search/list方法,但它需要100个单位的api配额,并且只适用于每个请求一个通道。对于每天总配额为1M api的大量频道,不可能经常更新流的可用性。
那么,还有其他方法,我可以获得频道或频道列表的活跃流,避免“沉重”的搜索方法吗?
答案 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");
}