youtubeダウンロード(仮)で、初めてyoutube APIを利用した。
幾つか苦労した部分があったのでメモ。
【jsonデーター取得】
jsonでデータを取得すると、パラメーター名になぜか「$」が入る。
例:「xmlns$openSearch」
同じデーターをrssで取得すると、同部分はコロン「xmlns:openSearch」になっている。
jsonだと$になる理由は分からない。
このまま、$data->xmlns$openSearchのように、データーを引っ張ろうとしても、当然エラーが出てしまう。
そこで、データー取得時に、$を消去することにした。
str_replaceを使って、APIから取り込んだデーターをそのまま変換。
$youtubeapi_data = json_decode(str_replace(‘$’, ”, file_get_contents(‘http://gdata.youtube.com/feeds/api/videos?format=……’)))
【xmlデーター取得】
xmlデーターをsimplexml_load_fileなどでパースしようとしても、一部取り込めない箇所ができてしまった。どうやらmedia:categoryなど、「:(コロン)」がついたパラメーターはsimplexmlで取得できないらしい。
そこで、一度ファイルを取り込んで、str_replaceで「:(コロン)」を「_(アンダーバー)」などに変換しておけばよい。
ただし、「:(コロン)」はURLアドレス「http://?」にも使われているため、必要な部分だけ変換するようにする。
たとえば、「<media:category>?」など、media:のついたデーターを取得したい場合は、
$query = ‘http://gdata.youtube.com/feeds/api/videos/’ . $videoId;
$string = str_replace(‘media:’,’media_’,file_get_contents($query));
のようにすれば良い。
コメント