YouTube API を使ってみる。

Googleから新しいAPIが提供されるようになって、サムネイルを取得するだけならデベロッパーIDは不要になっています。詳しくはこちらを参考にしてください。

APIを使って動画のサムネイルを取得するまとめ 【PHP版】 – NOBODY:PLACE – MUTTER

はてなブックマークなんかだと、
YouTubeのブックマークの横に、サムネイルが出てますね。

こんな感じ

これをブログからやりたいなぁ、と思ったわけです。
ていうかどうやってやるんだろうか、と。

ぶっちゃけ、MovableTypeだったら、
そんな感じのプラグインを作っている人はいくらでもいそうですが、
([youtube:VXmNJhqngyM]とかでサムネイルつきリンクを貼るとか)
まぁ、APIのアレも兼ねて少し自分で見てみましょう、と。


結論から言うと、YouTubeが提供しているAPIに、
そのvideoのidを渡してやれば、解決します。
それが返してくるデータの中にサムネイルへのアドレスがあるためです。

[YouTube API]get_details – フラッツ ブログ

YouTubeのAPIを利用するためには、まず、developer IDを取得します。
developer IDは、
YouTubeのページの一番下、『Developers』から、
“create a YouTube developer profile”という指示に従って、
プロフィールを登録すると、無料で発行されます。

んでもって、上記サイトにあるとおりにurlを作成して、
http://youtube.com/api2_rest?method=youtube.videos.get_details&dev_id=[DeveloperID]&video_id=[VideoID]
そこへアクセスすれば、いいと。


後はそれぞれの言語でそれを適当にいじくってやればいいわけですが、
perlとPHPで簡単に試してみたので、その辺も掲載。



■ PHPの場合


参考サイト:
YouTube APIを用いたシンプルなPHPスクリプトのサンプル – Part1 – – PHPプロ!ニュース

殆どすべては上記サイトにあります。
その中から、サムネイルのURIを取り出す部分だけ抜き出して構成すると、
こんな感じになる。
<?php
$dev_id = "[developer id]";
$video_id = "";

$youtube_url = "http://youtube.com/api2_rest?method=youtube.videos.get_details&dev_id=" . $dev_id . "&video_id=" . $v;

$handle = fopen($youtube_url,"r");
$contents = "";
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);

$xml = new SimpleXMLElement($contents);

print $xml->video_details->thumbnail_url;
?>

後は貼り付けるなりなんなりと。



■ Perlの場合


参考サイト:
ゆーすけべー日記: Plagger::Plugin::CustomFeed::YouTube_dev APIを使ってビデオ情報を取得させる

Perlの処理に関してはあんまり慣れてない(と言うか忘れてる)ので、
上記サイトを頼ってみました。
サーバに、XML::Sinple/LWP::Simpleが入ってるかどうかをチェックした後、
(結局CPANで入れた)適当にくんでみた。

サムネイルのところだけ抜き出すと、こんな感じ。

#!/usr/bin/perl

use strict;
use warnings;

use LWP::Simple;
use XML::Simple;

my $dev_id = "[developer id]";
my $video_id = "";

my $video_details = get_details($dev_id,$video_id);

print "Content-type: text/html;CHARSET=x-sjis\n\n";
print $video_details->{thumbnail_url};

sub get_details{
my($dev_id,$video_id) = @_;
my $youtube_url = "http://www.youtube.com/api2_rest?method=youtube.videos.get_details&dev_id=$dev_id&video_id=$video_id";

my $youtube_xml = get ($youtube_url) or die("can't get xml");
my $parser = XML::Simple->new();
my $xml_ref = $parser->XMLin("$youtube_xml");

return $xml_ref->{'video_details'};
}



まぁ、PHPも、Perlもやってることはそう変わりませんな。
APIを“叩いて”、持ってくるってことで。



ここでは、サムネイルURIに限って、もの凄くシンプルに使ってみましたが、
色々やりたい方は、もちろん、もっと色々出来ます。
それぞれのVideoに付いているデータの殆どが参照できるので。

参考サイト:
[YouTube API]get_details – フラッツ ブログ


で、これを、はてなブックマーク→MovableTypeに組み込んでみました。
その話は次回。