キャンペーンページに「YouTubeの動画視聴数」を表示したいという要望があり調査しました。

YouTube Data API

視聴数を取得するにはYouTube Data APIを利用すればOKです。
ドキュメントを確認します。

Googoe Developers YouTube Data API
https://developers.google.com/youtube/v3

リファレンスもサンプルコードも豊富なので、上記だけで困ることはなさそうです。

認証キーを生成

YouTube Data APIを利用するために、APIの利用を許可し、APIキーを生成します。

  • Google Developers Consoleにアクセスし、プロジェクトを作成します。
  • プロジェクトを選択しプロジェクトの詳細画面に遷移します
  • APIと認証>APIからYouTube Data APIに遷移し、「APIを有効にする」ボタンをクリックします
  • APIと認証>認証情報から目的に沿った形の認証キーを作成します

今回、Webサーバ上のPHPでYouTube Data APIにアクセスします。

画面下の公開 API へのアクセスのボタンをクリックし、次にサーバーキーをクリック。 サーバーのIPアドレスを指定できますので、グローバルIPアドレスを調べて設定しましょう。

作成結果の画面が以下です

視聴数は「動画情報」の中に

動画の視聴数、投稿数などの数値はVideos: liststatisticsに含まれています。

用意したAPIの認証情報を使ってPHPからAPIにアクセスしてみましょう。
動画のIDとstatisticsの最小でリクエストを生成します。

<?php
$apiKey   = '[Google Developers Consoleで作成したAPIの認証キー]';
$movieId  = '[YouTubeの動画ID]';
$url      = 'https://www.googleapis.com/youtube/v3/videos?id={$movieId}&amp;key={$apiKey}&amp;fields=items(id,statistics)&amp;part=statistics'

以下のようなレスポンスが得られます。

{ "items": [ { "id": "[YouTubeの動画ID]", "statistics": { "viewCount": "11821227", "likeCount": "61351", "dislikeCount": "1490", "favoriteCount": "0", "commentCount": "16339" } } ] }

簡単ですね!
Googleからクライアント用のプログラムがGitHubで提供されていますが、今回はGETするだけの簡単なプログラムなので、クライアントライブラリは利用しませんでした。

$movieIdは動画IDをカンマで結合し、複数の動画情報をまとめてリクエストすることが可能です。
[動画ID1],[動画ID2],[動画ID3]といった具合です。


公開されているAPIは多機能ですので、いろいろな機能を利用して遊ぶことができそうです。 また、YouTubeをキャンペーンに絡める、というお話が今後も増えてくると思いました。