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