【问题标题】:youtube api to get channel monetization status?youtube api 获取频道货币化状态?
【发布时间】:2016-10-29 00:50:51
【问题描述】:

是否有任何 API 可以检查 Youtube 频道的获利状态?也适用于 youtube 视频。我尝试了 youtube 数据 api,但没有得到。或任何其他 api 来知道货币化是打开还是关闭。

【问题讨论】:

    标签: youtube-api


    【解决方案1】:

    我知道很久以前有人问过这个问题,但现在我仍然发现了这个需求。所以在 YouTube API 文档中搜索了很多之后,我发现 Google 没有提供这个,所以我创建了一个小解决方法。

    基本上,我所做的是使用指标估计收入生成分析报告,如果我遇到“禁止错误”或 403,我再次尝试将指标更改为没有估计收入。如果这一次获得的报告数据没有错误,则意味着该频道没有任何收入,因此没有获利。

    我使用 nodejs 来说明这一点,因为这是我在我的项目中使用的,但您可以适应任何其他语言。您可能想查看 Google 官方客户端库:

    https://developers.google.com/youtube/v3/libraries

    sn-p 的代码是这样的:

    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;
    
            }
    
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-11
      • 2023-03-31
      • 2014-09-09
      • 2023-03-03
      • 2015-03-27
      • 2014-05-02
      • 2011-11-25
      • 2016-03-01
      相关资源
      最近更新 更多