Programmer's Reference Guide
| Zend_Service_StrikeIron: 応用編 |
Zend_Service_Technorati
導入
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 のインスタンスを作成します。
そしてクエリの形式を選択し、引数を指定したうえでそれをコールします。
例1 はじめてのクエリの実行
// API_KEY を指定して
// Zend_Service_Technorati を作成します
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
// Technorati で PHP というキーワードを検索します
$resultSet = $technorati->search('PHP');
検索用のメソッドにはオプションパラメータの配列を渡すことができます。 これを使用すると、クエリをさらに絞り込むことができます。
例2 クエリの精度の向上
// 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
オブジェクトを、気の済むまで使い回せばいいのです。
例3 ひとつの 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
文を用いてループ処理することです。
例4 結果セットオブジェクトの取得
// 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
インターフェイスを実装しているので、結果コレクション内での位置を指定して
特定の結果オブジェクトを取得することもできます。
例5 特定の結果セットオブジェクトの取得
// 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();
注意:
SeekableIteratorは配列として動作し、 そのインデックスは 0 から始まります。インデックス 1 を指定すると、コレクション内の 2 番目の結果を取得することになります。
2 番目の形式は、単体の特別な結果オブジェクトで表されるものです。
Zend_Service_Technorati_GetInfoResult、Zend_Service_Technorati_BlogInfoResult
および Zend_Service_Technorati_KeyInfoResult は、
Zend_Service_Technorati_Author や Zend_Service_Technorati_Weblog
といったオブジェクトのラッパーとして働きます。
例6 単体の結果オブジェクトの取得
// 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
ブロック内に記述するようにしましょう。
例7 クエリの例外処理
$technorati = new Zend_Service_Technorati('VALID_API_KEY');
try {
$resultSet = $technorati->search('PHP');
} catch(Zend_Service_Technorati_Exception $e) {
echo "エラーが発生しました: " $e->getMessage();
}
API キーの使用限度の確認
今日は後何回 API キーが使えるのかを調べたいことも多々あるでしょう。
デフォルトでは、Technorati の API は 1 日あたり 500 回までしか使用することができません。
それを超えて使用しようとすると、Zend_Service_Technorati
は例外を返します。自分の API キーの使用状況を取得するには
Zend_Service_Technorati::keyInfo() メソッドを使用します。
Zend_Service_Technorati::keyInfo() は
Zend_Service_Technorati_KeyInfoResult オブジェクトを返します。
詳細は
» API リファレンスガイド
を参照ください。
例8 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 />";
使用できる Technorati クエリ
Zend_Service_Technorati は以下のクエリをサポートしています。
Technorati Cosmos
» Cosmos
クエリは、指定した URL にリンクしているブログを探します。このクエリは
Zend_Service_Technorati_CosmosResultSet
オブジェクトを返します。詳細は
» API リファレンスガイド
の Zend_Service_Technorati::cosmos() を参照ください。
例9 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>";
Technorati Search
» Search
クエリは、指定した検索文字列を含むブログを探します。このクエリは
Zend_Service_Technorati_SearchResultSet
オブジェクトを返します。詳細は
» API リファレンスガイド
の Zend_Service_Technorati::search() を参照ください。
例10 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>";
Technorati Tag
» Tag
クエリは、指定したタグがつけられている投稿を探します。このクエリは
Zend_Service_Technorati_TagResultSet
オブジェクトを返します。詳細は
» API リファレンスガイド
の Zend_Service_Technorati::tag() を参照ください。
例11 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>";
Technorati DailyCounts
» DailyCounts
クエリは、指定したキーワードを含む投稿の 1 日あたりの数を返します。このクエリは
Zend_Service_Technorati_DailyCountsResultSet
オブジェクトを返します。詳細は
» API リファレンスガイド
の Zend_Service_Technorati::dailyCounts() を参照ください。
例12 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>";
Technorati TopTags
» TopTags
クエリは、Technorati にもっとも多く登録されているタグの情報を返します。このクエリは
Zend_Service_Technorati_TagsResultSet
オブジェクトを返します。詳細は
» API リファレンスガイド
の Zend_Service_Technorati::topTags() を参照ください。
例13 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>";
Technorati BlogInfo
» BlogInfo
は、指定した URL に関連するブログの情報を返します。このクエリは
Zend_Service_Technorati_BlogInfoResult
オブジェクトを返します。詳細は
» API リファレンスガイド
の Zend_Service_Technorati::blogInfo() を参照ください。
例14 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>';
Technorati BlogPostTags
» BlogPostTags
クエリは、そのブログでよく使われているタグの情報を返します。このクエリは
Zend_Service_Technorati_TagsResultSet
オブジェクトを返します。詳細は
» API リファレンスガイド
の Zend_Service_Technorati::blogPostTags() を参照ください。
例15 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>";
Technorati GetInfo
» GetInfo
クエリは、あるメンバーについて Technorati が把握している情報を返します。このクエリは
Zend_Service_Technorati_GetInfoResult
オブジェクトを返します。詳細は
» API リファレンスガイド
の Zend_Service_Technorati::getInfo() を参照ください。
例16 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>";
Technorati KeyInfo
KeyInfo クエリは、API キーの使用状況についての情報を返します。このクエリは
Zend_Service_Technorati_KeyInfoResult
オブジェクトを返します。詳細は
» API リファレンスガイド
の Zend_Service_Technorati::keyInfo() を参照ください。
Zend_Service_Technorati クラス
以下のクラスは、Technorati の各種クエリから返されるものです。
Zend_Service_Technorati_*ResultSet 系のクラスは、
それぞれの形式にあわせた結果セットを保持します。
その中身は形式にあわせた結果オブジェクトであり、容易に処理することができます。
これらの結果セットクラスはすべて
Zend_Service_Technorati_ResultSet クラスを継承しており、かつ
SeekableIterator インターフェイスを実装しています。
これによって、結果のループ処理や特定の結果の取り出しが簡単にできるようになります。
注意:
Zend_Service_Technorati_GetInfoResult、Zend_Service_Technorati_BlogInfoResultそしてZend_Service_Technorati_KeyInfoResultには上にあげたクラスと異なる点があります。これらは結果セットに属しておらず、 インターフェイスを実装していません。これらは単一のレスポンスオブジェクトを表し、Zend_Service_Technorati_AuthorやZend_Service_Technorati_WeblogといったZend_Service_Technoratiのオブジェクトのラッパーとして働きます。
Zend_Service_Technorati には、これ以外にも
特定のレスポンスオブジェクトを表す便利なクラスが含まれています。
Zend_Service_Technorati_Author は、Technorati のアカウント
(ブログの著者、いわゆるブロガー) を表します。
Zend_Service_Technorati_Weblog は単一のウェブログオブジェクトを表します。
ここには、フィードの URL やブログ名などの情報が含まれます。詳細は
» API リファレンスガイド
の Zend_Service_Technorati を参照ください。
Zend_Service_Technorati_ResultSet
Zend_Service_Technorati_ResultSet は最も重要な結果セットです。
クエリ固有の結果セットクラス群はこのクラスを継承して作成しています。
このクラス自体のインスタンスを直接作成してはいけません。
各子クラスは、クエリの種類に応じた
Zend_Service_Technorati_Result
オブジェクトのコレクションを表します。
Zend_Service_Technorati_ResultSet は PHP の SeekableIterator
インターフェイスを実装しており、foreach
文で結果を処理することができます。
例17 結果セットコレクション内の結果オブジェクトの反復処理
// 単純なクエリを実行します
$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
Zend_Service_Technorati_CosmosResultSet は
Technorati Cosmos クエリの結果セットを表します。
注意:
Zend_Service_Technorati_CosmosResultSetは Zend_Service_Technorati_ResultSet を継承しています。
Zend_Service_Technorati_SearchResultSet
Zend_Service_Technorati_SearchResultSet は
Technorati Search クエリの結果セットを表します。
注意:
Zend_Service_Technorati_SearchResultSetは Zend_Service_Technorati_ResultSet を継承しています。
Zend_Service_Technorati_TagResultSet
Zend_Service_Technorati_TagResultSet は
Technorati Tag クエリの結果セットを表します。
注意:
Zend_Service_Technorati_TagResultSetは Zend_Service_Technorati_ResultSet を継承しています。
Zend_Service_Technorati_DailyCountsResultSet
Zend_Service_Technorati_DailyCountsResultSet は
Technorati DailyCounts クエリの結果セットを表します。
注意:
Zend_Service_Technorati_DailyCountsResultSetは Zend_Service_Technorati_ResultSet を継承しています。
Zend_Service_Technorati_TagsResultSet
Zend_Service_Technorati_TagsResultSet は
Technorati TopTags あるいは BlogPostTags クエリの結果セットを表します。
注意:
Zend_Service_Technorati_TagsResultSetは Zend_Service_Technorati_ResultSet を継承しています。
Zend_Service_Technorati_Result
Zend_Service_Technorati_Result は最も重要な結果オブジェクトです。
クエリ固有の結果クラス群はこのクラスを継承して作成しています。
このクラス自体のインスタンスを直接作成してはいけません。
Zend_Service_Technorati_CosmosResult
Zend_Service_Technorati_CosmosResult は
Technorati Cosmos クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_CosmosResultSet
オブジェクトに含まれる形式で返されます。
注意:
Zend_Service_Technorati_CosmosResultは Zend_Service_Technorati_Result を継承しています。
Zend_Service_Technorati_SearchResult
Zend_Service_Technorati_SearchResult は
Technorati Search クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_SearchResultSet
オブジェクトに含まれる形式で返されます。
注意:
Zend_Service_Technorati_SearchResultは Zend_Service_Technorati_Result を継承しています。
Zend_Service_Technorati_TagResult
Zend_Service_Technorati_TagResult は
Technorati Tag クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_TagResultSet
オブジェクトに含まれる形式で返されます。
注意:
Zend_Service_Technorati_TagResultは Zend_Service_Technorati_Result を継承しています。
Zend_Service_Technorati_DailyCountsResult
Zend_Service_Technorati_DailyCountsResult は
Technorati DailyCounts クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_DailyCountsResultSet
オブジェクトに含まれる形式で返されます。
注意:
Zend_Service_Technorati_DailyCountsResultは Zend_Service_Technorati_Result を継承しています。
Zend_Service_Technorati_TagsResult
Zend_Service_Technorati_TagsResult は
Technorati TopTags あるいは BlogPostTags クエリの単一の結果オブジェクトを表します。
単体のオブジェクトとして返されることはなく、常に
Zend_Service_Technorati_TagsResultSet
オブジェクトに含まれる形式で返されます。
注意:
Zend_Service_Technorati_TagsResultは Zend_Service_Technorati_Result を継承しています。
Zend_Service_Technorati_GetInfoResult
Zend_Service_Technorati_GetInfoResult は
Technorati GetInfo クエリの単一の結果オブジェクトを表します。
Zend_Service_Technorati_BlogInfoResult
Zend_Service_Technorati_BlogInfoResult は
Technorati BlogInfo クエリの単一の結果オブジェクトを表します。
Zend_Service_Technorati_KeyInfoResult
Zend_Service_Technorati_KeyInfoResult は
Technorati KeyInfo クエリの単一の結果オブジェクトを表します。
これは
Technorati API キーの使用状況
についての情報を提供します。
| Zend_Service_StrikeIron: 応用編 |
Select a Version
Languages Available
Components
Search the Manual
Navigation
- プログラマ向けリファレンスガイド
- プログラマ向けリファレンスガイド
- Zend_Service
- 導入
- Zend_Service_Akismet
- Zend_Service_Amazon
- Zend_Service_Audioscrobbler
- Zend_Service_Delicious
- Zend_Service_Flickr
- Zend_Service_Nirvanix
- Zend_Service_ReCaptcha
- Zend_Service_Simpy
- 導入
- Zend_Service_StrikeIron
- Zend_Service_StrikeIron: バンドルされているサービス
- Zend_Service_StrikeIron: 応用編
- Zend_Service_Technorati
- Zend_Service_Twitter
- Zend_Service_Yahoo
