使用Twitter Streaming API过滤特定帐户的#tag推文

时间:2016-01-12 10:53:22

标签: twitter twitter-oauth twitter-hbc

我可以使用流API从特定帐户获取推文。我还可以设法获取特定#tags的推文,如下所示:

endpoint.trackTerms(Lists.newArrayList("twitterapi", "@myTwitter"));

endpoint.trackTerms(Lists.newArrayList("twitterapi", "#yolo"));

我想知道如何合并这两个查询,因为我想从特定用户(@myTwitter)获取特定的推文(#yolo)

代码可以在这里找到 https://github.com/twitter/hbc

1 个答案:

答案 0 :(得分:1)

查看Twitter关于流API的文档,如何track terms

  

以逗号分隔的短语列表,用于确定内容   推文将在流媒体上发布。短语可以是一个或多个   用空格分隔的术语,如果所有术语都匹配一个短语   在短语中出现在Tweet中,无论顺序如何   无视案例。通过此模型,您可以将逗号视为逻辑OR,   空格等同于逻辑AND(例如'twitter'是   和推特,',推特'是OR推特)。

twitter-hbc仅允许跟踪以逗号分隔的字词,因此,如果您这样做,

endpoint.trackTerms(Lists.newArrayList("@myTwitter", "#yolo"));

您将实际执行@myTwitter OR #yolo,查看方法trackTerms的实现,

/**
  * @param terms a list of Strings to track. These strings should NOT be url-encoded.
  */
public StatusesFilterEndpoint trackTerms(List<String> terms) {
    addPostParameter(Constants.TRACK_PARAM, Joiner.on(',').join(terms));
    return this;
}

您可以直接将这些术语添加到端点,而不是使用trackTerms

endpoint.addPostParameter(Constants.TRACK_PARAM, Joiner.on(' ').join(Lists.newArrayList("twitterapi", "#yolo")));

当然,您可以创建一种新方法。

希望它有所帮助。