О чем мечтает каждый автор YouTube? О том, чтобы зрители смотрели все его новые видео! Если пользователи подпишутся на ваш канал, они будут сразу узнавать о новых роликах и посещать вашу страницу снова и снова.
Счетчик подписчиков - хорошее решение для украшения интерьера любого автора Youtube . Данный счетчик позволяет показывать до 9999 подписчиков.
Потребуется: модуль сегментного индикатора на TM1637 и esp8266 (в моем случае esp-01, нам нужны всего 2 ноги). Чтобы все это более меее цивильно выглядело, я вытравил печатную плату с предумсотренным преобразователем на 3.3 вольта от 5. Также я купил рамку в FixPrice за 25 рублей и набросал картинку в формате рамки - 10х15. Если кому понадобится.
Как это работает
Скетч опрашивает через API канал на youtube и считывает показания:
- Количество подписавшихся
- Количество загруженных видео
- Количество просмотренных видео
- Количество скрытых подписчиков
Скетч
Скачиваем нужные библиотеки:
#include "SevenSegmentTM1637.h"
#include // installed by default
#include // https://github.com/witnessmenow/arduino-youtube-api
#include // https://github.com/bblanchon/ArduinoJson
#include
#include
const byte PIN_CLK = 0; // define CLK pin (any digital pin)
const byte PIN_DIO = 2; // define DIO pin (any digital pin)
SevenSegmentTM1637 display(PIN_CLK, PIN_DIO);
//------- Replace the following! ------
char ssid[] = "Имя WiFi"; // your network SSID (name)
char password[] = "Пароль"; // your network password
// google API key
// create yours: https://support.google.com/cloud/answer/6158862?hl=en
#define API_KEY "Создайте свой по ссылке выше"
// youtube channel ID
// find yours: https://support.google.com/youtube/answer/3250431?hl=en
#define CHANNEL_ID "Создайте свой по ссылке выше"
WiFiClientSecure client;
YoutubeApi api(API_KEY, client);
unsigned long api_mtbs = 1000; //mean time between api requests
unsigned long api_lasttime; //last time api request has been done
long subs = 0;
void setup() {
Serial.begin(115200);
display.begin(); // initializes the display
display.setBacklight(100); // set the brightness to 100 %
display.print("INIT");
// Set WiFi to station mode and disconnect from an AP if it was Previously
// connected
WiFi.mode(WIFI_STA);
WiFi.disconnect();
delay(100);
// Attempt to connect to Wifi network:
Serial.print("Connecting Wifi: ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
IPAddress ip = WiFi.localIP();
Serial.println(ip);
display.clear();
}
void loop() {
if (millis() > api_lasttime + api_mtbs) {
if(api.getChannelStatistics(CHANNEL_ID))
{
Serial.println("---------Stats---------");
Serial.print("Subscriber Count: ");
Serial.println(api.channelStats.subscriberCount);
Serial.print("View Count: ");
Serial.println(api.channelStats.viewCount);
Serial.print("Comment Count: ");
Serial.println(api.channelStats.commentCount);
Serial.print("Video Count: ");
Serial.println(api.channelStats.videoCount);
// Probably not needed :)
//Serial.print("hiddenSubscriberCount: ");
//Serial.println(api.channelStats.hiddenSubscriberCount);
Serial.println("------------------------");
display.print(api.channelStats.subscriberCount);
}
api_lasttime = millis();
}
}
Комментариев нет:
Отправить комментарий