Tweepy让转发者返回最多100

时间:2018-01-28 14:21:25

标签: python rest twitter tweepy

我正在使用Tweepy获取特定推文的所有转发者。我的代码如下:

for reTweet in api.retweets(<tweet_id>,100):
      print reTweet

我尝试使用tweepy游标使用分页,如下所示:

for status in tweepy.Cursor(api.retweets, <tweet_id>).items():

但它正在显示

  

引发TweepError(&#39;此方法不执行分页&#39;)

如何使用Tweepy API获取推文的所有转发者?

2 个答案:

答案 0 :(得分:1)

如果您查看GET statuses/retweets/:id的Twitter文档,您会看到它:

  

返回id参数指定的Tweet的最近次转发的集合。

如果您检查tweepy code,您会看到您正在使用的功能使用该API。

    def retweets(self):
    """ :reference: https://dev.twitter.com/rest/reference/get/statuses/retweets/%3Aid
        :allowed_param:'id', 'count'
    """
    return bind_api(
        api=self,
        path='/statuses/retweets/{id}.json',
        payload_type='status', payload_list=True,
        allowed_param=['id', 'count'],
        require_auth=True
    )

你可以做些什么来获得超过100转推的限制,如果它是一个仍然被转发的推文就是多次调用该函数,只要你尊重速率限制,并存储每次调用的唯一结果。

如果推文在开始跟踪之前被转发超过100次,您将无法获得较旧的转推。

答案 1 :(得分:0)

您需要使用 tweepy.Cursor 才能使用分页:

def get_retweeters(tweet_id: int) -> List[int]:
        """
        get the list of user_ids who have retweeted the tweet with id=tweet_it
        :param tweet_id: id of thetweet to get its retweeters
        :return: list of user ids who retweeted the tweeet
        """
        result = list()  # type: List[int]

        for page in tweepy.Cursor(api.retweeters, id=tweet_id, count=500).pages():
            result.extend(page)

        return result

这对我有用,python 3.7.7,tweepy 3.10.0