0
0

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.

自分のツイート全部消す

Posted at

はじめに

たまに、無性に坊主にしたくなる。そんな気持ちで自分のツイートを全部消したくなりました。

ツイート削除ツールは色々あります。しかし、APIの都合で一定件数以上消せなかったり、有料会員になる必要があったり、自分の環境で上手く動かなかったりして、自分で用意することにしました。

なお、Twitter APIもPythonも初めて触ったため、定石から外れた使い方があるかもしれません。参考にする場合は自己責任ということでひとつ、お願いします。

やること

自分のTwitterアカウントのツイートを全部消す。

環境

OS:Windows 10
言語:Python3.8.3

手順

1. Twitter APIの利用申請

こちらのサイトを参考に、利用申請を行いました。
https://www.itti.jp/web-direction/how-to-apply-for-twitter-api/
https://qiita.com/kngsym2018/items/2524d21455aac111cdee

ツイートを削除したいアカウントで申請します。申請を行うと、すぐメールが届きました。メール内のアドレス確認をクリックするとダッシュボードを使えるようになり、アプリ情報を作成できます。参照した記事では、使用内容確認のやりとりをされたみたいですが、僕はそういったものはなかったです。アプリの使用意図が「学習と自分のツイート消す」というだけだったからかもしれません。拙い英語でも問題なく申請が通りました。

2. Pythonのインストール

自分の環境に合うものをDLしてインストールしました。
https://www.python.org/downloads/windows/

3. ライブラリのインストール

コマンドプロンプトを開き、ライブラリをインストールします。

py -m pip install python-twitter

環境変数Pathに以下の2つを追加しました。順序が逆ですね。

[インストール先]\Python38
[インストール先]\Python38\Scripts

4. ツイートデータの取得

Twitterのアカウントから、ツイートデータのアーカイブを取得します。
手順はこちらのサイトにわかりやすく書いてありました。
https://passion-blue.com/twitter-account-backup

取得したアーカイブを解凍すると、dataディレクトリの中にtweet.jsがあります。json形式とするため、開いて、1行目「window.YTD.tweet.part0 = 」を削除して、tweet.jsonとして別名保存しました。(単なる個人ツールですし、滅多に使う機会もないでしょうし、このへんは人力でサクッとやっちゃいます。)

5. スクリプトの作成

# -*- coding: utf-8 -*-

import twitter
import json
import signal

# 途中でCtrl + Cで止められるようにするための記述
signal.signal(signal.SIGINT, signal.SIG_DFL)

# Twitter APIを利用するための情報
api = twitter.Api(
    consumer_key='YOUR_CONSUMER_KEY',
    consumer_secret='YOUR_CONSUMER_SECRET',
    access_token_key='YOUR_ACCESS_TOKEN_KEY',
    access_token_secret='YOUR_ACCESS_TOKEN_SECRET'
)
screen_name = 'YOUR_TWITTER_ID'

# jsonファイル読み込み
json_open = open('tweet.json', 'r', encoding="utf-8_sig")
json_load = json.load(json_open)

for v in json_load:
    try:
        # IDを指定して削除する
        api.DestroyStatus(v['tweet']['id'])
        print("delete:" + v['tweet']['id'])
    except:
        # すでに削除済みであるなどして削除に失敗した場合
        print("error :" + v['tweet']['id'])

こちらの記事を参考にさせていただきました。
https://qiita.com/aeas44/items/a5b82da69b64b32aada4
https://qiita.com/junkoda/items/50ca8604ecbb04e9f772

トークン類は、Twitter Developersのアプリ -> Details -> Keys and tokens で参照できます。

6. スクリプトの実行

4.で作成したtweet.jsonを、スクリプト(app.py)と同じディレクトリに配置して実行します。

python app.py

削除したIDと失敗したIDが順々にコンソールに吐き出されます。ちゃんと時間を計測していなかったので感覚値ですが、秒間数ツイートペースで、約1万ツイート削除に1時間前後かかったと思います。

余談

最初、消したいTwitterアカウントとは別のアカウントでトークンを取得したため、実行時に"You may not delete another user's status."となってしまいました。なので、ツイートを削除したいアカウントで再取得しました。そりゃそうか…という感じですが、有料の削除ツールなどはどうやって申込者のツイート削除を実現しているんだろう…? Twitter認証行えばうまいことできるのかもしれないですね。ともかく目的は達成されました。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?