こんにちは、趣味Androidエンジニアのmomoritoです。
今回はPythonを利用して、自身の過去のツイート(黒歴史)を削除します。
事前に必要なもの
- Pythonの動作環境(筆者はPython3.8.1)
- Pythonを書くエディタのようなもの(筆者はVSCode)
- API_KEY,API_SECRET,TOKEN_KEY,TOKEN_SECRETの4つ
※本記事ではAPIキー類の取得方法は割愛します。「twitter api 取得」あたりでググると先人の記事がいっぱい出てきます。 - 自身の全Twitter履歴
※ツイートIDを手に入れるために必要です。「twitter 出力」あたりでググるとこれまた大量に記事が出てきます。
※ツイートIDを既に把握しているのであれば、全Twitter履歴は必要ありません。
※ツイートIDのみを抽出してCSV化[tweetList.csv] しています。(後述)
とりあえずコード
削除自体はapi.DestroyStatus(tweet)部で行っています。
削除に必要なツイートIDはCSVから読み込んでいます。
#適宜pip installしてね!
import twitter
import csv
# あんまりコードに大切なキーを直書きするのは宜しくないんですが、個人利用の範囲なので放っておきます。
CONSUMER_API_KEY ="あなたのAPI_KEY"
CONSUMER_API_SECRET ="あなたのAPI_SECRET"
ACCESS_TOKEN_KEY="あなたのTOKEN_EKY"
ACCESS_TOKEN_SECRET = "あなたのTOKEN_SECRET"
api = twitter.Api(
consumer_key=CONSUMER_API_KEY,
consumer_secret=CONSUMER_API_SECRET,
access_token_key=ACCESS_TOKEN_KEY,
access_token_secret=ACCESS_TOKEN_SECRET
)
# 以下のコードで削除。
with open('tweetList.csv',encoding='utf-8', mode='r') as f:
reader = csv.reader(f)
for tweet in reader:
# エラー時の処理停止回避用の try-except
try:
api.DestroyStatus(tweet[0])
print("削除 " + tweet[0])
except:
print("失敗 " + tweet[0])
# 終了の宣言
print("done")
(補足)DestroyStatus部分について
DestroyStatus()で任意のツイートIDを削除できます。
api.DestroyStatus(任意のツイートID)
ちなみにブラウザ上で個別にツイートIDを調べる方法は下記のとおり。
今回はツイートIDをCSVにまとめて突っ込んでいます。(これを作成するときに、削除しないツイートを取り除くことも可能)
1列目にただツイートIDを列挙するのみのシンプルなCSVです。
全Twitter履歴を取得したときにjson形式で出力されるので、上手くparseできればそのまま使えるのですが、私は何故か上手く行かなかったので、力技で処理しました。
ただ、CSV作成の際にツイートIDの桁数が膨大で手間取ったり…jsonのままで扱えるのであればそれが一番だと思います。
CSVへの力技の詳細はいつかまとめるかも?
最後に
今回はいわゆる黒歴史諸々を消し去るため+Pythonをイジるために書いてみました。
ただツイートを消すだけなら、黒歴史クリーナーなんかが有名ですし、ラクですね。
今回は概ね26,000ツイートを削除したため、プログラム自体も1時間半ぐらい動き続けて削除することができました。
これで炎上した際に過去をほじくり返されても安心ですね!