2015-08-15 102 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'。但這只是一個猜測,我還沒有測試過。 –

相關問題