YoutubeAPIで再生回数順の動画リストを取得する方法
はじめに
YoutubeAPIを使って何かできないかなと思って、サンプルを作ってみたのでそのときのメモ。
ちなみに本当にやりたかったことは日別、月別などの再生回数順のリストを取得して簡単なランキングサイトでも作りたかったのですが、今のところやり方がわからずです。
また、サーバー側のPHPでデータを取得する形です
とりあえずは以下を実装
・キーワードで検索して全期間での再生回数順のリストを取得すること
・動画が属するカテゴリーで絞り込みを行いたい
・日本の動画を取得したい
APIキーを取得する
Google Developer ConsoleよりAPIキーを取得する
グーグルアカウントは必要なので予め取得しておきます
1. 上記のURLより以下のページへアクセスして、「プロジェクトを作成」ボタン
2. 適当なプロジェクト名を入力して、「作成」ボタン
※今回は「myApp」としました
3. プロジェクト名をクリック
6. 「APIを有効にする」をクリック
7. 「認証情報に進む」をクリックして以下を入力して「必要な認証情報」をクリック
・使用するAPI = Youtube Data API v3
・APIを呼び出す場所 = ウェブサーバー
・アクセスするデータの種類 = 一般公開データ
8. APIキーを作成する
名前= あとでわかりやすい名前を適当に入力
「APIキーを作成」ボタンをクリック
APIキーが画面に表示されるのでメモしておく
実装
今回は提供されているPHPのSDKを使いませんでした。
SDKのリファレンスに全てのAPIの使い方が載ってるわけではなさそうなので、APIの仕様書を随時確認しながらやるのが早そうと思ったためです
また、今回使うのは、「検索(Search)API」になります
$DEVELOPER_KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; // 上で取得したAPIキー $params = array( "q" => urlencode("キーワード"), // 検索キーワード "type" => "video", // channel, playlist, videoが指定可 "part" => "id,snippet", "order" => "viewCount", // viewCount(再生回数順),date(作成日順),rating(評価順), relevance(検索キーワードの関連度順)などが指定可 "maxResults" => 30, // 取得最大件数(50がマックス) "safeSearch" => "none", 'regionCode' => 'JP', "videoCategoryId" => "17", // カテゴリID(下の方に取得方法書きました) "key" => $DEVELOPER_KEY, ); $query = ""; foreach ($params as $k => $v) { $query .= $k . "=" . $v . "&"; } $query = substr($query, 0, -1); $url = "https://www.googleapis.com/youtube/v3/search?".$query; $result = file_get_contents($url); $result = json_decode($result); // 使うデータだけ配列に入れ直す $searchList = array(); foreach ($result->items as $k => $v) { $searchList[] = array( "videoId" => $v->id->videoId, "title" => $v->snippet->title, "description" => $v->snippet->description, "thumbnails_default" => $v->snippet->thumbnails->default->url, ); }
カテゴリ一覧取得
https://www.googleapis.com/youtube/v3/videoCategories?part=id,snippet®ionCode=JP&key=xxxxx
こちらは上記のAPIをブラウザ等で直接叩いても確認できました
おわりに
指定期間内の再生回数順のリストの取得方法。ご存知の方、いらっしゃいましたら教えてください
以上です