【问题标题】:tweet.favorited returns false tweepy even the tweet is favorited即使推文被收藏, tweet.favorited 也会返回 false tweepy
【发布时间】:2017-04-12 13:03:18
【问题描述】:

我想收藏尚未发布的用户推文。同样,我写了以下内容:

     try:
        tweets = api.user_timeline(screen_name = handleSubmit,count=retweetCount)
        for tweet in tweets:
            if not tweet.favorited:
                print tweet
                api.create_favorite(tweet.id)
            if not tweet.retweeted:
                api.retweet(tweet.id)
    except Exception as e:
        raise e

但是,在某些情况下tweet.favorited 会返回 false,即使已经收藏了推文,也会导致以下错误:

[{u'message': u'You have already favorited this status.', u'code': 139}]

我在这里做错了什么?

【问题讨论】:

    标签: python django twitter tweepy


    【解决方案1】:

    假设您没有在 api 实例中设置缓存 (cache!=None):

    class API([auth_handler=None][, host='api.twitter.com'][, search_host='search.twitter.com'][, cache=None][, api_root='/1'][, search_root=''][, retry_count=0][, retry_delay=0][, retry_errors=None][, timeout=60][, parser=ModelParser][, compression=False][, wait_on_rate_limit=False][, wait_on_rate_limit_notify=False][, proxy=None])
    

    它可能是 twitter 的缓存,我怀疑的东西,或者调用返回重复的 id。尝试打印所有推文 id 以检查所有推文是否不同,并检查 api.create_favorite(tweet.id) 后收藏的属性是否发生变化。

    顺便说一句,推文(状态模型)有一个内置的方法来收藏自己。您可以执行 tweet.favorite() 来收藏推文。

    class Status(Model):
    ...
        def favorite(self):
            return self._api.create_favorite(self.id)
    

    【讨论】:

      【解决方案2】:

      我还不确定这是 Twitter 的 API 还是 Tweepy 的包装器的问题,但它似乎与缓存无关。一种解决方法是在实际调用 create_favorite 方法之前对方法 statuses_lookup 进行额外调用,该方法会正确返回喜爱的属性。但是,这种方法比仅仅抛出错误效率低,因为当推文没有被收藏时,您会进行两次 API 调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-14
        • 1970-01-01
        相关资源
        最近更新 更多