ツイートを一括削除するプログラム

@iPadTaxibot の過去ログを削除するために使用した自作スクリプトです。

Twitterアプリからツイート履歴のダウンロードを要求すると、数分後にダウンロード先のURLが送られて来ます。取得した圧縮ファイル内に tweet.csv というファイルがあり、この1行目にある Tweet ID を元に Twitter APIで1件ずつ削除するというスクリプトを作りました。

以下がソースコードですが、青字部分はカスタマイズして使う必要があります。

<?php try {

// Parameters
$c_key = "(登録したアプリケーションのアプリキー)";
$c_sec = "(登録したアプリケーションの秘密鍵)";
$a_tok = "(実行するアカウントのアクセストークン)";
$a_sec = "(実行するアカウントの秘密鍵)";

error_reporting(E_ALL & ~E_NOTICE);

// oauth library import
require_once("../lib/twitteroauth/twitteroauth.php");

// target tweets.csv file
$filepath = "../etc/tweets.csv";

// certification
$to = new TwitterOAuth($c_key, $c_sec, $a_tok, $a_sec);

$file = new SplFileObject($filepath); 
$file->setFlags(SplFileObject::READ_CSV);

$i = 0;
foreach ($file as $line) {

  $i += 1;
  if(! is_null($line[0])) {

    // get tweet id
    $id = $line[0];

    // delete tweet status
    $req = $to->OAuthRequest(
      "https://api.twitter.com/1.1/statuses/destroy/".$id.".json",
      "POST",
      array()
    );

    // checking error status
    $del = json_decode($req);
    if($del->errors) {
      $ans = $del->errors[0]->message;
    } else {
      $ans = "deleted";
    };

    // result output
    $dt = date("Y/m/d H:i:s");
    echo sprintf("%06d",$i);
    echo " - ";
    echo $dt;
    echo " - ";
    echo $id;
    echo " - ";
    echo $ans;
    echo "\n";

  };
};

// Error Handling
} catch (Exception $e) {
  if ($e->getMessage()) {
    echo ($e->getMessage());
  };
};

?>