使用 tweepy 获取最新的推文

6

我正在尝试使用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' . 

我理解这个错误,但是我怎样才能从一个状态中获取文本呢?

1个回答

13
API.user_timelines的返回值是一组状态对象(Status objects)列表,这在API参考资料中有说明。
def get_last_tweet(self):
    tweet = self.client.user_timeline(id = self.client_id, count = 1)[0]
    print(tweet.text)

请注意添加[0]以获取第一个条目。

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


非常感谢!我想我会在文档方面提供帮助,同时我也会尽可能熟练地使用 tweepy(也许有一份法语文档对我来说更容易)。还有一个问题,如何从这个推文中获取 URL?我可以很容易地生成它 (https://twitter.com/{}/status/{}.format(tweet.user.screen_name, tweet.id)`),但是否有直接的 URL 属性?再次感谢! - Louis Etienne
从代码来看,应该可以使用API.get_oembed。在你的情况下,类似于self.client.get_oembed(id=tweet.id).url这样的方式。但这只是一个猜测,我还没有测试过。 - Daniel Hepper

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接