是否有任何API可以检查Youtube渠道的货币化状态?也适用于youtube视频。我尝试youtube数据api但没有得到任何其他api知道货币化是开启还是关闭。
答案 0 :(得分:0)
我知道这是很久以前问过的,但如今我仍然发现有此需要。因此,在YouTube API文档中进行了大量搜索之后,我发现Google不提供此功能,因此我创建了一些解决方法。
基本上,我的工作是使用metricdRevenueRevenue指标生成分析报告,如果我遇到“ Forbidden error”或403,则再次尝试将指标更改为没有EstimatedRevenue。如果这次获得的报告数据没有错误,则表示该渠道没有任何收入,因此无法获利。
我正在使用nodejs进行说明,因为这是我在项目中使用的,但是您可以适应任何其他语言。您可能需要查看Google官方客户端库:
https://developers.google.com/youtube/v3/libraries
此代码段如下:
let isMonetized = true;
this.metrics = 'views,comments,likes,dislikes,estimatedMinutesWatched,grossRevenue,estimatedRevenue'
while (true) {
try {
const youtubeAnalytics = googleapis.google.youtubeAnalytics({ version: 'v2', auth });
const response = await youtubeAnalytics.reports
.query({
endDate: '2030-12-30',
ids: 'channel==MINE',
metrics: this.reportMetrics,
startDate: '2000-01-01',
});
const responseData = response.data;
const analyticsInfo = {
channelId,
channelName: youtubeTokens[channelId].channelName,
views: responseData.rows[0][0],
comments: responseData.rows[0][1],
likes: responseData.rows[0][2],
dislikes: responseData.rows[0][3],
estimatedMinutesWatched: responseData.rows[0][4],
grossRevenue: responseData.rows[0][5] !== undefined
? responseData.rows[0][5]
: 'Not monetized',
estimatedRevenue: responseData.rows[0][6] !== undefined
? responseData.rows[0][6]
: 'Not monetized',
};
return analyticsInfo;
} catch (error) {
if (error.code === 403 && isMonetized) {
console.log('Could not get reports. Trying again without revenue metrics');
this.reportMetrics = 'views,comments,likes,dislikes,estimatedMinutesWatched';
isMonetized = false;
} else {
console.log(error);
return false;
}
}
}