gpt4 book ai didi

java - 实时收听推文

转载 作者:行者123 更新时间:2023-11-29 02:58:36 24 4
gpt4 key购买 nike

我想实时收听一条推文,这意味着当有人发推文时我想看到那条推文。

不过,我能够使用 twitter4j 库从我的新闻提要中获取推文。这是代码。

 package twitteroperation;

import java.util.List;
import twitter4j.Status;
import twitter4j.TwitterException;
import twitter4j.TwitterFactory;
import twitter4j.conf.ConfigurationBuilder;

public class TwitterOperation {

/**
* @param args the command line arguments
*/
public static void main(String[] args) throws TwitterException {


ConfigurationBuilder cb = new ConfigurationBuilder();

cb.setDebugEnabled(true)
.setOAuthConsumerKey("")
.setOAuthConsumerSecret("")
.setOAuthAccessToken("")
.setOAuthAccessTokenSecret("");

TwitterFactory tf=new TwitterFactory(cb.build());

twitter4j.Twitter tw=tf.getInstance();

List<Status> statuses= tw.getHomeTimeline();

for (Status status1 : statuses) {
System.out.println(status1.getUser().getName() + ":" + status1.getText());

}
}
}

我发现我必须使用 Streaming API 来实时访问推文。但是我在 java 中找不到任何示例代码来访问临时推文。

最佳答案

Twitter4j 提供了示例,其中之一是exactly what you are looking for ,但是您需要更改行

TwitterStream twitterStream = new TwitterStreamFactory().getInstance();

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

TwitterStream twitterStream = new TwitterStreamFactory(cb.build())
.getInstance();

如果不这样做,则必须配置属性文件。之后你会得到这个代码

import twitter4j.*;
import twitter4j.conf.ConfigurationBuilder;

public final class PrintSampleStream {

public static void main(String[] args) throws TwitterException {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true).setOAuthConsumerKey("")
.setOAuthConsumerSecret("")
.setOAuthAccessToken("")
.setOAuthAccessTokenSecret("");
TwitterStream twitterStream = new TwitterStreamFactory(cb.build())
.getInstance();
StatusListener listener = new StatusListener() {
@Override
public void onStatus(Status status) {
System.out.println("@" + status.getUser().getScreenName() + " - " + status.getText());
}

@Override
public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
}

@Override
public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
System.out.println("Got track limitation notice:" + numberOfLimitedStatuses);
}

@Override
public void onScrubGeo(long userId, long upToStatusId) {
System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
}

@Override
public void onStallWarning(StallWarning warning) {
System.out.println("Got stall warning:" + warning);
}

@Override
public void onException(Exception ex) {
ex.printStackTrace();
}
};
twitterStream.addListener(listener);
twitterStream.sample();
}
}

有了它,您将开始接收示例公共(public)流。如果您想获得特定的推文,您将需要使用一些过滤器。例如,如果您想要针对特定​​查询的推文,则需要更改此行

twitterStream.sample();

用你想要的词

FilterQuery filtre = new FilterQuery();
String[] keywordsArray = { "obama" };
filtre.track(keywordsArray);
twitterStream.filter(filtre);

如果您想流式传输来自特定配置文件的推文,您将需要使用关注过滤器。 twitterStream.sample(); 您需要为此更改它

          long[] users = new long[]{someid,someotherid,otherid};
twitterStream.addListener(listener);
FilterQuery filtre = new FilterQuery();
filtre.follow(users);
twitterStream.filter(filtre);

数组的 ID 是 Twitter 为每个用户使用的 ID。如果您不知道某个用户的 ID,您可以使用 Twitter4j 获取它:

User user = tw.showUser("barackobama"); //tw is your Twitter variable from twitter4j.Twitter tw=tf.getInstance();
long id = user.getId();

有更多方法可以从流中检索推文,您只需要阅读文档或在本站搜索即可。祝你好运!

关于java - 实时收听推文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36638763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com