>

Twitter APIからFavやRtの少ない過去のツイートを自動削除する

Twitter APIからFavやRtの少ない過去のツイートを自動削除する

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のパラメータは公式ドキュメントも参考にしてみてください。

自分のアカウントでは散々使用していますが、お使いの際は自己責任でお願いします。

おすすめ記事ランダム

この記事へコメントする

名前
メールアドレス
コメント

※承認制のため、即時には反映されません。