twitter stream API跟踪在twitter应用程序中注册的用户发布的所有推文

时间:2015-09-16 05:31:16

标签: api twitter

我正在创建需要跟踪注册到我的应用程序的用户的所有推文的应用程序,我试图跟踪那些使用流API,有公共API,用户API和网站API,

在这些API中,只需添加逗号分隔的用户ID即可跟随用户ID https://dev.twitter.com/streaming/overview/request-parameters#follow 但我认为它不灵活,如果有新用户注册,我需要重建HTTP请求,并且如果有这么多用户试图听这个流和查询将是如此之长, 它将是

https://stream.twitter.com/1.1/statuses/filter.json?follow=[user1],[user2],[user3]........[userN]

我担心查询不适合,我只需要一个参数来过滤在我的应用程序中注册的所有用户,例如。 https://stream.twitter.com/1.1/statuses/filter.json?application=[applicationID] 但我认为twitter dev不提供它

那么,有没有办法按应用程序ID过滤流?

2 个答案:

答案 0 :(得分:0)

我没有看到类似于按应用ID跟踪的内容。如果您的查询过于复杂(跟随/关键字太多),公共流式api会拒绝它,  并且您无法使用用户流打开超过2个连接。所以,最后的解决方案是使用Site Stream, - >您可以打开与用户注册到应用程序一样多的用户连接。

但是文档说:

  

" Site Streams目前处于封闭测试阶段。申请没有   更长时间被接受。"

请联系twitter以确保

答案 1 :(得分:0)

Arstechnica有一篇非常有趣的文章。看看这段代码和本文末尾的链接

如果您正在使用python pycurl将完成这项工作。它提供了一种为接收的每一小块数据执行函数的方法。

import pycurl, json

STREAM_URL = "http://chirpstream.twitter.com/2b/user.json"

USER = "YOUR_USERNAME"
PASS = "XXXXXXXXX"

userlist = ['user1',...,'userN']

def on_receive(self, data):
    self.buffer += data
    if data.endswith("rn") and self.buffer.strip():
        content = json.loads(self.buffer)
        self.buffer = ""

        if "text" in content and content['user'] in userlist:
                #do stuff

conn = pycurl.Curl()
conn.setopt(pycurl.USERPWD, "%s:%s" % (USER, PASS))
conn.setopt(pycurl.URL, STREAM_URL)
conn.setopt(pycurl.WRITEFUNCTION, on_receive)
conn.perform()

您可以在Real time twitter stream api

找到更多信息