自己紹介
大阪を拠点に活動しているフロントエンドエンジニアです。
HAL大阪2年生。
Twitterやってます。
作ったもの
今回作ったものは本当に簡単なもので、
「twitterのハッシュタグを見つけ次第、リストにそのユーザーをぶち込むもの」
です。
使ったもの
TwistOAuthが簡単に使えて、使い慣れているので今回も使わせていただきました。
PHPは5.5.31を使いました。
使い方
settings.phpに設定しておけば、動くようにしています。
twitterのidとパスワード、作るリストの名前、追っかけるハッシュタグを入力してください。
$screen_name = "hoge";
$password = "hogehoge";
$list_name = "マレフィセントリスト";
$target_hashtag = "#マレフィセント";
まぁハッシュタグだけはコマンドライン引数にしてもいいと思いますが、今回は割愛します。
設定をしたら、コマンドラインで
$ php script.php
これをイベントの間動かしっぱなしにしておけば、OKです。
コード
すべてのコードは、僕のgithubに置いています。
<?php
// この1行で、リストを作っています。作られたリストのIDを代入しておきます。(後で使うため)
$list_id_str = $to->post("lists/create",array("name"=>$list_name))->id_str;
// ストリーミング開始
$to->streaming('statuses/filter', function ($status) use ($to,$list_id_str) {
if (isset($status)) {
try {
// ここでツイートしていた人をリストに入れていきます。
$to->post("lists/members/create",array("list_id" => $list_id_str,"screen_name" => $status->user->screen_name));
echo $status->user->name." - @".$status->user->screen_name." をlistに追加しました!\n";
}catch (TwistException $e){
$error = $e->getMessage();
echo $error.PHP_EOL;
}
flush();
}
},array('track' => $target_hashtag));
単純なコードですね。
サクッと作ったものなので、あまり気にしていない場所があります。
例えば、もうすでにリストにいるのに同じ人をリストに入れているかのような標準出力がでるとかあります。
twitterのapiには、GETでlist/members/showというのがあり、リスト内にそのメンバーがいるかどうかというものがありますが、データでエラーとして帰ってくるんではなくエラーが出るので、今回は使っていません。
いい感じにできる人いたらプルリクください()
あとがき
まぁ30〜40分程度で作れたので良かったです。笑
何かバグなどありましたら @konojunyaまでお願いします。