YouTube 数据 API v3 - 如何在需要每 60 秒发送请求时管理默认 API 配额?
YouTube Data API v3 - How to manage default API quota while needing to send requests every 60 seconds?
最近,我一直在努力解决 YouTube 数据 API V3 的默认 API 配额(每天 10 000 个请求)的使用管理问题。
在我的 JS 应用程序中,我需要请求订阅者和并发观察者每 60 秒计数一次,同时只有频道 ID。因此,这是我正在执行的两个步骤:
1. 使用频道 ID 获取订阅者数量和直播 ID:
function show_yt_subs(room, youtube_id){
//var envelope = Object.values(JSON.parse(msg))[0];
console.log('[DEBUG] YT_SUBS Request - YT ID: %s.', youtube_id);
// Replace id and key with the accountId and an API key.
// Replace id and key with the accountId and an API key.
var id = youtube_id;
var yt_streamid;
var url = "https://www.googleapis.com/youtube/v3/channels?part=statistics&id=" + id + "&key=" + key;
request({
method: 'GET',
url: url
}, function (err, response, text) {
if (err) {
return;
}
var json = JSON.parse(text);
if (json.error) {
console.log('[DEBUG]YT API Error: ' +JSON.stringify(json.error.errors));
return;
}
if (!json.items) {
console.log('[DEBUG]YT_SUBS unavailable. Check your YouTube ID in Preferences tab.');
return;
} else {
var yt_subs = json.items[0].statistics.subscriberCount;
console.log(yt_subs);
io.to(room).emit('yt_subs', yt_subs);
show_yt_streamid(room, youtube_id);
}
});
}
2。获取当前直播ID后,获取当前观看人数和点赞数:
function show_yt_stats(room, yt_streamid){
var key = "##############";
console.log('[DEBUG] YT_STATS Request - YT ID: %s.', yt_streamid);
/*var data = buildApiRequest('GET',
'/youtube/v3/videos',
{'id': youtube_id,
'part': 'snippet,statistics,liveStreamingDetails'}); */
var api_url = 'https://www.googleapis.com/youtube/v3/videos?id='+yt_streamid+'&part=snippet,statistics,liveStreamingDetails&key=' + key;
request({
method: 'GET',
url: api_url,
}, function (err, response, data) {
if (err) {
return;
}
var data = JSON.parse(data);
var getStreamTitle = data.items[0].snippet.title;
var getStreamLikes = data.items[0].statistics.likeCount;
var getStreamViews = data.items[0].liveStreamingDetails.concurrentViewers;
console.log('[DEBUG] Information received: ');
console.log('[DEBUG] Title: %s - LikesCount: %s - Views: %s.', getStreamTitle, getStreamLikes, getStreamViews);
console.log('[DEBUG] Emitting YT_STATS to room: %s', room);
io.to(room).emit('yt_stats', JSON.stringify({"yt_title":getStreamTitle,"yt_watchers":getStreamViews, "yt_likes":getStreamLikes}));
return;});
这两个功能 运行 每 60 秒一次。这给每个用户每分钟两个请求。如果用户流式传输了大约 6 个小时,它会给我们每个用户大约 720 个请求,每个常规流。在跟上这种配额使用情况(假设有 10 个用户)的同时,它会在不到 2 小时后变干。
现在,我知道这里的解决方案之一是延长默认配额,但同时我想知道是否有另一种方法可以跟上默认的每日配额并为自己提供上述数据?
我认为没有其他方法可以解决您的工作。配额就是配额如果你需要数据那么你需要使用你的配额。
申请延期
您应该考虑申请延长您的配额。
单击铅笔图标
点击申请更高配额并填写表格。可能需要一段时间才能收到回复,您可能需要为延长的配额付费,但他们通常会与您合作。
最近,我一直在努力解决 YouTube 数据 API V3 的默认 API 配额(每天 10 000 个请求)的使用管理问题。 在我的 JS 应用程序中,我需要请求订阅者和并发观察者每 60 秒计数一次,同时只有频道 ID。因此,这是我正在执行的两个步骤: 1. 使用频道 ID 获取订阅者数量和直播 ID:
function show_yt_subs(room, youtube_id){
//var envelope = Object.values(JSON.parse(msg))[0];
console.log('[DEBUG] YT_SUBS Request - YT ID: %s.', youtube_id);
// Replace id and key with the accountId and an API key.
// Replace id and key with the accountId and an API key.
var id = youtube_id;
var yt_streamid;
var url = "https://www.googleapis.com/youtube/v3/channels?part=statistics&id=" + id + "&key=" + key;
request({
method: 'GET',
url: url
}, function (err, response, text) {
if (err) {
return;
}
var json = JSON.parse(text);
if (json.error) {
console.log('[DEBUG]YT API Error: ' +JSON.stringify(json.error.errors));
return;
}
if (!json.items) {
console.log('[DEBUG]YT_SUBS unavailable. Check your YouTube ID in Preferences tab.');
return;
} else {
var yt_subs = json.items[0].statistics.subscriberCount;
console.log(yt_subs);
io.to(room).emit('yt_subs', yt_subs);
show_yt_streamid(room, youtube_id);
}
});
}
2。获取当前直播ID后,获取当前观看人数和点赞数:
function show_yt_stats(room, yt_streamid){
var key = "##############";
console.log('[DEBUG] YT_STATS Request - YT ID: %s.', yt_streamid);
/*var data = buildApiRequest('GET',
'/youtube/v3/videos',
{'id': youtube_id,
'part': 'snippet,statistics,liveStreamingDetails'}); */
var api_url = 'https://www.googleapis.com/youtube/v3/videos?id='+yt_streamid+'&part=snippet,statistics,liveStreamingDetails&key=' + key;
request({
method: 'GET',
url: api_url,
}, function (err, response, data) {
if (err) {
return;
}
var data = JSON.parse(data);
var getStreamTitle = data.items[0].snippet.title;
var getStreamLikes = data.items[0].statistics.likeCount;
var getStreamViews = data.items[0].liveStreamingDetails.concurrentViewers;
console.log('[DEBUG] Information received: ');
console.log('[DEBUG] Title: %s - LikesCount: %s - Views: %s.', getStreamTitle, getStreamLikes, getStreamViews);
console.log('[DEBUG] Emitting YT_STATS to room: %s', room);
io.to(room).emit('yt_stats', JSON.stringify({"yt_title":getStreamTitle,"yt_watchers":getStreamViews, "yt_likes":getStreamLikes}));
return;});
这两个功能 运行 每 60 秒一次。这给每个用户每分钟两个请求。如果用户流式传输了大约 6 个小时,它会给我们每个用户大约 720 个请求,每个常规流。在跟上这种配额使用情况(假设有 10 个用户)的同时,它会在不到 2 小时后变干。 现在,我知道这里的解决方案之一是延长默认配额,但同时我想知道是否有另一种方法可以跟上默认的每日配额并为自己提供上述数据?
我认为没有其他方法可以解决您的工作。配额就是配额如果你需要数据那么你需要使用你的配额。
申请延期
您应该考虑申请延长您的配额。
单击铅笔图标
点击申请更高配额并填写表格。可能需要一段时间才能收到回复,您可能需要为延长的配额付费,但他们通常会与您合作。