О чем мечтает каждый автор 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(); } }
Комментариев нет:
Отправить комментарий