2015-08-15 100 views
0

我正在尝试使用tweepy发布用户的最后一条推文。这是我的代码:使用tweepy获取最后的推文

class Bot: 
    def __init__(self, keys): 
     self._consumer_key = keys[0] 
     self._consumer_secret = keys[1] 
     self._access_token = keys[2] 
     self._access_secret = keys[3] 

     try: 
      auth = tweepy.OAuthHandler(self._consumer_key, 
             self._consumer_secret) 
      auth.set_access_token(self._access_token, self._access_secret) 

      self.client = tweepy.API(auth) 
      if not self.client.verify_credentials(): 
       raise tweepy.TweepError 
     except tweepy.TweepError as e: 
      print('ERROR : connection failed. Check your OAuth keys.') 
     else: 
      print('Connected as @{}, you can start to tweet !'.format(self.client.me().screen_name)) 
      self.client_id = self.client.me().id 


    def get_last_tweet(self): 
     tweet = self.client.user_timeline(id = self.client_id, count = 1) 
     print(tweet.text) 
     # AttributeError: 'ResultSet' object has no attribute 'text' 

我明白错误,但是如何从状态中获得文本?该Tweepy的文档只是awfull和不完整的...

非常感谢您的帮助,
有一个愉快的一天! :)

回答

4

API reference所述,API.user_timelines的返回值是Status对象的列表

def get_last_tweet(self): 
    tweet = self.client.user_timeline(id = self.client_id, count = 1)[0] 
    print(tweet.text) 

请注意额外的[0]来获取第一个条目。

我很确定Tweepy的作者乐意接受带有改进文档的拉取请求;)

+0

非常感谢!我想我会为文档提供帮助,同时我会对tweepy进行很好的处理(也许法文文件对我来说更容易些)。还有一个问题,如何从这个推文获取网址?我可以做到这一点很简单('https://twitter.com/{}/status/{}'.format(tweet.user.screen_name,tweet.id)''但是有直接url的属性吗?再次感谢! – Wizix

+0

从查看代码,应该可以使用[API.get_oembed](https://github.com/tweepy/tweepy/blob/master/tweepy/api.py#L299)。在你的情况,像'self.client.get_oembed(id = tweet.id).url'。但这只是一个猜测,我还没有测试过。 –

相关问题