2016-11-28 38 views
2

我想收到推文,哪位用戶尚未發送推文。出於同樣的,我寫了以下內容:tweet.favorited返回false tweepy即使tweet被收藏

 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}] 

我在做什麼錯在這裏?

回答

0

假設你不設置的API實例的高速緩存(CACHE =無!):

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以檢查所有推文是否不同,並檢查偏好屬性是否發生變化。

順便說一句,推文(狀態模型)有一個內置的方法來收藏自己。您可以執行tweet.favorite()來收藏推文。

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

我還不確定如果這是Twitter的API或Tweepy的包裝的問題,但它似乎並沒有與緩存相關。解決方法是在實際調用create_favorite方法之前,對方法statuses_lookup進行額外的調用,該方法會正確返回正在使用的屬性。但是,這種方法的效率低於拋出錯誤,因爲當推文未被收錄時,您會進行兩次API調用。

相關問題