我正在使用twython(用于python的twitter API库)来连接到流API,但我似乎只能获得可能通过单词过滤的公共twitter流。有没有办法获得经过身份验证的用户时间线或@mentions的实时流?
我一直在调用REST API的延迟调用以获取这些提及但是twitter不喜欢我提出这么多请求。
Twython文档对我没有多大帮助,官方Twitter文档也没有。
如果有另一个python库可以比twython更好地工作流(对于Twitter API v1.1)。我很感激这个建议......谢谢。
答案 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()
在发布新版requests
(https://github.com/kennethreitz/requests)之前,您的关注者的推文将会落后一个帖子。这应该很快就会修好! :)