Home > PHP | rhaco > 過去に作ったものをrhacoに置き換えてみる(psptube編)その2

過去に作ったものをrhacoに置き換えてみる(psptube編)その2

前回つくったものをクラス化して、rhacoの素晴らしい機能である「doctest」を使ってみます。
rhacoの機能であるdoctestはこちらが詳しいです。

コメントにテストが書ける!というやつです。

今回はrhaco本体(開発版)のほかにrhacoの外部ライブラリであるYouTubeAPI.phpを使用しています。

ダウンロードしてrhacoのフォルダ内に放りこんでおいてください。

※YouTubeAPI.phpはエラーがあります!その部分を直して使ってください!
該当箇所は13行目の

	var $url = "http://www.youtube.com/api2_rest?";

?が余計ですので、これは削除しておいてください。

<?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が分かったところで…という感じですが。

Comments:0

Comment Form
Remember personal info

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

Home > PHP | rhaco > 過去に作ったものをrhacoに置き換えてみる(psptube編)その2

Search
Feeds
Meta

Return to page top