YouTube Data APIを使ってみる

ちょっと興味を持ったので、YouTube Data APIを使ってみました。公式のガイドラインをベースに、アカウントの登録などの準備作業から、実際にAPIを呼び出して情報を受け取るところまで実施しています。

ドキュメント

基本的には以下のガイドラインをベースに作業しています。

https://developers.google.com/youtube/v3/getting-started

準備

Google アカウント作成

まずはGoogle アカウントが必要なので作成します。

これは元々Google アカウントを持っていれば不要です。私は通常使っているアカウントとは分けたいと思って改めて作成したのですが、普段使っているサイトへのアクセスが微妙な感じになったので、本当に必要でなければ追加するのは避けた方が良さそうです。

アカウント作成は別の記事にしたので、こちらも参照してもらえればと思います。

プロジェクトと認証情報の作成

利用規約に同意

公式サイトのガイドラインにしたがって進めると次は以下のURLへのアクセスになります。これにアクセスすると利用規約への同意が求められるので、それに同意します。

Open the Credentials page in the API Console.

まず、対象のURLにアクセスすると以下のような画面が表示されます。

利用規約を確認し、チェックを入れて「同意して続行」を選択します。

すると以下のような画面が表示されました。

プロジェクトの作成

先ほどの画面で「プロジェクトを作成」というリンクがあるので、これを選択します。

すると以下のような画面が表示されます。

とりあえず、プロジェクト名や場所はそのままにしておき「作成」を選択します。これは必要あれば変更すれば良いと思います。

「作成」を選択すると以下のように作成完了のポップアップが表示されます。

ポップアップを閉じると以下のようになります。

認証情報の作成

ポップアップを閉じたら「認証情報を作成」を選択します。すると以下のような画面が表示されます。

ここでは適当に「APIキー」を選択することにします。

「APIキー」を選択すると上記のような画面が表示されます。「キーを制限」を選択してみると、以下のような画面が表示されます。

本番で運用するには制限をかけた方が良いと思いますが、ここでは一旦スルーします。

API登録

プロジェクトの作成と認証情報(APIキー)の作成が終わったら、次にプロジェクトにAPIを登録します。

ここはガイドに従ってもよく分からなかったので、適当に試してうまくいった結果を記載しています。一時的なものかもしれませんが、私が実施した際は、ガイドのリンクがリダイレクトされたり、404になったりしていました。

ダッシュボード選択

まずは以下のURLにアクセスします。APIのダッシュボードです。

https://console.developers.google.com/apis/dashboard

すると以下のような画面が表示されます。

APIライブラリの表示

ダッシュボードで「APIとサービスを有効化」を選択します。すると以下のような画面が表示されます。

すると「APIライブラリへようこそ」と表示された画面が表示されます。

YouTube Data APIの選択

APIライブラリの画面で下の方にスクロールするとYouTubeのカテゴリがあり、その中に「YouTube Data API」があります。記載の時点では「YouTube Data API」はv3です。

「YouTube Data API v3」を選択すると以下のような画面が表示されます。

有効化

「YouTube Data API」の画面に「有効にする」というボタンがあるので、これを選択します。有効化を選択し、しばらく待つと以下のような画面に遷移します。

以上で準備は終わりました。

実行

APIの登録もできたので、簡単にお試しで実行してみます。

対象API

ここでは比較的簡単そうな以下の検索(Search)のAPIを使ってみます。

https://developers.google.com/youtube/v3/docs/search/list?hl=ja

curl

とりあえずcurlで試してみます。個人的な好みでcurlにしましたが、マニュアル的にはJavaやPHPなどのライブラリを使ったサンプルが載っているので、そちらを試した方が楽だと思います。

パラメータなし

特にパラメータなしで実行してみます。

$ curl https://www.googleapis.com/youtube/v3/search
{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "required",
    "message": "Required parameter: part",
    "locationType": "parameter",
    "location": "part"
   }
  ],
  "code": 400,
  "message": "Required parameter: part"
 }
}
$

予想はしていましたがエラーになりました。レスポンスの内容によると理由はパラメータ不正のようです。

partを指定

先ほどのエラーメッセージ的にpartのパラメータが必要そうだったので、partを指定してみます。

$ curl https://www.googleapis.com/youtube/v3/search?part=id
{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "dailyLimitExceededUnreg",
    "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
    "extendedHelp": "https://code.google.com/apis/console"
   }
  ],
  "code": 403,
  "message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
 }
}
$

上記のmessageの部分をGoogle翻訳にかけてみたところ以下のようになりました。

認証されていない使用の1日の制限を超えました。 継続して使用するにはサインアップが必要です。

1日の制限を超えたと言うのはちょっと分かりませんが、認証が必要なようです。

認証情報(APIキー)を指定

今度は事前準備で作成したAPIキーを指定して実行してみました。

$ API_KEY=xxxxxxx
$ curl https://www.googleapis.com/youtube/v3/search?key=$API_KEY
{
  "kind": "youtube#searchListResponse",
  "etag": "R7MJSJjhkYAr_PzOD8x3P2F2V3Y",
  "nextPageToken": "CAUQAA",
  "regionCode": "JP",
  "pageInfo": {
    "totalResults": 1000000,
    "resultsPerPage": 5
  },
  "items": [
    {
      "kind": "youtube#searchResult",
      "etag": "r7bJkjWTb0f7LY3ql8Y5WkPRhqc",
      "id": {
        "kind": "youtube#video",
        "videoId": "c7uBEkYbbrw"
      }
    },
    {
      "kind": "youtube#searchResult",
      "etag": "EugxOt73RtPAxpOst7cADb-DLu0",
      "id": {
        "kind": "youtube#video",
        "videoId": "Ppu6-cZYJtI"
      }
    },
    {
      "kind": "youtube#searchResult",
      "etag": "ojwEN7BWmABS7Y6ECUnZFGG3iII",
      "id": {
        "kind": "youtube#video",
        "videoId": "qeEb5LmI9sI"
      }
    },
    {
      "kind": "youtube#searchResult",
      "etag": "4Sv9ubSIrMmCSuib__ogGfH6KkI",
      "id": {
        "kind": "youtube#video",
        "videoId": "8p4C4xRgDKk"
      }
    },
    {
      "kind": "youtube#searchResult",
      "etag": "FeJJ03IkZKca0k-4Gc9OjK1Bq0Q",
      "id": {
        "kind": "youtube#video",
        "videoId": "trt9QY6TFwA"
      }
    }
  ]
}
$

今度はうまくいきました。

適当にパラメータを追加

結果が変わることを確認するために適当にパラメータを追加してみます。

$ curl "https://www.googleapis.com/youtube/v3/search?key=$API_KEY&q=hogehoge&maxResults=1"
{
  "kind": "youtube#searchListResponse",
  "etag": "XTn3-xlD-oCOojz0zm_41eHJjQ4",
  "nextPageToken": "CAEQAA",
  "regionCode": "JP",
  "pageInfo": {
    "totalResults": 10153,
    "resultsPerPage": 1
  },
  "items": [
    {
      "kind": "youtube#searchResult",
      "etag": "bQBjvcz2-l6AMdDn0uPwSSI1gR8",
      "id": {
        "kind": "youtube#channel",
        "channelId": "UCI-t0NdQX7NZfDT_mqJsNXQ"
      }
    }
  ]
}
$

結果が変わることも確認できました。

追記

その後、色々とYouTube Data APIを使って分かったことなどについて、以下にまとめてみました。

コメント

タイトルとURLをコピーしました