Как я могу получить количество подписчиков из YouTube API без oAuth? - PullRequest
0 голосов
/ 04 декабря 2018

Я хочу получить субсчет канала YouTube, который мне не принадлежит.Я хочу использовать этот объект данных, чтобы бот чирикал число каждый час.Как я могу сделать это без использования аутентификации и без использования веб-браузера.Этот проект не использует веб-браузер, поэтому я не хочу создавать HTML-страницы и отображать их на веб-сайте или что-то еще.Я просто хочу получить объект и передать его моему боту в твиттере, который затем будет твитнуть его.Я использую JavaScript и узел

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

YouTube предоставляет API, к которому можно обратиться, перейдя по следующему URL:

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

Обязательно замените {{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 больше не будет считать его действительным, в результате чего запрос будет недействительным.

0 голосов
/ 05 декабря 2018

Обновление (не пытайтесь использовать этот подход):

Кажется, 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 может изменить страницу в любой момент.время, которое может привести к тому, что код не будет работать, так как это требует, чтобы страница была настроена определенным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...