没有oAuth的情况下如何从YouTube API检索订阅者人数?

时间:2018-12-04 20:58:03

标签: node.js youtube

我想检索我不拥有的YouTube频道的子计数。 我想使用该数据对象让Bot每小时发出一条推文。 如何在不使用Auth且不使用网络浏览器的情况下执行此操作。这个项目不使用网络浏览器,所以我不想制作一个html页面并显示在网站或其他内容上。 我只想获取对象并将其传递给我的Twitter机器人,然后将其发布。 我正在使用JavaScript和node

2 个答案:

答案 0 :(得分:0)

更新(不要尝试这种方法):

如今,YouTube似乎依靠JS来呈现页面,而cheerio仅会提取静态HTML页面并对其进行解析。呈现页面后,很可能会检索订户帐户,然后使用JS将其显示在页面上,cheerio无法做到。因此,以下方法不适用于该特定网站。

原文:

使用HTTP请求获取页面,然后使用cheerio进行解析。如果您有经验,Cheerio的工作原理与jQuery非常相似-它只是解析HTML,并允许您使用jQuery选择器来获取所需的HTML。

我还使用request为我发出了HTTP请求。

下面是您可能需要做的一个粗略示例。

var cheerio = require('cheerio');
var request = require('request');

// Replace "user_account" with the account name.
var url = "https://www.youtube.com/user/user_account";

request({
    method: 'GET',
    url: url
}, function (err, response, html) {
    if (err) {
        console.log(err);

        return;
    }

    let $ = cheerio.load(html);

    var subscribers = $('#subscriber-count').text();

    // use subscribers...
});

问题

YouTube可以随时更改页面,这可能会导致代码无法正常工作,因为它要求以特定方式设置页面。

答案 1 :(得分:0)

YouTube提供了可以通过以下网址查询的API:

https://www.googleapis.com/youtube/v3/channels?part=statistics&id={{ID}}&key={{KEY}}

请确保将{{ID}}替换为您要查询的频道的ID,并将{{KEY}}替换为您的API密钥。 确保安装request节点模块。安装Node.js后,您只需执行npm install --save-dev request

var request = require('request');

// Replace id and key with the accountId and an API key.
var id = "UC-lHJZR3Gqxm24_Vd_AJ5Yw";
var key = "AIzaSyAyWsBUsAChiYPDOptU-NBAh_p7oExR1oc";

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

    console.log(json.items[0].statistics.subscriberCount);
});

我已经测试了代码,并且工作正常。

问题

key最终可能会停止工作,因为YouTube不再认为它有效,从而导致请求无效。