とりあえずGoogleの公開してるAPI使って動画の取得に成功しました。
私にとってこれ結構複雑なので、完璧にできる!って説明ができませんが、
この流れだけでもシェアできたらなぁと思います。一応取得までのコードは置いてあります。
なんか変なトコあるかもしれませんが、よろしくお願いします。
INDEX
ライブラリのダウンロード
まずはライブラリを落とします。
この中から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);
私はこんな感じで取得してます。