Twitter REST APIを使って、お気に入りやリツイートの少ない過去のツイートを自動削除する「Twitter TL Awesome」というツールをテキトーに作ったので(名前はどうでもいい)、デベロッパー向けにご紹介します。
Twitter TL Awesomeでは、
- 指定したIDより過去に投稿された、
- 指定した数のツイートの中で、
- 指定した値よりもお気に入りが少ない、
- かつ指定した値よりもリツイートが少ない
このようなツイートを自動で削除することができます。
REST APIの利用には、おそらく最も有名なPHPライブラリであるabraham/twitteroauthを使用します。
GitHubから事前にダウンロードしておいてください。
適当なTwitterアプリケーションをTwitter Application Managementから作成し、コンシューマーキー、コンシューマーシークレット、アクセストークン、アクセストークンシークレットを取得してください。
アクセストークンとアクセストークンシークレットについては、管理者であれば自分のものを同アプリケーション管理ページから簡単に発行することができます。
tlawesome.php
以下のコードにライブラリへのパス(1行目)や取得したキー等(9〜12行目)を反映してください。
require_once('/path/to/twitteroauth.php');
ini_set('display_errors', 1);
error_reporting(E_ALL & ~E_STRICT);
mb_internal_encoding('UTF-8');
mb_regex_encoding('UTF-8');
mb_language('Japanese');
define("CONSUMER_KEY", "yourconsumerkey");
define("CONSUMER_SECRET", "yourconsumersecret");
define("ACCESS_TOKEN", "youraccesstoken");
define("ACCESS_TOKEN_SECRET", "youraccesstokensecret");
if( empty($_POST['run']) || empty($_POST['max_id']) || empty($_POST['count']) || empty($_POST['min_fav']) || empty($_POST['min_rt']) ){
$d = '$';
echo <<< EOD
<!doctype html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
</head>
<body>
<h1>Twitter TL Awesome</h1>
<p>DELETE FROM your_tweets WHERE id < {$d}max_id AND fav < {$d}min_fav AND rt < {$d}min_rt LIMIT {$d}count;</p>
<form action="tlawesome.php" method="post">
<p><label>MAX ID: <input type="text" name="max_id" size="32" value="999999999999999999" /></label><br />
<label>COUNT: <input type="text" name="count" size="16" value="100" /></label><br />
<label>MIN FAV: <input type="text" name="min_fav" size="10" value="1" /></label><br />
<label>MIN RT: <input type="text" name="min_rt" size="10" value="1" /></label></p>
<p><input type="hidden" name="run" value="1" /><input type="submit" value="CLEAN UP" /></p>
</form>
</body>
</html>
EOD;
exit;
}
if( !is_numeric($_POST['max_id']) || !is_numeric($_POST['count']) || !is_numeric($_POST['min_fav']) || !is_numeric($_POST['min_rt']) ){
trigger_error("Only numeric value allowed.", E_USER_ERROR);
}
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET);
$tl = $connection->get('statuses/user_timeline', array(
"count" => intval($_POST['count']),
"max_id" => intval($_POST['max_id']),
"trim_user" => true
));
echo '<html><head></head><body><pre>';
foreach($tl as $post){
var_dump($post);
if( $post->favorite_count < intval($_POST['min_fav']) && $post->retweet_count < intval($_POST['min_rt']) ){
echo "\n\n#### DELETE ####\n\n";
var_dump($connection->OAuthRequest("https://api.twitter.com/1.1/statuses/destroy/{$post->id}.json", "POST" , array()));
sleep(1);
}
echo "\n\n\n\n";
}
echo count($tl)."</pre></body></html>";
REST APIのパラメータは公式ドキュメントも参考にしてみてください。
自分のアカウントでは散々使用していますが、お使いの際は自己責任でお願いします。


この記事へコメントする
※承認制のため、即時には反映されません。