13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

TwitterのAPIを利用してツイートの一括削除をしてみる

Last updated at Posted at 2020-05-06

#python-twitterで闇のツイートを消す

##きっかけ
友人から中学時代のツイートのスクショが送られ、懐かしいなーと思いつつ自分の過去ツイートを見返してみるとあまりにも酷かったので一括削除しようと思いました。本当に酷く痛々しいので載せられません。

ちょうど、TwitterのAPIを触ってみたいと思っていていい機会なのでツイート一括削除をやってみました。(黒歴史クリーナーを使うのは負けな気がした)

##API利用申請

以下のサイトから、TwitterのAPI利用申請をします。
https://developer.twitter.com/en/apps

承認までかかる時間は人それぞれのようですが、私は1回では申請が通らず、1ヶ月くらいかかりました。

##Twitterデータの取得
APIから取得できるデータは、1回3200件までとのことなので今回はTwitterデータをダウンロードし、そこからデータを参照します。
以下のURLから取得できます。

スクショ3.jpg

ダウンロードしたら、その中にあるJSONファイルを確認し、Twitterのデータがダウンロードできてるかを確認します。

1ツイートの情報は、以下のようにJSONファイルに書かれています。

tweet.json
{
  "tweet" : {
    "retweeted" : false,
    "source" : "<a href=\"http://twitter.com/download/iphone\" rel=\"nofollow\">Twitter for iPhone</a>",
    "entities" : {
      "hashtags" : [ ],
      "symbols" : [ ],
      "user_mentions" : [ ],
      "urls" : [ ]
    },
    "display_text_range" : [ "0", "52" ],
    "favorite_count" : "1",
    "id_str" : "1249886861201309697",
    "truncated" : false,
    "retweet_count" : "0",
    "id" : "1249886861201309697",
    "created_at" : "Tue Apr 14 02:27:04 +0000 2020",
    "favorited" : false,
    "full_text" : "nasneのHDDガリガリ音して本格的にやばいサポート終了してるから買い替えだけどいい代替製品あんのかな",
    "lang" : "ja"
  }
}

##ライブラリのインストール

python-twitterをpipを使用してインストールします。

pip install python-twitter

##削除コード

実際のPythonのコードです。
twitter.Api()には、承認後に作成するアプリのConsumer API keysAccess token & access token secretを書きます。

今回は、2016年より前の痛々しいツイートを消したいので、created_atが2016より小さいidを取得し、DestroyStatusに渡してあげます。

delete_tweets.py
import twitter
import json

tweet_json_path = 'resource/tweet.json'
json_open = open(tweet_json_path, 'r')
json_load = json.load(json_open)

api = twitter.Api(
    consumer_key='*****************',
    consumer_secret='*****************',
    access_token_key='*****************',
    access_token_secret='*****************'
)

for n in json_load:
    if int(n["tweet"]["created_at"][-4:]) < 2016:
        api.DestroyStatus(n["tweet"]["id"])

api.PostUpdates('2016年より前のツイート削除が完了 from Python')

あとは実行するだけです。
これで勉強しつつ、過去の闇を葬り去ることができました。

めでたしめでたし:blush:

13
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?