このブログを検索

2016/03/21

block解除時にブラックリストをチェックする

twitterでブロックしたアカウントのブロックを解除するスクリプトを、
毎日動かしている。

私のブロックは本当に迷惑だと感じてするよりも、
フォローしたけどつまらないから外すときにする。

ただフォローをはずすだけならフォローをやめればいいのだが、
ボットとか、フォローされたらすぐフォロー返しする人などの場合、
相手のフォローだけ残ってしまう。

それがいやなのでブロックしている。

しかし、本当にウザい広告とかは永遠にブロックしておきたいので、
ブラックリストを作ってそこに含まれるアカウントはブロック解除しないようにした。


----
import tweepy

consumer_key = 'xxxxxxxxxxxxxx'
consumer_secret = 'xxxxxxxxxxxxxxxx'
access_key = 'xxxxxxxxxxxxxxxxxxx'
access_secret = 'xxxxxxxxxxxxxxxx'

auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth_handler=auth)
results = api.blocks()

file =open("blacklist.txt").readlines()
blacklist=[]
for line in file:
    line=line.strip("\n")
    blacklist.append(line)

for result in results:
 if result.screen_name in blacklist:
    print 'In black list: ',result.screen_name
 else:
  print 'unblocking ',result.screen_name,'....'
  api.destroy_block(result.id)
----

blacklist.txt というファイルを作って、
ブロックしておきたいアカウント名を改行で区切って書いておく。

それを読んでリストにいれて、
unblockするときにそのリストに含まれていなければ、という条件をつける。

listにappendするときに \n をstripしないとリストの要素に改行文字が含まれてしまう。
そこは改行文字は無視してくれよと思う。
perlはそんなことしないでもバスっとかんたんにリストに読めたような記憶があるが・・・



これを作った後でおもったのだが、
今回はブラックリストを静的につまり手で書いて作ったが、
今後はblockしたアカウントを記録して回数を数えて、
閾値を決めて3回ブロックしたものはunblockしない、
とかしたい。