先日、PHPに追加したcomposerのテストも兼ねて、Twitter APIのライブラリでおなじみとなっているcowitterのインストールをやってみました。
昔のTwitterOAuthの後継というやつです。

インストールは先日追加したcomposerを使うと本当に簡単でした。

% php composer.phar require mpyw/cowitter:^1.0

あっという間にインストールが完了したので、これを使ってtwitter検索のプログラムを作ってみました。使い方についてはこちらのブログ様記事が一番分かりやすかったですが、コードを書く前に、Twitter APIのキーを取得する必要がありますので、まずはConsumer Key, Consumer Secret, Access Token, Access Token Secretをご用意下さい。お持ちでない場合は、twitterにログインしてこちらから取得して下さい。

Consumer Key, Consumer Secret, Access Token, Access Token Secret が用意できたら、まずはcowitterのライブラリをPHPで読み込み、初期設定をいれていきます。

require 'vendor/autoload.php';

//名前空間設定
use mpyw\Co\Co;
use mpyw\Co\CURLException;
use mpyw\Cowitter\Client;
use mpyw\Cowitter\HttpException;

ついでに長々しいAPIキーも定義してしまうと楽かもしれないです。

//キー設定
define( 'CONSUMER_KEY', '****' );
define( 'CONSUMER_SECRET', ****'  );
define( 'ACCESS_TOKEN', ****'  );
define( 'ACCESS_TOKEN_SECRET', ****' );

初期設定が済んだら、クライアントインスタンスを生成してしまいましょう。

$client = new Client( [ CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET ] );

後はAPIに投げる検索条件を設定します。ディレクトリ型検索エンジンdtnの場合は、サイトの検索ボックスで入力された値を使っているので、それを設定しています。

$query_array = array(
	'q' => $query,	//検索したいキーワード
	'result_type' => 'recent',		// 取得するツイートの種類
	'lang' => 'ja'
);

あとはクライアントインスタンスからAPIに投げたレスポンスデータを配列などに放り込み二次利用すればOKです。

$statuses = $client -> get('search/tweets', $query_array) -> statuses;

foreach ($statuses as $status) {
	twtext[] = htmlspecialchars($status -> text, ENT_QUOTES, 'UTF-8');
	$twuserName[] = htmlspecialchars($status -> user -> name, ENT_QUOTES, 'UTF-8');
	$twuserIcon[] = htmlspecialchars($status -> user -> profile_image_url, ENT_QUOTES, 'UTF-8');
}

常にTwitter APIに検索クエリを投げるのもどうかと思いましたので、ディレクトリ型検索エンジンdtnでは、つぶやき検索にチェックを付けた場合だけTwitter APIにクエリを投げ、結果を表示するようにしてみました。

twitterAPIの検索結果も表示できました

検索したデータを取ってくる程度なら簡単にできてしまいましたが、ツイート情報の検索であればTwitterアプリが一番使いやすいですよね。cowitterを使うのであれば、ツイートの投稿に使わないと意味がないかもしれないです。

スポンサーリンク