Читаем Цифровая электроника для начинающих полностью

Нужный нам запрос имеет следующий вид:

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

Как получить ID канала, мы уже знаем. С ключом чуть сложнее. Ключ для доступа к API бесплатный, получить его можно на странице https://console.developers.google.com в разделе “учетные данные”. Сам ключ - это обычная текстовая строка, которая выглядит примерно так: AIzaSyC26UJw-ubU6N6ukrbZ_C_nBaxxxxxxxxx.

Инструкция по получению ключа также есть на странице подсказки google.

Go to the API Console.

From the projects list, select a project or create a new one.

If the APIs & services page isn't already open, open the left side menu and select APIs & services.

On the left, choose Credentials.

Click Create credentials and then select API key.

Я специально оставлю ее как есть без перевода, чтобы еще раз подчеркнуть важность знания английского в современной разработке. URL целиком выглядит так:

https://www.googleapis.com/youtube/v3/channels?id=UCzz4CoEgSgWNs9ZAvRMhW2A∂=statistics&key=AIzaSyC26UJw-ubU6N6ukrbZ_C_nBaxxxxxxxxx

Здесь UCzz4CoEgSgWNs9ZAvRMhW2A - это идентификатор канала, а AIzaSyC26UJw-ubU6N6ukrbZ_C_nBaxxxxxxxxx - это ключ доступа. Мы можем вставить эту строку в браузер, и получить информацию о канале.

Как можно видеть, нужные нам данные хранятся в разделе items/statistics. Запомним это, когда будем делать обработку json.

Шаг-3. Чтение данных

Здесь мы повторяем фактически то же, что мы делали для чтения с сайта “ВКонтакте”.

Код для запроса к сайту:

const char *url = "https://www.googleapis.com/youtube/v3/channels?id=UCzz4CoEgSgWNs9ZAvRMhW2A∂=statistics&key=XXXXX";

HTTPClient http;

http.begin(url);

int httpCode = http.GET();

if (httpCode > 0) {

Serial.print("httpCode: "); Serial.println(httpCode);

String json = http.getString();

} else {

Serial.println("HTTP request error");

Serial.println(httpCode);

}

Кстати, коды ошибок сервера - очень важны для анализа, если что-то не так. Например, код 404 говорит о том, что страница не найдена, 403 - “доступ запрещен” и пр. Полный список можно почитать в Википедии.

Шаг-4. Обработка Json

Еще раз внимательно посмотрим на json, который мы получили:

{

"kind": "youtube#channelListResponse",

"items": [

{

"kind": "youtube#channel",

"statistics": {

"viewCount": "30177125",

"commentCount": "313",

"subscriberCount": "251966",

"videoCount": "301"

}

}

]

}

Как можно видеть, items - это массив элементов, т.к. он содержит скобки []. Внутри есть объект statistics, а внутри него нужное нам поле subscriberCount.

Код чтения Json будет выглядеть вот так:

DynamicJsonBuffer jsonBuffer(16*1024);

JsonObject& parsed = jsonBuffer.parseObject(json);

if (parsed.success()) {

JsonArray& items = parsed["items"];

if (items.size()> 0) {

JsonObject& statistics = items[0]["statistics"];

long subscriberCount = statistics["subscriberCount"];

Serial.print("Number of subscribers: ");

Serial.println(subscriberCount);

}

} else {

Serial.println("Json parsing error");

}

Мы создаем объект типа JsonArray, и если он не пуст, обращаемся к элементу с первым номером (в Си массивы нумеруются с нуля, items[0] это первый элемент).

Задача решена! Код полностью выглядит так:

#include

#include

#include

const char* ssid = "TP-LINK_AB11";

const char* password = "12345678";

void setup() {

Serial.begin(115200);

Serial.print("Connecting to ");

Serial.println(ssid);

while (WiFi.status() != WL_CONNECTED) {

delay(1000);

Serial.print(".");

WiFi.begin(ssid, password);

}

Serial.println("");

Serial.println("WiFi connected!");

}

void loop() {

const char *url = "https://www.googleapis.com/youtube/v3/channels?id=UCzz4CoEgSgWNs9ZAvRMhW2A∂=statistics&key=XXXXXXXXXX";

Serial.println("Connecting to www.googleapis.com");

HTTPClient http;

http.begin(url);

int httpCode = http.GET();

if (httpCode > 0) {

Serial.print("httpCode: "); Serial.println(httpCode);

String json = http.getString();

// Парсинг Json

DynamicJsonBuffer jsonBuffer(16*1024);

JsonObject& parsed = jsonBuffer.parseObject(json);

if (parsed.success()) {

JsonArray& items = parsed["items"];

if (items.size()> 0) {

JsonObject& statistics = items[0]["statistics"];

long subscriberCount = statistics["subscriberCount"];

Serial.print("Number of subscribers: ");

Serial.println(subscriberCount);

}

} else {

Serial.println("Json parsing error");

}

} else {

Serial.println("HTTP request error");

Serial.println(httpCode);

}

http.end();

// Пауза

delay(120000);

}

Для использования этого кода будет необходимо заменить имя и пароль WiFi-сети, а также вставить идентификатор канала и правильный ключ для доступа к Google API.

При запуске программы данные будут выведены в Serial Monitor:

Самостоятельная работа: По аналогии с вышенаписанным, получить число просмотров для видеоролика на youtube. Для этого воспользоваться следующей функцией из Google API:

Перейти на страницу:

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию, елочные огни, электронные украшения, устройство преобразования звука, кодовый замок и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий. Во втором издании существенно переработан текст книги, в экспериментах используются более доступные электронные компоненты, добавлены новые проекты, в том числе с контроллером Arduino.

Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника
Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки