twitter で 60 日以上発言が無い人を remove する

いつのまにやら Twitter に Follow 制限とか出来て
色々な人の発言が見たいのに Follow 追加出来なくなって
コンピュータの癖に人間様の処理能力に制限かけるんじゃねーよと
お怒りのみなさまこんにちは


オープンソースとバザールモデルの御祭に参加出来なくてさみしい僕ですが、
みなさんいかがおすごしですか?


そんなこんなで Twitter にむかついても
「サポートに連絡しても制限解除するつもりはネーYO!!」
と言われてしまいますし、
かといってむかついたままなのも精神衛生上良くないので
60 日以上発言の無いユーザを remove するスクリプト書きますた。


pit と simplejson が入ってれば動くはずですwwww

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sys, simplejson, urllib2, urllib
from pit import Pit

class TwitterClone(object):
    def __init__(self, user, passwd,url):
        self.user = user
        self.passwd = passwd
        self.url = url

    def post(self, text):
        text = text.encode('utf-8')
        self.getOpener().open(self.url + 'statuses/update.json',
                              urllib.urlencode({'status':text}))
        
    def destroyFriend(self,id):
        url = self.url + ('friendships/destroy/%s.json' % id)
        r = self.getOpener().open(url,{})
        data = simplejson.loads(r.read())
        return data

    def getTimeline(self):
        url = self.url + 'statuses/friends_timeline.json'
        r = self.getOpener().open(url)
        data = simplejson.loads(r.read())
        return data

    def getReplies(self):
        url = self.url + 'statuses/replies.json'
        r = self.getOpener().open(url)
        data = simplejson.loads(r.read())
        return data

    def getFriends(self,page=1):
        url = self.url + 'statuses/friends.json?' + urllib.urlencode({'page':page})
        r = self.getOpener().open(url)
        data = simplejson.loads(r.read())
        return data

    def getOpener(self):
        passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
        passman.add_password(None, self.url , self.user, self.passwd)
        authhandler = urllib2.HTTPBasicAuthHandler(passman)
        opener = urllib2.build_opener(authhandler)
        opener.addheaders = [('User-agent',
                              'TwitterCloneClient(http://d.hatena.ne.jp/jYoshiori/)')]
        return opener

if __name__ == '__main__':
    twitter_config = Pit.get('twitter.com',{'require' : {
        'user' : 'Your twitter name',
        'password' : 'Your twitter password'
        }})
    twitter = TwitterClone(twitter_config['user'],
                           twitter_config['password'],
                           'http://twitter.com/')
    import rfc822
    from datetime import datetime, timedelta
    from time import sleep

    lastMonth = datetime.now() - timedelta(days=60)
    wait = 45
    removeCount = 0
    print 'start'
    for index in range(1,1000):
        print 'page ' + str(index)
        friends = twitter.getFriends(index)
        if 0 == len(friends):
            break
        for user in friends:
            if user.has_key('status'):
                date = datetime(*rfc822.parsedate(user['status']['created_at'])[:7])
                if lastMonth > date:
                    print '%s is remov. last update %s' % (user['screen_name'],date)
                    twitter.destroyFriend(user['id'])
                    removeCount += removeCount
                    sleep(wait)
            else :
                print '%s is remov.' % user['screen_name']
                twitter.destroyFriend(user['id'])
                removeCount += removeCount
                sleep(wait)

        sleep(wait)
    print 'finish!!. %s remove' % str(removeCount) 

これまたむかつく API 制限に引っかからないように
sleep を 45秒 入れてますので、寝るまえにでも起動しておけば朝には終ってると思います。


ちなみに僕は
4800人くらい → 3286人
になりました。
コアリズムより効果大です!!

※ 効果は個人によって差があります。