首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YouTube数据API v3 -如何管理默认的API配额,同时需要每60秒发送一次请求?

YouTube数据API v3 -如何管理默认的API配额,同时需要每60秒发送一次请求?
EN

Stack Overflow用户
提问于 2019-03-05 10:39:40
回答 1查看 566关注 0票数 0

最近,我一直在努力解决管理YouTube Data V3的默认API配额(每天10 000个请求)的使用问题。在我的JS应用程序中,我需要请求订阅者和并发观察者每60秒计数一次,同时只有频道ID。因此,下面是我正在执行的两个步骤: 1.使用频道ID获取订阅者计数和Live流ID:

代码语言:javascript
复制
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);
}
});
}
  1. 获取当前likes之后,获取并发监视程序并喜欢计数:
代码语言:javascript
复制
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个小时后变得干燥。现在,我知道这里的解决方案之一是延长默认配额,但与此同时,我想知道是否还有其他方法来跟上默认的每日配额,并向我提供上述数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-05 11:34:05

我认为你所做的没有别的办法了。配额是配额,如果需要数据,则需要使用配额。

请求扩展

你应该考虑延长你的配额。

单击铅笔词组

单击“申请更高配额”并填写此表。可能需要一段时间才能听到回音,你可能需要支付延长的配额,但他们通常会和你一起工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55000851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档