我可以请求/过滤Twitter流API以仅返回带有地理标记的推文吗?

时间:2012-06-07 18:53:24

标签: java twitter twitter4j

我正在使用twitter4j库来访问公共Twitter流。我正在尝试制作涉及地理标记推文的项目,我需要收集大量的推文进行测试。

现在我从twitter获取未经过滤的流,只保存带地理标记的推文。这很慢,因为VAST的大部分推文都没有地理标签。我希望twitter流只向我发送带地理标记的推文。

我尝试过使用this question中提到的方法,在那里使用大小为360 * 180 *的边界框进行过滤,但这对我不起作用。使用该过滤器时我没有收到任何错误,但我仍然得到99%没有地理标记的推文。我正是这样做的:

ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
    .setOAuthConsumerKey("censored")
    .setOAuthConsumerSecret("censored")
    .setOAuthAccessToken("censored")
    .setOAuthAccessTokenSecret("censored");

TwitterStream twitterStream = newTwitterStreamFactory(cb.build()).getInstance();
StatusListener listener = new MyStatusListener();
twitterStream.addListener(listener);

//add location filter for what I hope is the whole planet. Just trying to limit
//results to only things that are geotagged
FilterQuery locationFilter = new FilterQuery();
double[][] locations = {{-180.0d,-90.0d},{180.0d,90.0d}};

locationFilter.locations(locations);

twitterStream.filter(locationFilter);

twitterStream.sample();

有关为什么我仍然收到没有地理标记的推文的任何建议?

编辑:我刚刚重新阅读twitter4j javadoc添加过滤器到Twitter流,它说“默认访问级别允许最多200个跟踪关键字,400个跟随用户ID和10个1度位置框。”边界框可能只有1度宽?这与我遇到的原始信息不同。那是我的问题吗?我的过滤请求太大,以至于被忽略了?尝试使用它时,我没有收到任何错误。

1 个答案:

答案 0 :(得分:7)

从过滤器流中获取然后用样本流覆盖它。

删除最后一行:twitterStream.sample();