PHP YouTubeAPIの解析 ライブラリーなしで
Posted in 研究開発 on 4 月 25th, 2009 by ander – 2 Comments仕事でYouTubeAPIを扱わなければならなくなりました。
PHPの知識もほとんどなかったのですが、がんばって勉強。
XML解析結果:http://ander.jp/source/youtube_xml_unserial/index.php (対象映像は、最近好きなBonobos。フィッシュマンズに似てます。)
クライアントのサーバーが、ファーストサーバーでPHP5のくせに、SimpleXMLも使えず、Standard PHP Library (SPL) 関数が使えないのでPEARやZendFrameworkのライブラリも動かないということで、Keith Devensさん?のXML Libraryを無理やり使って、自分で作りました。
解析結果の下の方の文字がずらずら出てくるの(ブラウザのソースを見れば視覚的に階層がわかる)がYouTubeから取得したXMLから多次元連想配列の変換結果です。一旦、XML Libraryの関数XML_unserialize()を使って連想配列に変換したら、XMLすべての情報に簡単にアクセスできます。ZendGdataライブラリを使えばもっと簡単なんですが。
ソース:http://ander.jp/source/youtube_xml_unserial/youtube_xml_unserial.zip
ソース説明(サムネイル取得の場合):
include(’xml_library.php’); //xml_libraryをinclude
//サムネイルを取得 ['0 attr']の部分の数字を0~3まで変えることで4種の画像を取得できる
function getThumb0($movieId) {
$xml = file_get_contents(”http://gdata.youtube.com/feeds/api/videos/”. $movieId);
$data = XML_unserialize($xml); //xmlから多次元配列を取り出す
$thumb = $data['entry']['media:group']['media:thumbnail']['0 attr']['url'];
return $thumb;
}
取得先のindex.phpに、
<?php require_once(’youtube_library.php’); ?> <!– youtube_library.phpの取り込み –>
<?php print getUrl(’ビデオID’); ?> <!– サムネイルの取得 –>
と書くだけでサムネイルのURLが取得できる。ビデオIDの部分を目的のビデオのものに入れ替え。
今回のことでWEB上のAPIとアクセスする方法がわかりました。マッシュアップサイトが作れますね。

