mixi+youtube

ここに引き続いてまたYouTubeネタ。 今度はmixiで。

[php num=1] <?php mb_internal_encoding(‘EUC-JP’);// require require_once(‘Cache/Lite.php’); require_once(‘XML/Unserializer.php’); require_once(‘PHP_Mixi.class.php’);

// header header(‘Content-Type: application/x-javascript’);

// cache $tmpdir=‘./tmp/’; $cache = new Cache_Lite(array(‘cacheDir’=>‘./tmp/’,‘lifeTime’=>1800));

$out=$cache->get(‘out’); if($out!=FALSE){ echo $out; exit(); }

// mixi $email=‘[email]’; $password=‘[password]’; $mixi=new PHP_Mixi($email,$password); $mixi->login(); if($mixi->is_logined()==false){ exit(); }

// bbsurl $bbsurl=‘http://mixi.jp/list_bbs.pl?id=000000′; $string=$mixi->fetch($bbsurl);

$pattern=‘/view_bbs.pl\?id=[0-9]+&comm_id=[0-9]+/’; preg_match_all($pattern,$string,$matches); $urls=array_unique($matches[0]);

$youtubevids=array();

$pattern=‘/http:\/\/www.youtube.com\/watch\?v=([A-Za-z0-9_-]+)/’; foreach($urls as $url){ $string=$mixi->fetch(‘http://mixi.jp/’.$url); preg_match_all($pattern,$string,$matches); if(sizeof($matches)==2){ $youtubevids=array_merge($youtubevids,array_reverse($matches[1])); } } $youtubevids=array_unique($youtubevids);

if(empty($youtubevids)){ exit(); }

$vid=$youtubevids[0];

// 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=& new XML_Unserializer(); $unserializer->setOption(‘parseAttributes’,true); $unserializer->unserialize($xml); $data=$unserializer->getUnserializedData();

if($data[’status’]!=‘ok’){ exit(); }

// thumbnail_url $details=$data[‘video_details’]; $link=‘http://www.youtube.com/watch?v=’.$vid; $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();

echo $out;

$cache->save($out,‘out’);

exit(); ?>[/php] 不足してそうなPEARライブラリは随時インストール。 ただし、PEAR以外にPHP_Mixiも必要。 で、[email]、[password]はmixiに登録してあるメールアドレス、パスワードを設定する。 'http://mixi.jp/list_bbs.pl?id=000000'YouTubeのURLがありそうなコミュニティの新着トピック一覧URL、[Developer ID]はYouTube設定済みの開発者ID。

一応、トップ右下に実行例を出しているけど、あまり面白そうな動画も上がってこないのでそのうち消すかも。

それからここを参考にCache_Liteも利用してみました。

まぁ一つのvideo_id取得するのにスレッドから回収しまくっている点やキャッシュの使い方など「それってどう?」みたいな部分もあるけど、眠いのでこんな感じで。