no-image

livedoorクリップのAPIを使ってみる

livedoor クリップ開発日誌:del.icio.us互換のAPIを公開しました – livedoor Blog(ブログ)にあるように,livedoorクリップがAPIを公開したのでlivedoorクリップをメインに使ってる自分としては触ってみないとな.と思って触ったら超簡単だったのでPHPでAPIを叩く方法を紹介します.

上記URLにあるようにlivedoorクリップが公開したAPIはdeliciousと互換性があるようなのでServices_Deliciousに少し手を入れるだけでなんでもできるようになります.

こんな感じで.


<?php
require_once 'config.php';
require_once 'Services/Delicious.php';

class Services_Livedoorclip extends Services_Delicious
{
    var $_apiUrl = 'http://api.clip.livedoor.com/v1';

   /**
    * Add a post
    *
    * @access   public
    * @param    string|array    url or all data for the post
    * @param    string          description
    * @param    string          extended description
    * @param    string          tags for the items
    * @param    string          datestamp
    * @param    string          make the item private if "$shared = 'no'"
    * @return   boolean
    */
    function addPost($url, $description = null, $extended = null, $tags = null, $date = null, $shared = null)
    {
        if (is_array($url)) {
            $params = $url;
            if (!isset($params['dt'])) {
                $params['dt'] = strftime('%Y-%m-%dT%H:%I:%SZ', time());
            }
        } else {
            if (is_null($date)) {
                $date = strftime('%Y-%m-%dT%H:%I:%SZ', time());
            } else {
                $tmp = strtotime($date);
                if ($tmp) {
                    $date = strftime('%Y-%m-%dT%H:%I:%SZ', time());
                }
            }
            $params = array(
                             'url'         => $url,
                             'description' => $description,
                             'extended'    => $extended,
                             'tags'        => $tags,
                             'dt'          => $date,
                             'shared'      => $shared
                            );
        }

        $result = $this->_sendRequest('posts', 'add', $params);

        return $this->_resultToBoolean($result);
    }

}

$clip = &new Services_Livedoorclip($username, $password);

//$posts = $clip->getRecentPosts();
//var_dump($posts);

$data = array(
    'url' => 'http://project-p.jp/',
    'description' => 'hoge',
);

$result = $clip->addPost($data);
if (PEAR::isError($result)) {
    die($result->getMessage());
} else {
    echo "Success";
}
?>

ね?簡単でしょう?

一つ気をつけるのは,ログイン時の認証にはlivedoor IDのパスワードではなく,livedoorクリップの設定で発行されるAPIキーを指定する所でしょうか.