ツイートを一気に消そうと思って黒歴史クリーナーを使ってみたら、API制限のせいかあまり消せなかった。
仕方ないので、APIを叩いて自分で消すことにした。
用意するものは3つ。
- Pythonとtwitterライブラリ
-
- 設定画面から申請できる
- ダウンロードしたデータの中に
tweet.js
があるので、これを使う help.twitter.com
こちらのサイトをベースにさせていただき、日付を指定する機能だけ追加した。
qiita.com
以下のコードでは、2022年8月1日まで投稿されたツイートを削除する。
時間をUNIX形式に変換して比較している。
import datetime import json import twitter end_time = "2022/08/01" # この日までに投稿されたツイートを削除する unix_end_time = datetime.datetime.strptime(end_time, "%Y/%m/%d").timestamp() CK = **** CS = **** AT = **** ATS = **** api = twitter.Api( consumer_key=CK, consumer_secret=CS, access_token_key=AT, access_token_secret=ATS, sleep_on_rate_limit=False, ) with open("tweet.js", encoding="utf-8", mode="r") as f: tweet_json = json.load(f) for tweet in tweet_json: tweet_time = tweet["tweet"]["created_at"] unix_tweet_time = datetime.datetime.strptime( tweet_time, "%a %b %d %H:%M:%S %z %Y" ).timestamp() if unix_tweet_time < unix_end_time: try: api.DestroyStatus(tweet["tweet"]["id"]) except Exception: pass
teet.js
にはふぁぼ数やリプライの有無の情報もあるので、Lambdaにデプロイして定期実行すれば「誰からもふぁぼられずリプライもされなかったツイートを3日後に削除する」というような運用もできる。
Lambdaで実行するときはAPIキーはベタ打ちせず環境変数等を使うのが望ましく、またタイムゾーンが日本と違うことに留意する必要がある。