【问题标题】:Twitter Streaming API Multiple Stream vs Custom FilterTwitter Streaming API 多流与自定义过滤器
【发布时间】:2013-01-03 09:28:52
【问题描述】:

我正在构建一个 node.js 应用程序,它打开与 Twitter 流 API (v1.1) 的连接

我想将多个关键字(主题标签和单词)过滤为单独的查询。我最初的想法是拥有多个公共流。

但是,我知道每个应用程序和每个 IP 地址只能有一个与 Twitter 流式处理 API 的开放连接,并且 Twitter 鼓励我们提出创造性的解决方案来获得我们想要的。

所以我的问题是:

如果我在没有过滤器的情况下进行流式传输,例如使用statuses/sample(我相信是 1%)并使用自定义 javascript 过滤输出,如果我使用 API 过滤方法(即跟踪='推特')。

编辑:我创建了一个图表来解释这一点:

如您所见,我想知道这两个输出是否相同。我怀疑它们不会是,因为虽然两个输出实际上是相同的过滤器,但一个来源是 1% 的样本,而另一个来源可能是 100% 的样本,但只提供 1% 的推文。

那么有人可以澄清一下两个输出是否相同吗?

谢谢。

【问题讨论】:

    标签: javascript node.js twitter


    【解决方案1】:

    根据 Twitter 流 api 规则,如果您跟踪的关键字不超过整个全球流量的 1%,您将收到所有数据(某些推文可能由于网络问题等原因丢失,但并不重要) .这被称为garden-hose(firehose 是一种特殊的过滤器,可以为您提供所有数据,但它是通过第三方提供的付费服务,例如http://datasift.com/

    因此,如果一条推文通过公共流过滤,那么它也将成为您自定义过滤器的一部分,除非您的关键字集太宽泛。

    通过使用自定义过滤器,您可以跟踪多个搜索关键字,如果您因为关键字集太宽而错过了一些数据,twitter 会发送一个跟踪限制通知,指出您丢失了多少数据。

    我对您的建议是使用自定义过滤器并分析您从流中获得的内容以及您从 twitter 获得的相同关键字的结果。当您开始从 twitter 收到曲目限制通知时,是时候将您的关键字集拆分为多个块,并通过在不同机器上运行它们来开始通过不同的流媒体进行流式传输。

    过滤器流的详细信息如下(取自官网https://dev.twitter.com/docs/api/1.1/post/statuses/filter

    返回匹配一个或多个过滤谓词的公共状态。可以指定多个参数,允许大多数客户端使用单个连接到 Streaming API。 GET 和 POST 请求都支持,但是参数过多的 GET 请求可能会导致请求因 URL 长度过长而被拒绝。使用 POST 请求来避免长 URL。

    默认访问级别最多允许 400 个跟踪关键字、5,000 个关注用户 ID 和 25 个 0.1-360 度位置框。如果您需要提升对 Streaming API 的访问权限,您应该在此处探索我们的 Twitter 数据合作伙伴提供商。

    【讨论】:

    • 目前我正在使用位置过滤“整个英国”。那么这会占用我高达 1% 的费用吗?
    • 您是否从您的信息流中收到任何曲目限制通知消息,如果有,这肯定意味着您丢失了一些数据。
    • 两个输出都不一样。左侧的数据将比右侧的数据少,因为它包含与全局数据的 %1 匹配的推文,这些数据可能包含也可能不包含您的过滤数据。而如果您通过流 api 使用过滤,它将为您提供包含过滤器的所有数据或所有数据,除了超过 %1 全局数据总量的推文。因此,如果您想为特定过滤器获取尽可能多的推文,请使用流 api 过滤。
    • 我一直在考虑这个应用程序,我不介意我们得到更少的推文,因为多个过滤器更重要。 (它用于 WebGL 可视化)。所以我要做的是测试两种可能性并在这里给出我的结果。
    • 然后您需要处理您的推文并根据他们的过滤器将它们保存到每个用户的存储桶中。例如,userA 请求关于“A”的推文,而 userB 请求关于“B”的推文。然后您的流将检索包含“A”或“B”的所有推文。当您收到推文时,您应该根据他们的过滤器将每条推文映射到用户的数据存储中。因此,这样您只会将关于“A”的推文放到用户 A 的收藏中,将关于“B”的推文放到用户 B 的收藏中。
    【解决方案2】:

    我想用我的发现来回答我的问题。

    我在同一时间范围内并排测试了两者并得出结论,自定义过滤器方法虽然支持多个过滤器,但无法提供足够的推文来创建足够有趣的可视化。

    我认为使用并发过滤器获得更有趣的东西的唯一方法是查看其他方法,但我想知道它是否不可能。也许与第三方。

    我附上了可视化跟踪“barackobama”的截图。左边是自定义过滤器,右边是状态/过滤器。

    【讨论】:

      【解决方案3】:

      statuses/filter api 对所有推文进行操作,而不是 statuses/sample 返回的推文,您可以通过查看他们的推文 id 来判断:示例推文都来自特定的时间窗口。所以从毫秒级的创建时间,你肯定可以看出filter 返回了sample 之外的推文。

      有关从推文 ID 和示例推文的时间窗口获取创建时间的更多详细信息,请参阅这篇文章:http://blog.falcondai.com/2013/06/666-and-how-twitter-samples-tweets-in.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-06
        • 1970-01-01
        • 1970-01-01
        • 2012-11-03
        • 1970-01-01
        • 2012-10-10
        • 2022-11-04
        相关资源
        最近更新 更多