はてブ+YouTube

マッシュアップネタ。 はてなブックマークYouTubeドメインのものは注目の動画として閲覧できるわけですが、はてブYouTubeブログパーツとして置いてみることにしました(本ブログ右ナビゲーションの「注目の動画」)。

で、コードはこんな感じ。

[php num=1] <?php // require require_once ‘XML/Unserializer.php’;// header header(‘Content-Type: application/x-javascript’);

// use cache $cache=‘hatenayoutube.cache’; if(file_exists($cache)){ if*1<3600){ echo file_get_contents($cache); exit(); } }

// hatena $url=‘http://b.hatena.ne.jp/entrylist?mode=rss&url=http%3A%2F%2Fwww.youtube.com%2F&sort=hot&threshold=5′; $xml=file_get_contents($url);

$unserializer=& new XML_Unserializer(); $unserializer->setOption(‘parseAttributes’,true); $unserializer->unserialize($xml); $data=$unserializer->getUnserializedData();

// video_id $link=$data[‘item’][0][‘link’]; $pattern=‘/^http:\/\/www.youtube.com\/watch\?v=(.+)$/’; preg_match($pattern,$link,$matches); $vid=$matches[1];

// youtube $devid=‘[Developer ID]’; $url=‘http://www.youtube.com/api2_rest?method=youtube.videos.get_details&dev_id=’.$devid.‘&video_id=’.$vid;

$xml=file_get_contents($url); $unserializer->unserialize($xml); $data=$unserializer->getUnserializedData();

// thumbnail_url $details=$data[‘video_details’]; $title=$details[‘title’]; $thumbnailUrl=$details[‘thumbnail_url’];

// output ob_start(); ?> document.write(’” alt=”YouTube - <?= addslashes($title) ?>“>” border=”0″>’);

<?php $out=ob_get_contents(); ob_end_clean();

$fh=fopen($cache,‘wb’); fwrite($fh,$out); fclose($fh);

echo $out; ?>[/php] PHP4.3系での動作確認済。 ただPEARXML_Serializerを使っているので、事前にインストールしておく必要あり。

pear install channel://pear.php.net/XML_Serializer-0.18.0

(ってさ、このモジュールずーっとbeta版だね)

それから、XML_Serializerの使い方はここを参考にしました。 PEAR::XML_SerializerでAmazonからのXMLをパース

あと、[Developer ID]はyoutubeの開発者IDのことです。 YouTubeにアカウント作って、開発者用プロフィールを登録すれば取得できます。 (サムネイルの取得ぐらいにしか使ってないけど)

それから、RSS等コンテンツ取得とか時間がかかるのでキャッシュを利用してみました。

思ったのですが、SBM等URLをRSSで出力させるようなサービスって、ドメインによる絞込みは必要ですよね、やはり。

*1:time()-filemtime($cache