我想使用TwitterStream
类按语言检索或过滤。我想只获得一种语言的推文或以其他方式检索所有内容,然后识别每种推文语言。
我已经构建了此代码,但getIsoLanguageCode()
始终返回null
(请参阅版本3.0.4 JavaDocs)。我认为他们在使用这种方法时遇到了问题。
TwitterStream twitterStream = TwitterPrintRandomStream.createTwitterConnection();
StatusListener listener = new StatusListener() {
public void onStatus(Status status) {
String tw = status.getText() + " " + status.getIsoLanguageCode();
System.out.println(tw);
}
...
}
我也尝试了方法Status.getUser().getLang()
,但它返回用户的语言而不是推文。有没有办法做到这一点?
提前致谢。
答案 0 :(得分:2)
我认为你不能依赖iso_language_code
- 我在REST或流API中找不到对它的引用。
推文确实有lang
属性,表示推文的编写语言。这是recently added to the API,不幸的是,Twitter4J还没有为您提供访问权限。
版本3.0.4中有一个task to add it,但工作似乎尚未开始。不幸的是,你需要等到他们添加它,或者你可以给他们一个手并提交拉动请求。
答案 1 :(得分:1)
status.getPlace().getCountryCode()
应该可以获得ISO 3166-1 alpha 2国家/地区代码
答案 2 :(得分:1)
首先,尝试获取status.getLang()
并将其放入字符串然后将其与status.getText()
进行比较,如果匹配,您可以获得仅包含status.getLang()
中的语言的推文
您可以尝试以下代码
String filterTweet=null
String language= status.getLang()
String filterLang="(language code)"
If (filterLang.Matches(language)){
filterTweet=status.getText()}
氰