obnizに自分のユーチューブチャンネル登録数を表示させる
はじめまして、鈴木と申します
テレワークが2020年4月から始まって家で仕事をしています
家にいることが多くなったので、ユーチューブを始めてみました
http://www.youtube.com/channel/UCcJ9YF8rYufqBHXvkPIlVJw
今までも普段行っていることをIoTLT勉強会で登壇していましたが
それを動画にしようと思ったのです。
2020/12/16でユーチューブ投稿して4ヶ月、チャンネル登録数は26人。
割と有益な動画を作っているつもりですが、あんまり増えない。
チャンネル登録数が気になってしょうがない!
こういうのも売ってますけど
買うと高い!
それなら自分で作ろうと思いました
せっかく動画にしているので見てください!
obnizでこういう表示ができます
現在はNode.jsで常時、動かしています
自分のビデオが再生されると緑LED、
チャンネル登録があるとピンクLEDを点灯させています
緑LEDは光るけど、なかなかピンクLEDは点灯しない・・・
ピンクLED点灯するのを楽しみにしてます!
最後にNode.jsのプログラムを掲載しておきます
LEDの配線などは、動画を参照してください
// -------------------------------------------------------------------------------------------
var Obniz = require("obniz");
var obniz = new Obniz("xxxx-xxxx"); // 自分のobniz ID
const fetch = require('node-fetch');
const GetChannelAPI = "https://www.googleapis.com/youtube/v3/channels?part=statistics&id=********&key=********"; //自分のチャンネル id, key
const WAIT_SEC = 60;
var SubScriberCount;
var oldSubScriberCount;
var ViewCount;
var oldViewCount;
var loop = 0;
function checkStatus( nowstatus, oldstatus, port )
{
if ( nowstatus != oldstatus )
{ // 状態変更あり LED点灯
if (port=="Channel")
{
obniz.io1.output(true);
}
if (port=="Video")
{
obniz.io2.output(true);
}
}
else
{ // 状態変更なし LED消灯
if (port=="Channel")
{
obniz.io1.output(false);
}
if (port=="Video")
{
obniz.io2.output(false);
}
}
}
obniz.onconnect = async function () {
obniz.io0.output(false); // LED端子GND出力
obniz.repeat(async ()=>
{
obniz.display.clear();
obniz.wait(2000);
fetch( GetChannelAPI ).then(response =>
{
if ( response.status == 200 )
{
return response.json().then(userInfo =>
{
SubScriberCount = userInfo.items[0].statistics.subscriberCount;
ViewCount = userInfo.items[0].statistics.viewCount;
obniz.display.print("Channel Reg\n");
obniz.display.print( SubScriberCount ); // チャンネル登録数
obniz.display.print(", lp=");
obniz.display.print( loop );
obniz.display.print("\nVideo times\n");
obniz.display.print( ViewCount ); // 総表示回数
if ( loop != 0 )
{ // 起動時のLED点灯させないようにする
// チャンネル登録数の確認
checkStatus( SubScriberCount, oldSubScriberCount, "Channel");
// ビデオ表示回数の確認
checkStatus( ViewCount, oldViewCount, "Video" );
// データを更新
}
oldSubScriberCount = SubScriberCount;
oldViewCount = ViewCount;
});
}
else
{ // レスポンスエラー
console.log("status= %dm loop= %d",response.status, loop );
obniz.display.clear();
obniz.display.print("error!");
obniz.io3.output(true);
obniz.wait(2000);
}
});
for (let sec = 1; sec < WAIT_SEC; sec++)
{
await obniz.wait(1000);
}
console.log("loop= %d",loop );
loop++;
});
}