我想收听用户尚未发送推文的推文。为此,我写了以下内容:
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,即使tweet已被收藏,也会导致以下错误:
[{u'message': u'You have already favorited this status.', u'code': 139}]
我在这里做错了什么?
答案 0 :(得分: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])
它可以是twitter的缓存,我怀疑或者调用返回重复的id。尝试打印所有推文ID以检查所有推文是否不同,并检查api.create_favorite(tweet.id)
收藏属性是否发生变化。
顺便说一句,推文(状态模型)有一个内置的方法来收藏自己。您可以执行tweet.favorite()来收听推文。
class Status(Model):
...
def favorite(self):
return self._api.create_favorite(self.id)