YouTube Data API 基本仕様
ベースURLは
http://gdata.youtube.com/feeds/api/videos
リクエストパラメータは
vq
検索キーワード
ただし、URLエンコードが必要
maxresults
取得する動画の数を指定
初期値なら25
最大で50
orderby
検索結果の並び替えの指定
初期値は関連順で表示
具体的には
relevance
関連順
published
投稿が新しい順
viewCount
視聴回数の多い順
rating
評価の高い順
次にレスポンスフィールド
title
動画タイトル
content
動画内容の説明
media:player
属性 url で動画のURL
media:thumbnail
属性 url で動画のサムネイルのURL
詳しい解説は
リファレンス ガイド: Data API プロトコル
https://developers.google.com/youtube/reference?hl=ja#youtube_data_api_tag_media:title
に掲載されています
これらを参考にリクエストURLの組み立てをします
ベースURLは
http://gdata.youtube.com/feeds/api/videos
でも長いので、変数に格納
$baseurl =”http://gdata.youtube.com/feeds/api/videos”;
キーワードは
vq=キーワード
取得する動画の数を20にするなら
max-results=20
視聴回数の多い順に並び替えということで
orderby=viewCount
これらのパラメータを組み合わせてみると
$baseurl?vq=検索キーワード&max-results=20&orderby=viewCount
というようになります
ただ、このYouTube Data API
については、いままで使ってきたAPIとは異なり
media:player というタグがあるので
これは
simplexml_load_file()
でパースすることができません
ちなみに、media:player のようなものを
名前空間プレフィックスといいます
これの対処方法は
children()を使うこと
media:player なら
children(‘media’,TRUE)->player
というようにして対処します
これで、いつものように下層データを取得することができます
さすがに毎回これを書くのも面倒なので
これもベースURLみたいに変数に格納しておくと
楽になります
たとえば、動画URL取得なら
$video_url = esc_url( $video->children(‘media’,TRUE)->group->children(‘media’,TRUE)->player->attributes()->url );
途中に esc_url()
がありますが、これは
URLをサニタイズするための関数です
URLのサニタイズというのは
不正な形式を受け付けないようにすることで
サイトに害を与えるのを予防することで
htmlspecialchar()
とかとおなじようなものです
この関数のわかりやすい説明が
esc_urlとhome_url
リファレンス的なものだと
http://elearn.jp/wpman/function/esc_url.html
が参考になります