2016-11-28 5 views
2

트윗은 아직 트위터에 올리지 않았습니다. tweet.favorited false를 반환 어떤 경우에는tweet.favorited false tweepy 심지어 트윗이 선호됩니다

 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 

그러나이, 트윗가 이미 즐겨 찾기 경우에도 다음과 같은 오류로 이어지는 :

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

내가 잘못 여기서 뭐하는 거지 같은, 나는 다음과 같은 썼다?

답변

0

당신이 API를 인스턴스의 캐시 설정되지 않은 가정 (캐시 = 없음!) :

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

그것은 트위터의 캐시 될 수 것은 내가 의심하거나 전화를 반복 ID를 반환된다. 모든 트윗 ID를 인쇄하여 모든 트윗이 다른지 확인하고 api.create_favorite(tweet.id) 후 선호 속성이 변경되었는지 확인하십시오.

그런데 트윗 (상태 모델)은 자체적으로 좋아하는 내장 된 방법을 가지고 있습니다. 트윗을 마음에 드는 tweet.favorite()를 수행 할 수 있습니다.

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

Twitter의 API 또는 Tweepy의 래퍼에 문제가 있는지는 확실하지 않지만 캐시와 관련이없는 것 같습니다. 일시적인 해결책은 실제로 create_favorite 메소드를 호출하기 전에 favorited 속성을 올바르게 반환하는 statuses_lookup 메소드를 추가로 호출하는 것입니다. 그러나이 방법은 오류를 던지는 것보다 덜 효율적입니다. 왜냐하면 짹짹이 선호되지 않을 때 두 번의 API 호출을하기 때문입니다.