Twitterで片思いの人のfollowをはずすPythonコード

f:id:peroon:20091026194015j:image
ここで言う「片思い」とは、
あなたがfollowしているのに
相手はfollowしていない人をさします。


そういう人をまとめてfollowからはずすPythonコード
をここに書きます。


python twitterを導入している環境なら動くはずです。
Ubuntu Linuxで動作確認済みです。


remove.py

# -*- coding:utf-8 -*-

import twitter
import urllib2
import json

username = 'yourID'
password = '**********'

def getFollowers(screen_name=username):
  '''
  follwerのidをリストで返す
  '''
  url = "http://twitter.com/followers/ids/%s.json" % screen_name
  ids = urllib2.urlopen(url).read()
  return json.loads(ids)


def getFollowing(screen_name=username):
  '''
  followingのidをリストで返す
  '''
  url = "http://twitter.com/friends/ids/%s.json" % screen_name
  ids = urllib2.urlopen(url).read()
  return json.loads(ids)


def removeNonFollower():
  '''
  こちらはfollowしているけれど
  向こうはfollowしていない人の
  followを解除する
  '''
  api = twitter.Api( username, password )
  followerList = getFollowers()
  followingList= getFollowing()
  
  followerSet = set( followerList )
  followingSet= set( followingList )

  kataomoiSet = followingSet - followerSet #差集合
  kataomoiList= list( kataomoiSet )

  print 'follower num = ' + str(len(followerSet))
  print 'following num = ' + str(len(followingSet))
  print 'delete num = ' + str(len(kataomoiSet))
  
  for ID in kataomoiList:
    api.DestroyFriendship( ID )


def main():
  removeNonFollower()

if __name__ == '__main__':
  main()


上記のコードをremove.pyと名づけて保存します。
username, passwordは使用者のものに書き換えてください。
そして、ターミナルにて

python remove.py

と打てば「片思いfollowはずし」が完了します。


内部ではPythonのSetを使っています。
こちらがfollowしている人の集合をfollowingSetとし、
こちらをfollowしてくれる人の集合をfollowerSetとすると、
その「差集合」

kataomoiSet = followingSet - followerSet

が定義できます。
その集合のfollowをはずすようになっています。


動かしてみたところ、こちらをfollowしてくれている人の一部
のfollowまではずしてしまうようです。そこが許容できれば、
大体思ったとおりの動きをします。よろしければ参考にしてください。
※このコードを動かして被害が出たとしても責任はとりません

                                              • -

参考:setを使って、twitterの片思い、片思われ、両思いを取得する


英単語をつぶやくboteitantanのfollowing数が2000
に達したので、一度following数を下げるために
このコードを書きました。