Zend_Service_Technorati は、Technorati API
を使うための簡単で直感的なオブジェクト指向インターフェイスを提供します。
利用可能なすべての
Technorati API クエリ
にアクセスすることができ、API が返す XML
形式のレスポンスを PHP で扱いやすいオブジェクトで返します。
Technorati は、人気のあるブログ検索エンジンのひとつです。その API を使用すると、 特定のブログについての情報を取得したり、 指定したタグやフレーズにマッチするブログの著者の情報を取得したりできます。 使用できるクエリの一覧は、 Technorati API ドキュメント あるいはこのドキュメントの 使用できる Technorati クエリ を参照ください。
Technorati API を使用するには、キーが必要です。 API キーを取得するには、まず最初に Technorati アカウントを作成 し、それから API キーのセクション に行ってください。
![]() |
API キーの制限 |
|---|---|
一日あたり最大 500 までの Technorati API コールを無料で行うことができます。 現在の Technorati API のライセンスによってはその他の使用制限が適用されるかもしれません。 |
API キーを取得したら、いよいよ Zend_Service_Technorati
を使うことができます。
クエリを実行するにはまず最初に API キーを使用して
Zend_Service_Technorati のインスタンスを作成します。
そしてクエリの形式を選択し、引数を指定したうえでそれをコールします。
例 43.36. はじめてのクエリの実行
// API_KEY を指定して
// Zend_Service_Technorati を作成します
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
// Technorati で PHP というキーワードを検索します
$resultSet = $technorati->search('PHP');
検索用のメソッドにはオプションパラメータの配列を渡すことができます。 これを使用すると、クエリをさらに絞り込むことができます。
例 43.37. クエリの精度の向上
// API_KEY を指定して
// Zend_Service_Technorati を作成します
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
// クエリをフィルタリングし、あまり影響力のない
// (あまり他からリンクされていない) ブログを結果から除外します
$options = array('authority' => 'a4');
// Technorati で PHP というキーワードを検索します
$resultSet = $technorati->search('PHP', $options);
Zend_Service_Technorati のインスタンスは使い捨てのオブジェクトではありません。
したがって、クエリをコールするたびに毎回新たなインスタンスを作成するなどということは不要です。
一度作成した Zend_Service_Technorati
オブジェクトを、気の済むまで使い回せばいいのです。
例 43.38. ひとつの Zend_Service_Technorati インスタンスでの複数のクエリの送信
// API_KEY を指定して
// Zend_Service_Technorati を作成します
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
// Technorati で PHP というキーワードを検索します
$search = $technorati->search('PHP');
// Technorati で一番よく登録されているタブを取得します
$topTags = $technorati->topTags();
クエリの結果は、二種類の結果オブジェクトのうちのいずれかの形式で取得することができます。
まず最初の形式は Zend_Service_Technorati_*ResultSet
オブジェクトで表されるものです。結果セットオブジェクトは、
基本的には結果オブジェクトのコレクションとなります。これは基底クラス
Zend_Service_Technorati_ResultSet を継承したもので、
PHP の SeekableIterator インターフェイスを実装しています。
この結果セットを使用するいちばんよい方法は、PHP の foreach
文を用いてループ処理することです。
例 43.39. 結果セットオブジェクトの取得
// API_KEY を指定して
// Zend_Service_Technorati を作成します
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
// Technorati で PHP というキーワードを検索します
// $resultSet は Zend_Service_Technorati_SearchResultSet のインスタンスです
$resultSet = $technorati->search('PHP');
// 結果オブジェクトをループします
foreach ($resultSet as $result) {
// $result は Zend_Service_Technorati_SearchResult のインスタンスです
}
Zend_Service_Technorati_ResultSet は SeekableIterator
インターフェイスを実装しているので、結果コレクション内での位置を指定して
特定の結果オブジェクトを取得することもできます。
例 43.40. 特定の結果セットオブジェクトの取得
// API_KEY を指定して
// Zend_Service_Technorati を作成します
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
// Technorati で PHP というキーワードを検索します
// $resultSet は Zend_Service_Technorati_SearchResultSet のインスタンスです
$resultSet = $technorati->search('PHP');
// $result は Zend_Service_Technorati_SearchResult のインスタンスです
$resultSet->seek(1);
$result = $resultSet->current();
![]() |
注意 |
|---|---|
|
2 番目の形式は、単体の特別な結果オブジェクトで表されるものです。
Zend_Service_Technorati_GetInfoResult、Zend_Service_Technorati_BlogInfoResult
および Zend_Service_Technorati_KeyInfoResult は、
Zend_Service_Technorati_Author や Zend_Service_Technorati_Weblog
といったオブジェクトのラッパーとして働きます。
例 43.41. 単体の結果オブジェクトの取得
// API_KEY を指定して
// Zend_Service_Technorati を作成します
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
// weppos についての情報を取得します
$result = $technorati->getInfo('weppos');
$author = $result->getAuthor();
echo '<h2>' . $author->getFirstName() . ' ' . $author->getLastName() .
' のブログ</h2>';
echo '<ol>';
foreach ($result->getWeblogs() as $weblog) {
echo '<li>' . $weblog->getName() . '</li>';
}
echo "</ol>";
レスポンスクラスの詳細については Zend_Service_Technorati クラス のセクションを参照ください。
Zend_Service_Technorati のクエリメソッドは、失敗したときには
Zend_Service_Technorati_Exception をスローします。
またその際にはわかりやすいエラーメッセージを提供します。
Zend_Service_Technorati のクエリが失敗する原因は、いくつか考えられます。
Zend_Service_Technorati は、クエリを送信する際にすべてのパラメータを検証します。
もし無効なパラメータや無効な値を指定していた場合は
Zend_Service_Technorati_Exception をスローします。
さらに、Technorati API が一時的に使用できなくなっていたり、
そのレスポンスが整形式でない場合もあり得るでしょう。
Technorati のクエリは、常に try...catch
ブロック内に記述するようにしましょう。
例 43.42. クエリの例外処理
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
try {
$resultSet = $technorati->search('PHP');
} catch(Zend_Service_Technorati_Exception $e) {
echo "エラーが発生しました: " $e->getMessage();
}
今日は後何回 API キーが使えるのかを調べたいことも多々あるでしょう。
デフォルトでは、Technorati の API は 1 日あたり 500 回までしか使用することができません。
それを超えて使用しようとすると、Zend_Service_Technorati
は例外を返します。自分の API キーの使用状況を取得するには
Zend_Service_Technorati::keyInfo() メソッドを使用します。
Zend_Service_Technorati::keyInfo() は
Zend_Service_Technorati_KeyInfoResult オブジェクトを返します。
詳細は
API リファレンスガイド
を参照ください。
例 43.43. API キーの使用状況の取得
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$key = $technorati->keyInfo();
echo "API Key: " . $key->getApiKey() . "<br />";
echo "Daily Usage: " . $key->getApiQueries() . "/" .
$key->getMaxQueries() . "<br />";
Zend_Service_Technorati は以下のクエリをサポートしています。
Cosmos
クエリは、指定した URL にリンクしているブログを探します。このクエリは
Zend_Service_Technorati_CosmosResultSet
オブジェクトを返します。詳細は
API リファレンスガイド
の Zend_Service_Technorati::cosmos() を参照ください。
例 43.44. Cosmos クエリ
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$resultSet = $technorati->cosmos('http://devzone.zend.com/');
echo "<p>Reading " . $resultSet->totalResults() .
" of " . $resultSet->totalResultsAvailable() .
" available results</p>";
echo "<ol>";
foreach ($resultSet as $result) {
echo "<li>" . $result->getWeblog()->getName() . "</li>";
}
echo "</ol>";
Search
クエリは、指定した検索文字列を含むブログを探します。このクエリは
Zend_Service_Technorati_SearchResultSet
オブジェクトを返します。詳細は
API リファレンスガイド
の Zend_Service_Technorati::search() を参照ください。
例 43.45. Search クエリ
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$resultSet = $technorati->search('zend framework');
echo "<p>Reading " . $resultSet->totalResults() .
" of " . $resultSet->totalResultsAvailable() .
" available results</p>";
echo "<ol>";
foreach ($resultSet as $result) {
echo "<li>" . $result->getWeblog()->getName() . "</li>";
}
echo "</ol>";
Tag
クエリは、指定したタグがつけられている投稿を探します。このクエリは
Zend_Service_Technorati_TagResultSet
オブジェクトを返します。詳細は
API リファレンスガイド
の Zend_Service_Technorati::tag() を参照ください。
例 43.46. Tag クエリ
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$resultSet = $technorati->tag('php');
echo "<p>Reading " . $resultSet->totalResults() .
" of " . $resultSet->totalResultsAvailable() .
" available results</p>";
echo "<ol>";
foreach ($resultSet as $result) {
echo "<li>" . $result->getWeblog()->getName() . "</li>";
}
echo "</ol>";
DailyCounts
クエリは、指定したキーワードを含む投稿の 1 日あたりの数を返します。このクエリは
Zend_Service_Technorati_DailyCountsResultSet
オブジェクトを返します。詳細は
API リファレンスガイド
の Zend_Service_Technorati::dailyCounts() を参照ください。
例 43.47. DailyCounts クエリ
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$resultSet = $technorati->dailyCounts('php');
foreach ($resultSet as $result) {
echo "<li>" . $result->getDate() .
"(" . $result->getCount() . ")</li>";
}
echo "</ol>";
TopTags
クエリは、Technorati にもっとも多く登録されているタグの情報を返します。このクエリは
Zend_Service_Technorati_TagsResultSet
オブジェクトを返します。詳細は
API リファレンスガイド
の Zend_Service_Technorati::topTags() を参照ください。
例 43.48. TopTags タグ
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$resultSet = $technorati->topTags();
echo "<p>Reading " . $resultSet->totalResults() .
" of " . $resultSet->totalResultsAvailable() .
" available results</p>";
echo "<ol>";
foreach ($resultSet as $result) {
echo "<li>" . $result->getTag() . "</li>";
}
echo "</ol>";
BlogInfo
は、指定した URL に関連するブログの情報を返します。このクエリは
Zend_Service_Technorati_BlogInfoResult
オブジェクトを返します。詳細は
API リファレンスガイド
の Zend_Service_Technorati::blogInfo() を参照ください。
例 43.49. BlogInfo クエリ
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$result = $technorati->blogInfo('http://devzone.zend.com/');
echo '<h2><a href="' . (string) $result->getWeblog()->getUrl() . '">' .
$result->getWeblog()->getName() . '</a></h2>';
BlogPostTags
クエリは、そのブログでよく使われているタグの情報を返します。このクエリは
Zend_Service_Technorati_TagsResultSet
オブジェクトを返します。詳細は
API リファレンスガイド
の Zend_Service_Technorati::blogPostTags() を参照ください。
例 43.50. BlogPostTags クエリ
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$resultSet = $technorati->blogPostTags('http://devzone.zend.com/');
echo "<p>Reading " . $resultSet->totalResults() .
" of " . $resultSet->totalResultsAvailable() .
" available results</p>";
echo "<ol>";
foreach ($resultSet as $result) {
echo "<li>" . $result->getTag() . "</li>";
}
echo "</ol>";
GetInfo
クエリは、あるメンバーについて Technorati が把握している情報を返します。このクエリは
Zend_Service_Technorati_GetInfoResult
オブジェクトを返します。詳細は
API リファレンスガイド
の Zend_Service_Technorati::getInfo() を参照ください。
例 43.51. GetInfo クエリ
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$result = $technorati->getInfo('weppos');
$author = $result->getAuthor();
echo "<h2>Blogs authored by " . $author->getFirstName() . " " .
$author->getLastName() . "</h2>";
echo "<ol>";
foreach ($result->getWeblogs() as $weblog) {
echo "<li>" . $weblog->getName() . "</li>";
}
echo "</ol>";
KeyInfo クエリは、API キーの使用状況についての情報を返します。このクエリは
Zend_Service_Technorati_KeyInfoResult
オブジェクトを返します。詳細は
API リファレンスガイド
の Zend_Service_Technorati::keyInfo() を参照ください。
以下のクラスは、Technorati の各種クエリから返されるものです。
Zend_Service_Technorati_*ResultSet 系のクラスは、
それぞれの形式にあわせた結果セットを保持します。
その中身は形式にあわせた結果オブジェクトであり、容易に処理することができます。
これらの結果セットクラスはすべて
Zend_Service_Technorati_ResultSet クラスを継承しており、かつ
SeekableIterator インターフェイスを実装しています。
これによって、結果のループ処理や特定の結果の取り出しが簡単にできるようになります。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati には、これ以外にも
特定のレスポンスオブジェクトを表す便利なクラスが含まれています。
Zend_Service_Technorati_Author は、Technorati のアカウント
(ブログの著者、いわゆるブロガー) を表します。
Zend_Service_Technorati_Weblog は単一のウェブログオブジェクトを表します。
ここには、フィードの URL やブログ名などの情報が含まれます。詳細は
API リファレンスガイド
の Zend_Service_Technorati を参照ください。
Zend_Service_Technorati_ResultSet は最も重要な結果セットです。
クエリ固有の結果セットクラス群はこのクラスを継承して作成しています。
このクラス自体のインスタンスを直接作成してはいけません。
各子クラスは、クエリの種類に応じた
Zend_Service_Technorati_Result
オブジェクトのコレクションを表します。
Zend_Service_Technorati_ResultSet は PHP の SeekableIterator
インターフェイスを実装しており、foreach
文で結果を処理することができます。
例 43.52. 結果セットコレクション内の結果オブジェクトの反復処理
// 単純なクエリを実行します
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
$resultSet = $technorati->search('php');
// $resultSet は Zend_Service_Technorati_SearchResultSet
// のインスタンスです
// これは Zend_Service_Technorati_ResultSet を継承しています
foreach ($resultSet as $result) {
// Zend_Service_Technorati_SearchResult オブジェクトに対して
// 何らかの操作をします
}
Zend_Service_Technorati_CosmosResultSet は
Technorati Cosmos クエリの結果セットを表します。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_SearchResultSet は
Technorati Search クエリの結果セットを表します。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_TagResultSet は
Technorati Tag クエリの結果セットを表します。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_DailyCountsResultSet は
Technorati DailyCounts クエリの結果セットを表します。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_TagsResultSet は
Technorati TopTags あるいは BlogPostTags クエリの結果セットを表します。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_Result は最も重要な結果オブジェクトです。
クエリ固有の結果クラス群はこのクラスを継承して作成しています。
このクラス自体のインスタンスを直接作成してはいけません。
Zend_Service_Technorati_CosmosResult は
Technorati Cosmos クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_CosmosResultSet
オブジェクトに含まれる形式で返されます。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_SearchResult は
Technorati Search クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_SearchResultSet
オブジェクトに含まれる形式で返されます。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_TagResult は
Technorati Tag クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_TagResultSet
オブジェクトに含まれる形式で返されます。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_DailyCountsResult は
Technorati DailyCounts クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_DailyCountsResultSet
オブジェクトに含まれる形式で返されます。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_TagsResult は
Technorati TopTags あるいは BlogPostTags クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_TagsResultSet
オブジェクトに含まれる形式で返されます。
![]() |
注意 |
|---|---|
|
Zend_Service_Technorati_GetInfoResult は
Technorati GetInfo クエリの単一の結果オブジェクトを表します。
Zend_Service_Technorati_BlogInfoResult は
Technorati BlogInfo クエリの単一の結果オブジェクトを表します。
Zend_Service_Technorati_KeyInfoResult は
Technorati KeyInfo クエリの単一の結果オブジェクトを表します。
これは
Technorati API キーの使用状況
についての情報を提供します。