YouTube Data API v3 - 如何在需要每60秒发送一次请求时管理默认API配额?

问题描述 投票:0回答:1

最近,我一直在努力解决管理YouTube Data 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小时后变干。现在,我知道这里的解决方案之一是扩展默认配额,但同时我想知道是否有另一种方法可以跟上默认的每日配额并提供上面的数据?

javascript node.js youtube-api youtube-data-api google-api-nodejs-client
1个回答
0
投票

我不认为你还在做什么其他方式。如果您需要数据,那么配额就是配额,那么您需要使用配额。

请求扩展

您应该考虑申请延长配额。

enter image description here

单击铅笔图标

enter image description here

点击申请更高的配额并填写表格。可能需要一段时间才能听到您可能需要支付扩展配额,但他们通常会与您合作。

© www.soinside.com 2019 - 2024. All rights reserved.