WebProgを極めて居酒屋を開発する Twitter

このブログは 2008 年から更新されていません。すべての記事が古いので、あまり参考にしないようにしたほうが良いです。時が流れるのは早いのです。

 | 

2008/02/02

ニコニコ動画のサムネイル情報を取得する

書いて良いのかな!?かな??


Twitterで、こんな発言があったので

http://www.nicovideo.jp/api/getthumbinfo/sm9

Akihiko Koizukaさんのツイート: "http://www.nicovideo.jp/api/getthumbinfo/sm9"

ちょっとだけ遊んでみました。


XML形式で取得できるみたいです。

URLはこんなカンジ。

http://www.nicovideo.jp/api/getthumbinfo/sm2191960

で、返ってくるデータが

<?xml version="1.0" encoding="UTF-8"?>
<nicovideo_thumb_response status="ok">
<thumb>
<video_id>sm2191960</video_id>
<title>英語の時間に流れた曲が面白かったので</title>
<description>『バイト先でジャンボと呼ばれて困っています』そんな事よりこの曲聞いてくれよ。卑猥だと思わないか。あの外人教師・・・やってくれるぜ・・・。</description>
<thumbnail_url>http://tn-skr.smilevideo.jp/smile?i=2191960</thumbnail_url>
<first_retrieve>2008-02-01T02:44:40+09:00</first_retrieve>
<length>2:20</length>
<view_counter>244</view_counter>
<comment_num>29</comment_num>
<mylist_counter>9</mylist_counter>
<last_res_body>これは伸びるwwww wwwwwwwwww オwwwww... </last_res_body>
<watch_url>http://www.nicovideo.jp/watch/sm2191960</watch_url>
<thumb_type>video</thumb_type>
</thumb>
</nicovideo_thumb_response>

こんなん。


rhacoを使って取得してみる

実際に取得してみるテスト。

手抜きのためにrhacoを使ってます。

PHPerは今すぐDLしてください。w

まず、このAPIを叩くためのクラスを作ってみました。

これを、NicoVideo.phpとしておきます。

<?php
Rhaco::import('network.http.Http');

class NicoVideo
{
    var $url = 'http://www.nicovideo.jp/api';
    var $thumb_path = '/getthumbinfo';
    var $headers = array('accept' => 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5');

    function getThumbInfo($video_id){
        $xml = Http::get($this->url . $this->thumb_path . '/' . $video_id, $this->headers);
        if(SimpleTag::setof($tag, $xml, 'thumb')){
            return $tag->toHash();
        }
        return false;
    }
}

手抜きでサーセン><w


次に、rhacoとこのクラスをincludeして、実際に取得するコードを示します

<?php
require_once 'rhaco/Rhaco.php';
require_once 'NicoVideo.php';

$nico = new NicoVideo();
$ret = $nico->getThumbInfo('sm2191960');
var_dump($ret);

これだけです。試しに上のコードをtest.phpとかで保存して、実行してみます。

/tmp% php test.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"]=>
  int(244)
  ["comment_num"]=>
  int(29)
  ["mylist_counter"]=>
  int(9)
  ["last_res_body"]=>
  string(84) "これは伸びるwwww wwwwwwwwww オwwwww... "
  ["watch_url"]=>
  string(39) "http://www.nicovideo.jp/watch/sm2191960"
  ["thumb_type"]=>
  string(5) "video"
}

簡単ですね!


thumbnail利用を想定しているAPIだからキャッシュもサーバーサイドでかかってるのである程度沢山呼んでも大丈夫

Akihiko Koizukaさんのツイート: "thumbnail利用を想定しているAPIだからキャッシュもサーバーサイドでかかってるのである程度沢山呼んでも大丈夫"

とのことなので、良いんですよね??


だめだったらおしえてくだしあ><><!

 |