2
5

More than 3 years have passed since last update.

Twitter 誹謗中傷撃退マシン

Posted at

昨今度々話題に上がるSNSの誹謗中傷
中には自殺者まで出すケースがあります。
なので今回はそんな人をテクノロジーの力で救いたいということで一肌脱ぎました。

もちろんTwitter APIさんに協力を仰ぎます。
では、行ってみましょう!!!

ちなみにAPIとは

「API」とは、「Application Programming Interface」の頭文字です。

インターフェイスとは、コンピュータ用語でいうと、「何か」と「何か」をつなぐものという意味を持ちます。例えば、USBも「パソコン」と「周辺機器」をつなぐものですので、インターフェイスの一つです。

つまり、APIとは、この「何か」と「何か」が「アプリケーション、ソフトウェア」と「プラグラム」をつなぐもの、という意味になります。

APIとはソフトウェアやアプリケーションなどの一部を外部に向けて公開することにより、第三者が開発したソフトウェアと機能を共有できるようにしてくれるものです。USBは外部デバイスとパソコンを繋ぐインターフェースですが、APIはソフトウェア同士を繋げます。つまり、異なるソフトウェアやサービス間で認証機能を共有したり、チャット機能を共有したり、片方から数値データを取り込み、別のプログラムでそのデータを解析したりできるようになります。

APIを公開する、とはわかりやすく言うと、ソフトウェアにAPIという外部とやりとりする窓口を作り、外部アプリとコミュニケーションや連携ができる状態にする、ということです。鎖国時代の日本と諸外国は連携することが困難でしたが、諸外国との貿易を許されていた唯一の場所である長崎の出島をうまく活用することで、日本との貿易や文化交流、情報交換が行えるようになった、という歴史の話がありますが、日本を一つのソフトウェア、諸外国をまた別のソフトウェアと考えると、出島が司っていたのが言ってみればその二つを繋げるAPI機能です。

TwitterのAPIキーを取得しよう

何をするにしてもまずAPIキーを取得しないといけません。窓口を使うための許可書みたいなもんですね。
ここが一番の山です。これさえ乗り切ればあとはコピペのみ、頑張りましょう。

APIキー取得方法

取得方法は度々変わるのですがこれが2020年版です。
2020年度版 Twitter API利用申請の例文からAPIキーの取得まで詳しく解説
このサイトが一番わかりやすかったです。

誹謗中傷撃退プログラムを作ろう

今回はPythonを使います。
まずAPI認証のため、Requests-OAuthlibというライブラリを用いる。
まー、窓口に入る前にいる警備員的なやつかな。

pip install requests requests-oauthlib

ついにコードです。コピペしてください。

# coding=utf-8

import json
from requests_oauthlib import OAuth1Session

# 認証処理
CK = 'あなたのAPIキー'
CS = 'あなたのAPIシークレットキー'
AT = 'あなたのアクセストークン'
ATS = 'あなたのアクセストークンシークレット'
twitter = OAuth1Session(CK, CS, AT, ATS)

# ツイート検索エンドポイント
url = 'https://api.twitter.com/1.1/search/tweets.json'
# ユーザーブロックエンドポイント
url2 = 'https://api.twitter.com/1.1/blocks/create.json'
# 誹謗中傷の対象となる文言
bad_words = ['バカ', 'アホ', 'たわけ']

for bad_word in bad_words:
    # エンドポイントへ渡すパラメーター
    keyword = '@@downtownakasiya '  # リプライされたアカウント
    keyword += bad_word
    keyword += ' exclude:retweets'  # RTは除外

    params = {
        'count': 50,  # 取得するtweet数
        'q': keyword,  # 検索キーワード
    }
    req = twitter.get(url, params=params)

    if req.status_code == 200:  # うまくいった時の処理
        res = json.loads(req.text)
        for line in res['statuses']:
            params2 = {'user_id': line['user']['id']}  # ブロックするユーザー
            req2 = twitter.post(url2, params=params2)

            if req2.status_code != 200:
                print("Failed2: %d" % req2.status_code)
    else:  # うまくいかなかった時の処理
        print("Failed: %d" % req.status_code)

# 注意:Twitter APIは1週間以上前のリプを検索ヒットさせることができない

このコードを「twitter.py」とかで保存して、コマンドで

python twitter.py

と叩けばあっという間に誹謗中傷コメントは非表示に、やったー

総括

どんな悪口が傷つくかは本人が一番わかってるので誹謗中傷の対象となる文言は自分で選べるようにしました。
このプログラムが少しでも世の中に役立つことを切に祈ってます。

ちなみにこれが私のTwitter垢です。気軽にメッセージどうぞ!
https://twitter.com/downtownakasiya

2
5
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
2
5