新はてなブックマーク件数取得API用のPHP classをつくった
先日公開された新はてなブックマーク件数取得API用のPHP classをつくった
(開発者さま向け)はてなブックマーク件数取得APIに新しいAPIを追加 - はてなブックマーク日記 - 機能変更、お知らせなど
まあ、id:amachangが公開しているようにHTMLだけで完結するのでPHPでやる必要もないかもしれないですが
新はてなブックマーク件数取得 API を使って自分のページに件数を埋め込む最も簡単な方法 - IT戦記
配列でURLを渡すと複数のURLのブックマーク数を取得できるようになっています。
また、newするときに遅延時間を設定すると複数取得時に遅延するようにしています。
http://tknzk.com/lab/hatena/
http://tknzk.com/lab/hatena/hatenabookmarkcount.phps
<?php /** * Hatena Bookmark Count class * * @author tknzk <info@tknzk.com> * @version 0.0.1 * @copyright Copyright (c) 2009, tknzk.com All rights reserved. * @license BSD License * */ class HatenaBookmarkCount { const DEBUG = false; const HATENA_API_URL = 'http://api.b.st-hatena.com'; const VERSION = '0.0.1'; /** * Delay Time Micro seconds * * @var int */ private $delay; /** * Default constructor * * @return void * @param int $delay * */ public function __construct($delay = null) { if($delay !== null) { $this->setDelay($delay); } } /** * Get Hatena Bookmark Count * * @access public * @param string $urls * @return array * @static */ public function entrycount($urls) { if(is_array($urls)) { $i = 0; foreach($urls as $url) { $apiurl = self::HATENA_API_URL . '/entry.count?' . 'url=' . urlencode($url) . ''; //$response = file_get_contents($apiurl); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $apiurl); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); curl_close($curl); $json = json_decode($response,true); if($json) { $ret[$i]['url'] = $url; $ret[$i]['count'] = $json; } if($i > 1) { if($this->delay !== null) { usleep($this->delay); } } $i++; } return $ret; }else{ $ret = array(); $apiurl = self::HATENA_API_URL . '/entry.count?' . 'url=' . urlencode($urls) . ''; //$response = file_get_contents($apiurl); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $apiurl); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($curl); curl_close($curl); $json = json_decode($response,true); if($json) { $ret = array(); $ret['url'] = $urls; $ret['count'] = $json; } return $ret; } } /** * Set Delay micro seconds * * @return void * @pram string */ public function setDelay($delay) { $this->delay = (string) $delay; } }
使い方はこんな感じ
<?php require_once 'hatenabookmarkcount.php'; $hatebucount = new HatenaBookmarkCount(200000); $url = "http://www.hatena.ne.jp"; $url2 = "http://b.hatena.ne.jp"; $count = $hatebucount->entrycount($url); echo "-------- url --------"; echo "<pre>"; print_r($count); echo "</pre>"; echo "-------- urls --------"; $urls = array($url,$url2); $count = $hatebucount->entrycount($urls); echo "<pre>"; print_r($count); echo "</pre>";