前回つくったものをクラス化して、rhacoの素晴らしい機能である「doctest」を使ってみます。
rhacoの機能であるdoctestはこちらが詳しいです。
コメントにテストが書ける!というやつです。
今回はrhaco本体(開発版)のほかにrhacoの外部ライブラリであるYouTubeAPI.phpを使用しています。
ダウンロードしてrhacoのフォルダ内に放りこんでおいてください。
※YouTubeAPI.phpはエラーがあります!その部分を直して使ってください!
該当箇所は13行目の
var $url = "http://www.youtube.com/api2_rest?";
の?が余計ですので、これは削除しておいてください。
- YouTubeAPIex.php
<?php
Rhaco::import("YouTubeAPI");
class YouTubeAPIex extends YouTubeAPI {
function getFlvURL($v=null){
/***
* $h = new YouTubeAPIex('**********');
* $r = $h->getFlvURL();
* assert(!$r,'引数空っぽはだめ!');
* $r = $h->getFlvURL('hoge');
* assert(!$r,'id違う');
* $r = $h->getFlvURL('3vdqWQScc7Y');
* assert(isset($r),'id入りました');
*/
$base_url = 'http://www.youtube.com/watch?v=';
if(!isset($v)){
return false;
}
$browser = new Browser();
$page = StringUtil::encoding($browser->get($base_url.$v));
$tag = new SimpleTag();
$tag->set($page);
$scripts= $tag->getIn('script');
if(empty($scripts)){
return false;
}
$lines = explode("\n",$scripts[2]->getValue());
foreach($lines as $key => $value){
if( preg_match("/additionalStatsHonorsUrl/",$value)){
break;
}
if( preg_match("/swfArgs/",$value)){
$buf = explode('=',$value);
$search = array('@ @','@{@','@"@','@:@','@,@','@;@','@}@');
$match = array('','','','=','&','','');
$data = preg_replace($search,$match,$buf[1]);
return 'http://www.youtube.com/get_video?'.$data;
}
}
}
function tagSearchWithFlvURL($tag,$page=1,$perpage=10,$iscache=true){
/***
* $h = new YouTubeAPIex('**********');
* $r = $h->tagSearchWithFlvURL('r1');
* assert(isset($r),'タグサーチ');
*/
$list = parent::tagSearch($tag,$page,$perpage,$iscache);
foreach($list as $value){
$buf = $this->getFlvURL($value['id']);
if($buf){
$list2[] = array_merge($value,array("flvURL" => $buf));
}
}
if(empty($list2)){
return false;
}else{
return $list2;
}
}
}
?>
*****部分はdev_keyですので、youtubeで取得したdev_keyに置き換えてください。
たぶん、テストが通りません。
tagSearchWithFlvURLは1つ1つにスクレイピングをかけているので遅いです・・・うーん、どうやればいいかなあ??
YouTubeAPIex.php使ったサンプルサイト
いまさら、youtubeのflvをダウンロードできるURLが分かったところで…という感じですが。
- Newer: iPod touchが壊れた・・・
- Older: SafariでAutopagerizeする!
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.planet-ape.net/blog/archives/576/trackback
- Listed below are links to weblogs that reference
- 過去に作ったものをrhacoに置き換えてみる(psptube編)その2 from planet-ape|blog
