先日サーバーに追加した「composer」を使い、Twitter API用ライブラリで有名なTwitterOAuthの後継となる「cowitter」をインストールしてみました。
この記事では、composerを使ってTwitter API用ライブラリcowitterをインストールして、Twitter APIにキーワード検索をかけてツイート情報を取得する方法について、サンプルのPHPコードも交えてご紹介したいと思います。
composerでcowitterを追加
先日、PHPに追加したcomposerのテストも兼ねて、Twitter APIのライブラリでおなじみとなっているcowitterのインストールをやってみました。かつてのTwitterOAuthの後継というものです。
composerとは
PHP向けのパッケージ管理システムcomposerを使うと、cowitterのライブラリインストールは本当に簡単にできました。composerの詳細やインストール方法についてははこちらの記事でご紹介しています。
シェルコマンド一発でcowitterを追加
シェルから下記コマンドをうつことでcowitterライブラリがインストールできます。
% php composer.phar require mpyw/cowitter:^1.0
twitter APIへの接続
cowitterライブラリのインストールが完了したら、これを使ってtwitter検索のプログラムを作ってみます。
Twitter APIに必要なアプリケーションキー
cowitterの使い方についてはこちらのブログ記事が一番分かりやすかったですが、コードを書く前に、Twitter APIのキーを用意する必要があります。
Consumer Key
Consumer Secret
Access Token
Access Token Secret
Consumer Key, Consumer Secret, Access Token, Access Token Secretをお持ちでない場合には、Twitter Developersでご自身のtwitterにログインし、create an appからAPIキーを新規取得ができます。
Cowitterの初期設定
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 ] );
cowitterでTwitter APIに接続
インスタンスが生成できたらAPIに投げる検索条件を設定してみます。$query部分にTwitterで検索したいキーワードを設定すれば、キーワードに関連したツイートを検索してもらえます。
$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');
}
検索エンジンdtnの検索プログラムに設定
上記のプログラムで無事に検索結果が取得できましたので、これをディレクトリ型検索エンジンdtnの検索ボックスに組み込んでみました。
TOPページで検索する際に「つぶやき検索」にチェックをつけて検索すると、カテゴリや登録サイトの検索と一緒にツイート検索結果も表示をしてあります。
cowitterからTwitter APIに投げたレスポンスも問題ないですが、いちおう「つぶやき検索」にチェックを付けた場合だけ結果を表示するようにしてあります。よければお試しください。
おわりに
以上のような流れで、検索キーワードに関連したツイートデータを取る程度ならcowitterで簡単に実現ができましたが、検索するのであればTwitterアプリを使うほうが楽でしょうから、もっと他の使い道を考えた方がよさそうです。