twitterlibをアクティビティに対応させた
twitter webのUIが変更されて、「アクティビティ」というタブが追加されました。フォロワーのfavoriteやretweetなどのイベントを通知してくれます。
chromeのコンソールなどでアクセスしているURLを調べてみると、
/i/activity/about_me.json
/i/activitt/by_friends.json
がアクティビティに関するAPIのようです。おそらく、about_meが自分自身のアクティビティ、by_friendsがフォロワーのアクティビティでしょう。
そこまでわかったので、twitterlibをプロキシに対応させるついでに、アクティビティのAPIをサポートしました。
こんなサンプルでアクティビティを取得できます。
# coding: utf-8 # ref: https://dev.twitter.com/discussions/3606 import twitterlib ckey = 'consumer key' csec = 'consumer secret' class ActivityHandler(twitterlib.PollingHandler): def __init__(self, api): super(ActivityHandler, self).__init__(api) def callback(self, status): if status.action == 'follow': ss = map(lambda s: s.screen_name, status.sources) ts = map(lambda s: s.screen_name, status.targets) elif status.action == 'favorite': ss = map(lambda s: s.screen_name, status.sources) ts = map(lambda s: s.user.screen_name, status.targets) elif status.action == 'retweet': ss = map(lambda s: s.screen_name, status.sources) ts = map(lambda s: s.user.screen_name, status.targets) else: # list_member_added etc.. return print '%8s %35s%s %35s%s' % (status.action, ','.join(ss[:3]), ['', '..'][len(ss) > 2], ','.join(ts[:3]), ['', '..'][len(ts) > 2]) auth = twitterlib.TwitterOAuth(ckey, csec, True) api = twitterlib.API(auth, proxies=None) api.auth() act = twitterlib.PollingAction(api, ActivityHandler, apitype='activity/by_friends') act.start()
実行結果は他のアカウントのアレなのでここでは載せません。実行する場合はご自身のアカウントでどうぞ。