python-twitterのGetFriends()では、上から100人までのフォロイー(フォローしているユーザ)しか取得できない。
Twitterでは100人を1ページとして格納しているらしく、その最初の1ページが返ってくるのである。
しかし、TwitterAPI仕様書によると、ページのカーソルを指定することで他のページも取得できるとのこと。
そこで、twitter.pyのGetFriends()を以下のように変更。
これで、フォロイー全員分を一度に取得できる。
def GetFriends(self, user=None, cursor=-1): '''Fetch the sequence of twitter.User instances, one for each friend. The twitter.Api instance must be authenticated. Args: user: The twitter name or id of the user whose friends you are fetching. If not specified, defaults to the authenticated user. [Optional] Returns: A sequence of twitter.User instances, one for each friend ''' if not user and not self._oauth_consumer: raise TwitterError("twitter.Api instance must be authenticated") user_list = [] while cursor != 0: url = '%s/statuses/friends/%s.json?cursor=%d' % (self.base_url, user, cursor) parameters = {} parameters['cursor'] = cursor json = self._FetchUrl(url, parameters=parameters) data = self._ParseAndCheckTwitter(json) cursor = data['next_cursor'] for x in data['users']: tmp = User.NewFromJsonDict(x) if tmp.protected == False: user_list.append(tmp) return user_list