API 備忘録 | メシのタネ

sensensenshaen
このエントリーをはてなブックマークに追加

【API】動画をAPIで取得する時の考え方 Data API

 2014/06/20

とりあえずGoogleの公開してるAPI使って動画の取得に成功しました。
私にとってこれ結構複雑なので、完璧にできる!って説明ができませんが、
この流れだけでもシェアできたらなぁと思います。一応取得までのコードは置いてあります。
なんか変なトコあるかもしれませんが、よろしくお願いします。

ライブラリのダウンロード

まずはライブラリを落とします。
この中からPHPを取ってきます。
今度はこれを解凍して、srcフォルダの中のGoogleを取り出します。

それからこいつらを自分が使いたいサービスが入ってるフォルダにぶちこみます。

インクルードパスの設定

昨日の記事のように私は設定してます。
これを設定したら、ファイルを読み込ませます。
Google/Client
Google/Service/YouTube
こいつらを読み込ませます。

Google_Clientクラスを使う

コレを使う為には、APIキーが必要になります。
取得したキーをsetDeveloperKeyメソッドにぶち込みます。

Google_Service_YouTubeを使う

多分さっきのメソッドを使うと、API使っていいよって許可が下りるんだと思います、
実際にAPIを使うクラスGoogle_Service_YouTubeクラスに対して、
さっきのオブジェクトをぶち込みます。

ファイルのインクルードが正常なら
これで動くはずです。

$DEVELOPER_KEY = 'APIキーに変更してね!';
$client = new Google_Client();
$client->setDeveloperKey($DEVELOPER_KEY);
$obj = new Google_Service_YouTube($client);

検索パラメータを元にデータを取得

この処理は使う事が多いので関数にしとくといいかも知れません。
クエリパラメータはコチラを参考にしてもらうといいです。
アカウントが無いと参照することが出来ないと思います。

で、とりあえず、orderの値を変えるだけでも面白いことができます。


function get_obj($obj,$query)
{
    $searchResponse = $obj->search->listSearch('id,snippet', array(
      'q' => $query,
      'maxResults' => 1, //データ取ってくる件数
     // 'regionCode' => 'JP' //日本語だけ
     // 'order' => 'viewCount' // 再生回数
     // 'order' => 'rating' // 評価
     // 'order' => 'relevance' // 関連動画
   // 'order' => 'title' // titleのアルファベット順
     // 'order' => 'date' // 新しいもん順
    ));
    return $searchResponse;
}

これで欲しいデータが返ってくるので
後は煮るなり焼くなりすると良いと思います。

画像とかが欲しいなら
$obj->items[0][“snippet”][“thumbnails”][“modelData”]
IDが欲しいなら
$obj->items[0][“id”][“videoId”]

こんな感じで書いていきます。

ほかにもデータ色々入ってるので、
オブジェクトdumpして調べてみて下さい。

コード

今回は色んな事情で正しく動くとは限りませんが、一応こんな流れでやるよ的なコードをのっけておきます。
誰かの参考になれば幸せです。
それと本家コードのリンクのっけときます。

set_include_path(get_include_path().PATH_SEPARATOR.dirname(__FILE__).'/');
$path = array("Google/Client.php","Google/Service/YouTube.php");

foreach($path as $val) {
     require_once($val);
}


$DEVELOPER_KEY = '------';
$client = new Google_Client();
$client->setDeveloperKey($DEVELOPER_KEY);
$obj = new Google_Service_YouTube($client);

$query = "検索したいワード";

function getthubnail($obj,$query)
{
    $searchResponse = $obj->search->listSearch('id,snippet', array(
      'q' => $excerpt,
      'maxResults' => 1,
      'type' => 'video',
      'order' => 'viewCount' 
    ));
    return $searchResponse;
}


$moviedata = getthubnail($obj,$query);


私はこんな感じで取得してます。


このエントリーをはてなブックマークに追加

コメント

"【API】動画をAPIで取得する時の考え方 Data API"
でメシのタネのおすすめを検索したよ!

プログラミング備忘録 | メシのタネ