[PHP] Twitter API を使って自動でファボ(Favorite)をするBOTを作る

PHPで作るシリーズです、一応第二弾かな。今回は Twitter API と組み合わせて、特定の検索結果から自動的にファボをするプログラムを作りたいと思います。必要な物はサーバー(ローカルサーバーでもOK)、Twitter Application、twitteroauth。
自動ファボマシーンを作る
まずは Twitter API を利用できるようにするためには Twitter Application が必要です。こちらのページより作成することが出来ます、もちろんTwitterのIDが必要になります。またアプリの作成には電話番号での認証が必須になっていますので、こちらの記事を参考にしていただければと思います。
Twitter アプリの作成で、必要な項目を入力してアプリを作成します。

- Name アプリ名
- Description アプリの説明
- Website サイトのドメイン名
- Callback URL 今回は不要、任意。
アプリが作成できたら、 Keys and Access Tokens という項目に移動して。アクセストークンが初期では無いのでgenerateで作成します
そして、次の情報をメモしてください
- Consumer Key (API Key)
- Consumer Secret (API Secret)
- Access Token
- Access Token Secret
これらの情報は Twitter API を使うのに必要になります。
Twitter認証を手軽に行えるライブラリをダウンロードする
GitHubにて公開されている、ライブラリをダウンロードします。こちらを使うことで簡単にPHPで Twitter API を利用できるようになります。
https://github.com/abraham/twitteroauth
PHPファイルを作成する
<?php
//ライブラリの読み込み
require_once("./twitteroauth/autoload.php");
use Abraham\TwitterOAuth\TwitterOAuth;
//Twitterアプリの情報
$consumerKey = 'xxxxxxx';
$consumerSecret = 'xxxxxxx';
$accessToken = 'xxxxxxx';
$accessTokenSecret = 'xxxxxxx';
//接続
$connection = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);
//dbの取得
$db_path = "./favo.db";
$db = @unserialize(file_get_contents($db_path));
if (!$db) { $db = array();}
//キーワードリスト
$keyword_list = array(
"検索キーワード1",
"検索キーワード2",
"検索キーワード3",
"検索キーワード4",
);
//検索結果の取得
foreach ( $keyword_list as $keyword ) {
$statues = $connection->get("search/tweets", array(
"q" => $keyword,
"count" => "100",
"include_entities" => "false",
"lang" => "ja",
"locale" => "ja",
"result_type" => "recent",
));
foreach ($statues->statuses as $list) {
$favo_list[] = @$list->id;
}
}
//DBのデータの保存
file_put_contents($db_path, serialize($favo_list));
//重複の値を排除
$favo_list = array_unique($favo_list);
$favo_list = array_diff($favo_list,$db);
//ファボ作業
foreach ($favo_list as $value) {
$statues = $connection->post("favorites/create", array(
"id" => $value,
"include_entities" => "false",
));
}
流れとしては、ライブラリの読み込み後 アプリの情報を元にTwitter API への接続ができるようにします。その次に前回のファボしたidを記録したログを取り出しています、なぜこんなことをしているかというと重複してファボを行わないようにしています、重複してファボしてもファボ済みというのが帰ってくるだけですが、余分なファボを減らすことで、速度が大きく変わってきます。その次に、Twitterでの検索を行い検索結果からツイートのIDを配列に格納しています。
配列に格納し終わったら、それをログとして保存します。その後に前回のファボしたidと照らしあわせて重複分は排除します、さらに各検索ワードで取得したidも重複が無いように重複をarray_uniqueでなくしています。
そして最後にファボ作業を行います、この時点で重複のないものだけがファボされます。これで完了です。
Twitter API では GETには制限が厳しく有るのですが、POSTに関しては制限が基本的にありません(一部は実際には有るようですが)、ファボも上限がありません。あと、注意点としては上限が無いからといって やり過ぎるとTwitterのアカウントが停止されます。
またファボはアプリを作ったTwitterのIDで行われます。
基本的に、このPHPファイルがある所にtwitteroauthを設置してオートローダーを呼出し、Twitter Applicationの情報を入れてやれば動くと思います。このファイルの実行はファイルをブラウザで開くか、コマンドから実行します。cronが使える環境でしたら定期的に実行させれます、Windowsの場合はタスクスケジューラで定期的に実行できます。ローカルサーバーでも使えるのでWindowsのPCにローカルサーバーを立ててタスクスケジューラで実行っていうのも出来ますのでレンタルサーバーとか無くても自動ファボBOTを扱うことが出来ます
自動リツートや、自動フォローも同じ感で作ることができます。


匿名
2016年7月現在、特定のキーワードが呟かれたらふぁぼるツールはありませんか?
TwitterApplicationは使えます。
androidスマホでお願いします。バージョンは5.0.2です。
お願いします
匿名
すみません、phpの知識は無いです