7億円当てるまで書き続けるブログ

石油王のみなさーん! お知恵拝借!

特定キーワードを含む過去のツイートを削除する

インターネットのオタクのみなさんこんにちは。今日もTwitterをしていますか?

我々のようなインターネット・ツイッター・オタクは、Twitterがないと死んでしまうことがあります。そんなTwitterでは今、凍結がブーム。皆さんカジュアルに凍結されておりますが、我々はアカウントが凍結されてしまうと生死に関わります。なぜなら我々はインターネット・ツイッター・オタクであるからです。

凍結の理由にはいろいろあるみたいなのですが、"殺す”だとか”死ね”だとかって投稿していると、それが他ユーザへの脅迫であるとして凍結されてしまうことがあるようです。長くインターネットを過ごしているといろいろとあるもので、そんな投稿をしていた人は少なくないと思います。そのような過去は削除して、クリーンなインターネットを目指していきましょう。

f:id:kiyooka:20171005001058j:plain
写真はSeriaで買ってきたTwitterっぽいキッチンタイマーです。

全ツイート履歴ダウンロード

まずは凍結の対象になりそうな投稿を探してみましょう。Twitterの設定ページから、全ツイート履歴ダウンロードをリクエストすることができます。

f:id:kiyooka:20171005001747p:plain:w300

リクエストしてしばらく待つと、ダウンロードページがメールで送られてきますので、ダウンロードし解凍します。tweets.csvというファイルにいままでのツイートがすべて記載されています。

f:id:kiyooka:20171005002554p:plain:w300

試しにgrepしてみると、ありました。犯罪計数オーバー200、執行対象です。慎重に照準を定め、対象を削除しましょう。

削除用スクリプト

このCSVファイルにはツイートのIDが含まれているので、それをURLに書き換えて、ブラウザで開いて、削除ボタンぽちっとすれば、削除できます。しかし我々伊達に10年もTwitterをやっていません。↑の画像はだいぶん削除したあとのものでして、本当は「殺す」でgrepしただけでも87行、「殺」だけであれば329行ありました。これをぽちぽち削除なんてやってられんので、雑にスクリプトを書きましょう。

まず適当にRubyを導入して、gem installでtwittercsvをインストールして下さい。説明は面倒なので書きません。

つぎにTwitterに削除用のアプリケーションを登録して、トークンを取得します。Twitter Application Managementを開いて、Create New Appをしましょう。

f:id:kiyooka:20171005014547p:plain:w300

べつに公開するアプリではないので適当に入力して大丈夫です。なお、アカウントに電話番号が登録されていないとここまで進めないので、電話番号は登録しておきましょう。

Create your Twitter applicationすれば、アプリ登録完了です。Keys and Access TokensからCreate my access tokenして、トークンを取得しましょう。

f:id:kiyooka:20171005015851p:plain:w300

あとはこんなん書いて、トークンとかパターンとかを適宜変更して、実行すれば良いんでないかと思います。

require "twitter"
require "csv"

client = Twitter::REST::Client.new do |config|
  config.consumer_key        = "xxx"
  config.consumer_secret     = "xxx"
  config.access_token        = "nnn-xxx"
  config.access_token_secret = "xxx"
end

puts client.user.screen_name
puts client.user.tweets_count

tweets = CSV.read("tweets.csv")
tweets.each do |tw|
  if korosuke = tw[5].match(/(殺す|korosu)/)
    puts "###################"
    puts tw[0]
    puts tw[3]
    puts tw[5]
    puts "------------"
    begin
      status = client.status(tw[0])
      puts status.uri
      client.destroy_status(tw[0])
      puts "削除しました"
    rescue Twitter::Error::NotFound
      puts "削除済みっぽわね"
    rescue Exception => e
      puts "何かエラー?"
    end
  end
end

こんな感じで動きました。ブログ書くの途中で飽きました。

poncan% ruby ./korosuke.rb 
kiyooka
0000000
###################
00000000000000000
2016-02-14 12:39:19 +0000
虫を発見次第殺すことが葉物野菜収穫への近道じゃ
------------
https://twitter.com/kiyooka/status/00000000000000000
削除しました
###################
00000000000000000
2015-10-05 13:41:20 +0000
結局殺すんか~~い
------------
https://twitter.com/kiyooka/status/00000000000000000
削除しました
###################
...以下略...

これからは、過去なんて振り返らず、未来に向かってインターネットしていきましょう。ネチケットおじさんとの約束です(今回のオチ)。