APIを活用したtwitterのキーワード検索効率化


はじめに

エンジニアの高橋です。
最近の仕事はマネジメント業が主で、業務をいかにして効率化するかに取り組んでいます。

その一環ではありませんが、情報収集も効率化したいと思いました。

今回はtwitterでのツイート検索を効率化します。

私は普段、かなり情報収集にtwitterを愛用しています。
検索エンジンでの検索とは異なるベクトルの情報を得られるためです。

ところが、去年秋あたりからtwitterの仕様が変わり、キーワード検索をすると、
そのキーワードがユーザー名に入ったユーザーのツイートが上位にヒットするようになりました。

一通り調べてみても、この仕様を打ち消す方法は見つかりませんでした。
現状、「-from:@なんとか」を検索欄に入れて、特定のユーザーのツイートを除外するといったオプションで対処するしかないようです。

キーワードが入ったツイートだけ見る方法はないのでしょうか。
そこで、twitter APIの出番です。

事前準備

・Twitter Developersでアプリケーションconsumerkeyの取得
・アクセストークンの取得

こちらのサイトに取得方法が載っていますので、本ブログ内では割愛します。

やったこと

使用したファイルは
TwistOAuth のTwistOAuth.phar
・ツイートを表示するファイル
の二つだけです。PHPの基礎知識があれば、非常に簡単です。
成果物をherokuへアップして表示するまで、1つのトラブルもなく終わりました。

「ツイートを表示するファイル」にはこのようなコードを書きました。

$consumer_key,$consumer_secret,$access_token,$access_token_secretはご自身のものに入れ替えてください。

<?php
require 'TwistOAuth.phar';

$consumer_key = 'hogehoge1';
$consumer_secret = 'hogehoge2';
$access_token = 'hogehoge3';
$access_token_secret = 'hogehoge4';

$connection = new TwistOAuth($consumer_key, $consumer_secret, $access_token, $access_token_secret);

// q→キーワード、-RT→リツイート除外、count→件数
$tweets_params = ['q' => 'なんとか -RT' ,'count' => '20'];
$tweets = $connection->get('search/tweets', $tweets_params)->statuses;

//ツイートを表示する ツイート日時をリンクとして表示 次にツイート本文を表示
function disp_tweet($value, $text){
    $screen_name = $value->user->screen_name;
    $updated = date('Y/m/d H:i', strtotime($value->created_at));
    $tweet_id = $value->id_str;
    $url = 'https://twitter.com/' . $screen_name . '/status/' . $tweet_id;

    echo '<div class="tweetbox">' . PHP_EOL;
    echo '<div class="meta"><a target="_blank" href="' . $url . '">' . $updated . '</a>'  .'</div>' . PHP_EOL;
    echo '<div class="tweet">' . $text . '</div>' . PHP_EOL;
    echo '</div>' . PHP_EOL;
}

foreach ($tweets as $value) {
    $text = htmlspecialchars($value->text, ENT_QUOTES, 'UTF-8', false);
    disp_tweet($value, $text);
}

?>

結果

隠しすぎて何が何だかわかりませんが、ツイートが取得できました。
ユーザー名にキーワードが入ったツイートやRTのツイートは除外され、
キーワードが入ったツイートのみ表示されています。

普段使っているツールやSNSもプログラミングの知識を使って自分好みに使えるというのが良いですね。

このプログラムをカスタマイズすることで、特定のキーワード入りのツイートをDBに保存しておいて後で見るなども出来るかと思います。

忙しい社会人の味方となりそうです。

ちょっとしたテクニックで効率化できれば、プログラミングが楽しくなりませんか。

参考にしたサイト

さいごに

リンクバルは業務効率化を進めたいエンジニアを募集しています。
応募はコチラからお願いします。