<< Firefoxのinput要素が動作しない件 | main | せめて統一してよ(@niftyウェブサービス) >>

2007.08.07 Tuesday

動画取得API(YouTube API)

動画取得APIといえば、YouTubeAPIなのですが、
そういえば、このブログでは取り上げていなかったので、ご紹介。

API ドキュメント
がトップページで、今回紹介するタグ検索APIが
youtube.videos.list_by_tag (API 関数リファレンス)

とってもシンプルなので、悩みどころはないでしょう。

使用に当たっては、開発者IDが必要なので、YouTubeのアカウントを持っていない場合は、アカウントをまず取得してから、ということになります。

--

それでは、サンプル

function getVideoYoutube($keyword,$per_page=10){

  $ret_array = array();

  $req = 'http://www.youtube.com/api2_rest?method=youtube.videos.list_by_tag&dev_id='.「あなたのYouTube開発者ID」.'&per_page='.$per_page.'&tag='.urlencode($keyword);
  $xml = simplexml_load_file($req);

  foreach($xml->video_list->video as $video) {
    $video_array = array();
    if( !empty($video->length_seconds) && (0<$video->length_seconds) ) {
      $video_length_min = $video->length_seconds / 60;
      $video_length_sec = $video->length_seconds % 60;
    }
    $video_array['title'] = $video->title;
    $video_array['url'] = $video->url;
    $video_array['thumbnail'] = $video->thumbnail_url;
    $video_array['author'] = $video->author;
    $video_array['description'] = $video->description;
    $video_array['time_min'] = (int)$video_length_min;
    $video_array['time_sec'] = (int)$video_length_sec;
    $ret_array[] = $video_array;
  }

  return($ret_array);
}
使い方は、
foreach(getVideoYoutube('遊園地') as $video){
  print '<a href="' . $video['url'] . '">' . $video['title'] . '</a><br>';
}
こんな感じでコールすると、遊園地にマッチする動画へのリンクが作成できます。 もちろん、サムネイルを表示してもいいし、埋め込み動画にしてもいいし、使い方は自分次第です。

関数の戻り値を配列にしているのには理由があって、他にも動画取得APIがあるので、戻り値を同じようにしておけば、使い回しが効くからです。

他の動画取得APIだと、
キーワード検索 - AmebaVision APIドキュメント
なんかがあります。
当然、YouTubeとはXML返却値が異なるわけですが、配列で返すようにしておくことで、YouTubeだろうが、Amebaだろうが、同じように扱えるわけです。

経験の少ないプログラマだと、このあたりまで頭が回らなくって、似たようなルーチンを作っちゃったりして、そりゃあ、残業かさむわな。

--

テクノラティお気に入りに追加する

Comments

コメント入力は停止しています

海外からと思われるコメントスパムが横行しているため、全記事のコメント入力を停止しています。メッセージのある方は、ホームページの一番下に連絡欄がありますので、そちらからお願いします。

Trackback URL

トラックバックする場合は、
トラックバック元の記事にこのエントリへのリンクを記載してください
このエントリのタイトル「動画取得API(YouTube API)」
このエントリのリンク「http://kommy.s254.xrea.com/blog/log/eid55.html」