Python
Twitter
python3

PythonでTwitter腐女子ブロッカーを作ってみた①

More than 1 year has passed since last update.

概要

私はロードレース大好きなので、ここ数年Twitterで公式タグ「#TDF」を追っているだけで腐女子様のTweetが引っかかってくるという現象に悩まされていました。TDFは終わりましたが、ブエルタの前に、腐女子様をあらかじめブロックするコードをPythonで書いたので共有させていただきます。

Twitter認証

こちらを参考に、Consumer key、Consumer secret、Access token、Access token secretを取得。

コーディング

こちらを参考に、腐女子様的ワードをひねり出してコーディング。

ロジック

  1. 今回はロードレース観戦を快適にしたいので、まず、「弱虫ペダル」でTwitter検索をかけます。
  2. 引っかかってきたTweetについて、Tweet主の名前とプロフィールを確認。
  3. 名前かプロフィールに「腐女子様的ワード」が入っていたらブロックします。

コード

一夜漬けコード。

config.py
CONSUMER_KEY = "XXXX"
CONSUMER_SECRET = "XXXX"
ACCESS_TOKEN = "XXXX"
ACCESS_TOKEN_SECRET = "XXXX"
main.py
# -*- coding: utf-8 -*-

import json, config
from requests_oauthlib import OAuth1Session

CK = config.CONSUMER_KEY
CS = config.CONSUMER_SECRET
AT = config.ACCESS_TOKEN
ATS = config.ACCESS_TOKEN_SECRET
twitter = OAuth1Session(CK, CS, AT, ATS)

url = "https://api.twitter.com/1.1/search/tweets.json"
url_block = "https://api.twitter.com/1.1/blocks/create.json"
url_prof = "https://api.twitter.com/1.1/users/show.json"
NG_WORDS = 'BL', '腐', '厨', 'CP', 'コス', 'cos', 'グッズ', 'bot', '成人済'

params = {'q':'弱ペダ','count': 10, 'result_type' : 'recent'}
req = twitter.get(url, params = params)

if req.status_code == 200:
    search_timeline = json.loads(req.text)
    print(req.text)
    for tweet in search_timeline['statuses']:
        name = tweet['user']['name']
        screen_name = tweet['user']['screen_name']
        description = tweet['user']['description']
        L = name+description
        print(L)
        if any(ng_word in L for ng_word in NG_WORDS):
            print("腐")
            print('----------------------------------------------------')
            params2 = {'screen_name': screen_name}
            twitter.post(url_block, params = params2)
        else:
            print("not腐")
            print('----------------------------------------------------')
else:
    print("ERROR: %d" % req.status_code)

今後の改善点

  1. どこかのサーバーにおいて定期的にブロッカーを動かすコードへの変換
  2. はじくためのキーワードを入力するUIの作成
  3. ブラウザで動くサービスとしての提供

最後に

改善でき次第こちらにUpしていきたいと思います。(なのでタイトルに①がついています)
お手伝いしてくださる方大歓迎です。よろしくお願いいたします。