使用 TwitterUtils 过滤掉用户
filtering out users using TwitterUtils
有没有办法在使用 TwitterUtils.createStream() 时仅提取 post 一条推文的特定用户? (JAVA)
"filters" 参数指定需要包含在推文中的字符串,但我不确定如何使用它来指定我感兴趣的用户。
我有这个:
String[] filters = { "#USA" };
JavaDStream<Status> tweets = TwitterUtils.createStream(ssc,filters);
这给我包含“#USA”的推文
我需要的是一种倾听特定用户并查看他 post 的方法。
谢谢
要使用 Twitter4j 过滤用户,您应该使用 TwitterStream,如下面的代码:
TwitterStream twitterStream = new TwitterStreamFactory(cb.build())
.getInstance(); // First you create the Stream
StatusListener listener = new StatusListener() {
//... a lot of things
}
twitterStream.addListener(listener);
FilterQuery filtre = new FilterQuery();
filtre.follow(usuarios); //you could filter by users
twitterStream.filter(filtre);
通过这种方式,您可以获得所需用户的推文。
您应该检查 Twitter4j 的 the examples 以获取流 api。
如果你想过滤用户并获得说 "USA" 的推文,你应该首先过滤用户,然后在 StatusListener listener = new StatusListener() { //... a lot of things }
部分你可以为你收到的推文创建过滤器.
private void receive() {
try {
TwitterStream newTwitterStream = new TwitterStreamFactory()
.getInstance(twitterAuth);
newTwitterStream.addListener(new StatusListener() {
public void onException(Exception e) {
if (!arret) {
restart("Erreur pandant la reception des tweets", e);
}
}
public void onTrackLimitationNotice(int arg0) {
// TODO Auto-generated method stub
}
public void onStatus(Status status) {
store(status);
}
public void onStallWarning(StallWarning arg0) {
// TODO Auto-generated method stub
}
public void onScrubGeo(long arg0, long arg1) {
// TODO Auto-generated method stub
}
public void onDeletionNotice(StatusDeletionNotice arg0) {
// TODO Auto-generated method stub
}
});
FilterQuery query = new FilterQuery();
if (filter_mots.length > 0 || filter_utilisateurs.length >0) {
if (filter_mots.length > 0){
query.track(filter_mots);
}
if (filter_utilisateurs.length >0){
query.follow(filter_utilisateurs);
}
newTwitterStream.filter(query);
} else{
newTwitterStream.sample();
}
setTwitterStream(newTwitterStream) ;
arret = false ;
} catch (Throwable t) {
// En cas d'erreur on redémare le streaming
restart("Erreur pendant la reception des données ", t);
}
}
有没有办法在使用 TwitterUtils.createStream() 时仅提取 post 一条推文的特定用户? (JAVA) "filters" 参数指定需要包含在推文中的字符串,但我不确定如何使用它来指定我感兴趣的用户。 我有这个:
String[] filters = { "#USA" };
JavaDStream<Status> tweets = TwitterUtils.createStream(ssc,filters);
这给我包含“#USA”的推文 我需要的是一种倾听特定用户并查看他 post 的方法。
谢谢
要使用 Twitter4j 过滤用户,您应该使用 TwitterStream,如下面的代码:
TwitterStream twitterStream = new TwitterStreamFactory(cb.build())
.getInstance(); // First you create the Stream
StatusListener listener = new StatusListener() {
//... a lot of things
}
twitterStream.addListener(listener);
FilterQuery filtre = new FilterQuery();
filtre.follow(usuarios); //you could filter by users
twitterStream.filter(filtre);
通过这种方式,您可以获得所需用户的推文。
您应该检查 Twitter4j 的 the examples 以获取流 api。
如果你想过滤用户并获得说 "USA" 的推文,你应该首先过滤用户,然后在 StatusListener listener = new StatusListener() { //... a lot of things }
部分你可以为你收到的推文创建过滤器.
private void receive() {
try {
TwitterStream newTwitterStream = new TwitterStreamFactory()
.getInstance(twitterAuth);
newTwitterStream.addListener(new StatusListener() {
public void onException(Exception e) {
if (!arret) {
restart("Erreur pandant la reception des tweets", e);
}
}
public void onTrackLimitationNotice(int arg0) {
// TODO Auto-generated method stub
}
public void onStatus(Status status) {
store(status);
}
public void onStallWarning(StallWarning arg0) {
// TODO Auto-generated method stub
}
public void onScrubGeo(long arg0, long arg1) {
// TODO Auto-generated method stub
}
public void onDeletionNotice(StatusDeletionNotice arg0) {
// TODO Auto-generated method stub
}
});
FilterQuery query = new FilterQuery();
if (filter_mots.length > 0 || filter_utilisateurs.length >0) {
if (filter_mots.length > 0){
query.track(filter_mots);
}
if (filter_utilisateurs.length >0){
query.follow(filter_utilisateurs);
}
newTwitterStream.filter(query);
} else{
newTwitterStream.sample();
}
setTwitterStream(newTwitterStream) ;
arret = false ;
} catch (Throwable t) {
// En cas d'erreur on redémare le streaming
restart("Erreur pendant la reception des données ", t);
}
}