Получите последний твит с 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' . 

Я понимаю ошибку, но как мне получить текст из статуса?


person Louis Etienne    schedule 15.08.2015    source источник


Ответы (1)


Возвращаемое значение API.user_timelines, как указано в справочнике по API - это список объектов статуса.

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

Обратите внимание на дополнительный [0] для получения первой записи.

Я почти уверен, что автор Tweepy с радостью примет запрос на перенос с улучшенной документацией;)

person Daniel Hepper    schedule 15.08.2015
comment
Большое спасибо ! Я думаю, что помогу с документацией, пока я буду достаточно хорош с tweepy (может быть, мне будет проще французский документ). Еще один вопрос, как получить url-адрес этого твита? Я могу сделать это легко (https://twitter.com/{}/status/{}.format (tweet.user.screen_name, tweet.id) `), но есть ли атрибут с URL-адресом напрямую? Спасибо еще раз! - person Louis Etienne; 15.08.2015
comment
Глядя на код, должно быть возможно использовать API. get_oembed. В вашем случае что-то вроде self.client.get_oembed(id=tweet.id).url. Но это всего лишь предположение, я этого не проверял. - person Daniel Hepper; 15.08.2015