rhaco を使ってニコニコ動画のサムネイル情報を取得するにインスパイアされて

via ニコニコ動画のサムネイル情報を取得する - WebProgを極めて居酒屋を開発する さん

ニコニコ動画のサムネイルを rhaco を使用して取得する方法が紹介されてる。

rhacoを使って取得してみる
実際に取得してみるテスト。
手抜きのためにrhacoを使ってます。
PHPerは今すぐDLしてください。w
まず、このAPIを叩くためのクラスを作ってみました。
これを、NicoVideo.phpとしておきます。

http://d.hatena.ne.jp/riaf/20080202/1201931762

これ凄く面白い!
激しくインスパイアされたので、同じようなものを Zend Frameworkパクって作ってみた。


こういうツールを Zend Framework で作るのはどうかと思ったけど、
まぁ、一応ライブラリの集まりだからという言い訳をしてw
include_path に フレームワーク本体を指定している当たりが実に富豪的
# いやまぁ、Zend* がおかれているディレクトリの絶対パスを指定するのがめんどかったので(汗)

ブートストラップ

<?php
$baseDir = dirname(dirname(__FILE__));
$includePath = ini_get('include_path');
$libPath = $baseDir . '/library/';
ini_set('include_path', $includePath . ':' . $libPath);

requrire_once 'NicoThumb.php';
$nico = new NicoThumb();
$xml  = $nico->get('sm2191960');
if ($xml !== null)
    $ret = $nico->parseToArray($xml);
}
var_dump($ret);

取得用のクラス

<?php
class NicoThumb
{
    private $_uri = 'http://www.nicovideo.jp/api/';
    private $_thumbPath = 'getthumbinfo/';
    private $_videoId;

    public function __construct()
    {
    }
    public function get($videoId = '')
    {
        if ($videoId === '') {
            return null
        }
        $this->_videoId = $videoId;
       
        require_once 'Zend/Http/Client.php';
        
        $client = new Zend_Http_Client();        
        $response = $client->setUri($this->_uri . $this->_thumbPath . $this->_videoId)
            ->setConfig(array('keepalive' => true, 'strictredirects' => true))
            ->setMethod(Zend_Http_Client::GET)
            ->request('GET');
        if ($response instanceof Zend_Http_Response) {
            return $response->getBody();
        }
        return null;
    }
    public function parseToArray($value)
    {
        $xml = simplexml_load_string($value);
        if ($xml->thumb instanceof SimpleXMLElement) {
            return (array)$xml->thumb;
        }
        return null;
    }
}

結果

$ php nico_thumb.php
array(12) {
  ["video_id"]=>
  string(9) "sm2191960"
  ["title"]=>
  string(54) "英語の時間に流れた曲が面白かったので"
  ["description"]=>
  string(204) "『バイト先でジャンボと呼ばれて困っています』そんな事よりこの曲聞 いてくれよ。卑猥だと思わないか。あの外人教師・・・やってくれるぜ・・・。"
  ["thumbnail_url"]=>
  string(43) "http://tn-skr.smilevideo.jp/smile?i=2191960"
  ["first_retrieve"]=>
  string(25) "2008-02-01T02:44:40+09:00"
  ["length"]=>
  string(4) "2:20"
  ["view_counter"]=>
  string(3) "265"
  ["comment_num"]=>
  string(2) "32"
  ["mylist_counter"]=>
  string(1) "9"
  ["last_res_body"]=>
  string(115) "オナニーズ★プレイ オナニーズ☆プレイ オナニーズ★プレイ これは伸び るwwww "
  ["watch_url"]=>
  string(39) "http://www.nicovideo.jp/watch/sm2191960"
  ["thumb_type"]=>
  string(5) "video"
}

Zend_Feed を使って xml を array に変換する方法がイマイチ分からなかった。
フィードじゃないから、独自で書かないと行けないのかも。
SimpleXml を使って 取得したオブジェクトを array に変換したw
REST 形式で配信して貰えたら、Zend_Rest でもっと簡単に取れるんだけど・・。


しかし・・rhaco で書かれたソースの方がシンプルだなぁ・・ orz


※ 追記
ブートストラップがちょっとおかしかったので修正。
あと一応言い訳しておくと、パッと作ったものだからエラー処理が甘いです。