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人
になりました。
コアリズムより効果大です!!
※ 効果は個人によって差があります。