0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-07-10

前書き

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

image.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

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などを指定して取得する情報をフィルタリングできるよ

この説明は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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?