obnizに自分のユーチューブチャンネル登録数を表示させる

はじめまして、鈴木と申します

テレワークが2020年4月から始まって家で仕事をしています

家にいることが多くなったので、ユーチューブを始めてみました

http://www.youtube.com/channel/UCcJ9YF8rYufqBHXvkPIlVJw

 

今までも普段行っていることをIoTLT勉強会で登壇していましたが

それを動画にしようと思ったのです。

 

2020/12/16でユーチューブ投稿して4ヶ月、チャンネル登録数は26人。

割と有益な動画を作っているつもりですが、あんまり増えない。

チャンネル登録数が気になってしょうがない!

 

こういうのも売ってますけど

https://msp.c.yimg.jp/images/v2/FUTi93tXq405grZVGgDqGwc0imWswWQEcY1u3E2OFfz8UAbLxgVwGPJN9dTAPwEQLPVQ78E1yH5w07evGhSTmiCM-QKPND6AizY4mubUaIeO4k_uYIO7YPUqB55CK74j-k_y2mn6wdlFvdyc1v17LDFtM7PZFd695LIKrCgVlf98e3ul5xWu5-AuonryCMA4BxfJ15bj7P6LFquQvXnZNLb0Osb9xUJDwV3wklyf962v5-6AOGGv_Xv7FM8NHnaL_SQp3Uu2TI4tvxBeRWYXn-SsF-Scp6EiuS8zvpbBkNoVfZEuSg_nS1IaePJmXrhQEp-tAUz70Bkx6hO7OssGBJfiD-ch8e1ZtksaNXLJqG-EIwwBFPXRcHYaVPvfo0OQ/Social20counters20page20-2012028mobile29_0.jpg?errorImage=false

 

買うと高い!

それなら自分で作ろうと思いました

せっかく動画にしているので見てください!

 

www.youtube.com

youtu.be

 

obnizでこういう表示ができます

f:id:gadget0suzuyas:20201216163516j:plain

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++;
    });
}