フォローしている人の「桐生」という文言が入ったツイートをリツイートするbotを作りました。
桐生市bot http://twitter.com/bot_kiryu
twitterのapiを利用。Oauth認証後、タイムラインから直近200件のツイートを取得。ツイートに「桐生」というキーワードが入っているかどうかを判定し、入っていればapi経由でリツイートするというbotです。これをcronで一定時間ごとに叩いてあげればok。
Oauth認証はgithubにあったabrahamさんのライブラリを使用。「twitteroauth」とググれば出てくるので、そのtwitteroauthフォルダの2ファイルをダウンロードしておきます。config.phpにOauth認証に必要な4つのパラメータを定義しておいて、読み込んでます。このあたりはドットインストールの「ツイッターbotを作る」を参考にしました。
ドットインストール http://dotinstall.com/
本当は、Streaming APIを使って、自分のタイムラインからではなく、ツイッター全体を対象にしたかったのですが、ボリューム的に無理なのと、そもそも全ツイートの取得はgoogleなどの一部の企業にしか提供されていないらしく、まあ無理ですね。とはいえ、予めキーワードで指定してあげればかなり絞れるはずなのですが、いまいちstreamingAPIの使い方がわからんので、とりあえずREST APIのみで作れる形で仕上げました。
上述の通り、自分のアカウントのTLしか見ていないので、とにかくフォローしまくらないといけないのがめんどくさい。フォローを代行してくれるシステムとか無いのかな。
次はこれをベースに、streaming apiを使ってもっと広い範囲のツイートを対象にできるようにしてみたいと思います。
<?php require_once("twitteroauth/twitteroauth.php"); require_once("config.php"); $conn = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET); $params= array("count"=>200); $result = $conn -> get("statuses/home_timeline",$params); foreach($result as $value){ $text=$value->text; if(strstr($text,"桐生")){ $id=$value->id; $retweet = $conn -> post("statuses/retweet/".$id); } } ?>