YouTubeの正確なチャンネル登録者数を表示させる簡易スクリプトレシピとYouTube APIでのデータ取得方法

## 前書き
YouTubeでYouTuberさんやVTuberさんを推していると必ず気になってしまうチャンネル登録者数。
しかし下の画像のように、1万人以上の数になるとn万人と表示されて視聴者は正確な数字が分かりません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1968855/38e11bc8-cff4-4c12-0099-6aa74d3ebf24.png)

こういう時は、APIを使って大本(サーバ)からデータを取得しましょう。
ということで、Linuxで動くチャンネル登録者数確認シェルスクリプトの ~~雑~~ 超簡単なレシピを紹介します。

## ソース
```GetSubScribeNum.sh
ChannelID=$1

if [ -n "$ChannelID" ];then
        curl -s --header --request GET "https://www.googleapis.com/youtube/v3/channels?key=KorehazibunnoAPIKeyMiserarenaiyo&part=statistics&id=${ChannelID}" | jq -r .items[].statistics.subscriberCount
else
        echo "引数にチャンネルIDを指定してください。"
fi
```
## 実行例
チャンネルIDをコピーして...
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1968855/1dda74f8-1ed1-dc52-922d-805c9e89f628.png)

Linux上でこんな感じで実行でき、こんな感じで表示されます。
※jq コマンドを使用できるようにしておきましょう。
```
$ . GetSubScribeNum.sh UCPG6tFP4ZHeuAtYx0nGm5ZA
1
```

## 何やってんの
このスクリプトの肝はもちろんここ(しかない)
・```curl -s --header --request GET "https://www.googleapis.com/youtube/v3/channels?key=KorehazibunnoAPIKeyMiserarenaiyo&part=statistics&id=${ChannelID}"```
・```jq -r .items[].statistics.subscriberCount```

スクリプトで使っているURLは以下のリファレンスを参考にして作成できます。
https://developers.google.com/youtube/v3/docs/channels/list

簡単に書くと以下の通りです。
・APIでチャンネルの情報は ```GET https://www.googleapis.com/youtube/v3/channels```で取得できるよ。
・必須パラメータpartには id、snippet...を指定できるので、用途に合わせて選んでね。
・チャンネルIDなどを指定して取得する情報をフィルタリングできるよ

:::note info
この説明はVideosやCommentsなど他のリソースのlistも大体同じです。
気になった方はリファレンスを読んで応用してみましょう。
:::


チャンネル登録者数の情報を取得できるpart名を、curlコマンドを実行して探してみます。
```"https://www.googleapis.com/youtube/v3/channels?key=KorehazibunnoAPIKeyMiserarenaiyo&part=[ここを変える]&id=UCPG6tFP4ZHeuAtYx0nGm5ZA"```

```
$ curl -s --header --request GET "https://www.googleapis.com/youtube/v3/channels?key=KorehazibunnoAPIKeyMiserarenaiyo&part=statistics&id=UCPG6tFP4ZHeuAtYx0nGm5ZA"
{
  "kind": "youtube#channelListResponse",
  "etag": "ly9AV36gOCr9VHRd4FQWAR3r250",
  "pageInfo": {
    "totalResults": 1,
    "resultsPerPage": 5
  },
  "items": [
    {
      "kind": "youtube#channel",
      "etag": "Xb6233U6-hNdV3H19c1qizTZFRU",
      "id": "UCPG6tFP4ZHeuAtYx0nGm5ZA",
      "statistics": {
        "viewCount": "0",
        "subscriberCount": "1",
        "hiddenSubscriberCount": false,
        "videoCount": "0"
      }
    }
  ]
}
```

```"subscriberCount"```といういかにもチャンネル登録者数っぽいキーがあります。この値を取得したいので、
jsonから値を取得できるjqコマンドを使います。
```"subscriberCount"```は、{} の中の items[] の中の {} の中の statistics{} にあるので

```jq -r .items[].statistics.subscriberCount``` となります。

これをcurl実行文にパイプで繋げると
```
$ curl -s --header --request GET "https://www.googleapis.com/youtube/v3/channels?key=KorehazibunnoAPIKeyMiserarenaiyo&part=statistics&id=UCPG6tFP4ZHeuAtYx0nGm5ZA" | jq -r .items[].statistics.subscriberCount
1
```

無事にチャンネル登録者数が取得できました。
このcurl文をスクリプトに組み込んで、チャンネルIDを引数で指定できるようにして、引数がない場合エラーにする処理を
加えたのが、上に書いたスクリプトの内容です。


## 後書き
高校の頃にYouTube APIリファレンスを読んで同じことを試みましたが知識もYouTube APIに関する記事も少なく
ちんぷんかんぷんだった経験があったので、分かるようになった今、なるだけ分かりやすい説明を書いてみました。
APIの使い方を1つ覚えれば、ほかのAPIをサポートしているソフトもリファレンスが段違いに読みやすくなると思います。
ディスコとかツイッターとかね

**色々できちゃうAPIライフを楽しもうぜ！！！！！！**

## 参考
API Keyの取得方法
https://qiita.com/shinkai_/items/10a400c25de270cb02e4
jqコマンドインストール方法
https://qiita.com/wnoguchi/items/70a808a68e60651224a4