Edited at

めんどくさいおじさんをブロックするプログラムを書いた

More than 1 year has passed since last update.

暇だったので書いてみた。


経緯

Twitterにて。


Togetterもあった。

プロフィールに「面白きことのなき世を面白く」は即ブロックで問題なし。インターネットの歴史20年の学びです。- Togetter


使うもの

今回もVPSのDebianを使いました。適当に構築してください。


Tweepyのインストール

皆さんご存知のTwitterAPIをPythonから使えるようにするためのライブラリ。

Githubにもあるので書く必要ないですが一応。


pipの場合

sudo pip install tweepy



ソースからインストールする場合

git clone https://github.com/tweepy/tweepy.git

cd tweepy
sudo python setup.py install


ツイプロ検索APIについて

公式のTwitterAPIではbioの取得はできますが、bioからの検索ができないっぽい(?)

さすがにすべて取得して検索は面倒なのでツイプロのAPIを使用します。

このAPIに検索ワードを投げると、公式のAPIと同じようにユーザ情報がJSON形式で返ってきます。

bioのみを検索するのかと思いましたが、挙動を見る感じユーザ情報全体を検索してデータが返ってくるようです。(つまりbioに指定の単語が入っていなくても、スクリーンネームに入っていると引っかかる。)

あとこのAPIの取得件数が最大300件で、公式APIのように一度の問い合わせに対する最大取得件数ではなく上限300件の模様。

なので300件を超える場合には対応できなくなるかも。(取得件数は見れるので300件を超えているかどうかは分かる)


TwitterAPIの取得

このサイトがわかりやすい。


プログラム

APIkeyなんかは適宜書き換えてください。


block.py

#coding:utf-8

import tweepy
import json
import urllib2
import urllib

#各種キーの設定
CONSUMER_KEY = "xxxxxxxxxxxxxxxxxxxxx"
CONSUMER_SECRET = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET)
ACCESS_TOKEN = "xxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
ACCESS_TOKEN_SECRET = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

#リクエストURLの設定
params = {
#検索ワード(必要に応じて変更)
"q":"面白きことのなき世を面白く",
#取得数(最大300)
"num":300,
}
p = urllib.urlencode(params)
url = 'https://twpro.jp/1/search?' + p

#JSONの整形
r = urllib2.urlopen(url)
root = json.loads(r.read())
user = root['users']
count = root['count']

#APIインスタンスの作成
api = tweepy.API(auth)

#取得できた人数分ブロック処理
for i in range(count):
user_name = user[i]['name']
screen_name = user[i]['screen_name']

#ブロック
api.create_block(screen_name)

#完了メッセージ
print u"%s(%s)さんをブロックしました。" % (user_name,screen_name)



他にも・・・

togetterを見ると、他にもあるらしい。

ソースコード内のparamsの検索ワードを変えることで対応できます。


  • "のらりくらり"

  • 一人称が小生

  • 性別:生物学上は◯性

  • "日本をこよなく愛する"

  • "普通の日本人"

  • "普通のおっさん"

  • "貴女"

  • "ただの日本人です"

  • "◯◯なナマモノ"


あとがき

次はナイーブベイズとかでやりたいです。