通过Twitter流API 1.1获取提及和DM? (使用twython)

时间:2013-06-21 21:00:39

标签: python twitter streaming twython

我正在使用twython(用于python的twitter API库)来连接到流API,但我似乎只能获得可能通过单词过滤的公共twitter流。有没有办法获得经过身份验证的用户时间线或@mentions的实时流?

我一直在调用REST API的延迟调用以获取这些提及但是twitter不喜欢我提出这么多请求。

Twython文档对我没有多大帮助,官方Twitter文档也没有。

如果有另一个python库可以比twython更好地工作流(对于Twitter API v1.1)。我很感激这个建议......谢谢。

2 个答案:

答案 0 :(得分:4)

在我的研究开始时,我认为python-twitter用于Python的推特库。但最后,似乎 Python Twitter Tools 更受欢迎,并支持Twitter流媒体。

这有点棘手,流API和REST api不等于直接消息。这个小的示例脚本演示了如何使用用户流来获取直接消息:

import twitter # if this module does not 
               # contain OAuth or stream,
               # check if sixohsix' twitter
               # module is used! 
auth = twitter.OAuth(
    consumer_key='...',
    consumer_secret='...',
    token='...',
    token_secret='...'
)

stream = twitter.stream.TwitterStream(auth=auth, domain='userstream.twitter.com')

for msg in stream.user():
    if 'direct_message' in msg:
        print msg['direct_message']['text']

此脚本将打印所有新消息 - 而不是在启动脚本之前已经收到的消息。

答案 1 :(得分:0)

无法直播消息。

但是,有一种流式传输用户时间轴的方法。在这里查看Twitter上的文档:https://dev.twitter.com/docs/streaming-apis/streams/user

from twython import TwythonStreamer


class MyStreamer(TwythonStreamer):
    def on_success(self, data):
        if 'text' in data:
            print data['text'].encode('utf-8')
        # Want to disconnect after the first result?
        # self.disconnect()

    def on_error(self, status_code, data):
        print status_code, data

# Requires Authentication as of Twitter API v1.1
stream = MyStreamer(APP_KEY, APP_SECRET,
                    OAUTH_TOKEN, OAUTH_TOKEN_SECRET)

stream.user()

在发布新版requestshttps://github.com/kennethreitz/requests)之前,您的关注者的推文将会落后一个帖子。这应该很快就会修好! :)