Java 实时收听推文
我想实时收听一条推文,这意味着当有人发推文时,我想看到那条推文 然而,我能够使用twitter4j库从我的新闻提要中获取推文。 这是密码Java 实时收听推文,java,twitter,twitter-oauth,twitter4j,Java,Twitter,Twitter Oauth,Twitter4j,我想实时收听一条推文,这意味着当有人发推文时,我想看到那条推文 然而,我能够使用twitter4j库从我的新闻提要中获取推文。 这是密码 package twitteroperation; import java.util.List; import twitter4j.Status; import twitter4j.TwitterException; import twitter4j.TwitterFactory; import twitter4j.conf.ConfigurationBu
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());
}
}
}
包推特操作;
导入java.util.List;
导入twitter4j.状态;
导入twitter4j.TwitterException;
导入twitter4j.TwitterFactory;
导入twitter4j.conf.ConfigurationBuilder;
公共类twitter操作{
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args)引发TwitterException{
ConfigurationBuilder cb=新的ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey(“”)
.SetOAuthConsumerCret(“”)
.setOAuthAccessToken(“”)
.setOAuthAccessTokenSecret(“”);
TwitterFactory tf=新的TwitterFactory(cb.build());
twitter4j.Twitter tw=tf.getInstance();
列表状态=tw.getHomeTimeline();
对于(状态1:状态){
System.out.println(status1.getUser().getName()+”:“+status1.getText());
}
}
}
我发现我必须使用流式API来实时访问推文。但是我在java中找不到任何访问teal time推文的示例代码。我建议您尝试一下。首页上有一些很好的例子,介绍了如何为消费事件设置BlockingQueue。我建议您尝试一下。首页上有一些很好的例子,介绍了如何为消费事件设置BlockingQueue。Twitter4j提供了一些例子,其中之一是,但是您需要更改行
TwitterStream twitterStream = new TwitterStreamFactory().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();
}
}
这样,您将开始接收示例公共流。如果你想获得特定的推文,你需要使用一些过滤器。例如,如果您想要特定查询的tweet,则需要更改此行
twitterStream.sample();
用你想要的词
FilterQuery filtre = new FilterQuery();
String[] keywordsArray = { "obama" };
filtre.track(keywordsArray);
twitterStream.filter(filtre);
如果你想从specifics profiles流式发送推文,你需要使用follow过滤器。行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();
有更多的方法可以从流中检索推文,您只需阅读文档或在此网站上搜索即可。祝你好运 Twitter4j提供了一些示例,其中之一是,您需要更改行
TwitterStream twitterStream = new TwitterStreamFactory().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();
}
}
这样,您将开始接收示例公共流。如果你想获得特定的推文,你需要使用一些过滤器。例如,如果您想要特定查询的tweet,则需要更改此行
twitterStream.sample();
用你想要的词
FilterQuery filtre = new FilterQuery();
String[] keywordsArray = { "obama" };
filtre.track(keywordsArray);
twitterStream.filter(filtre);
如果你想从specifics profiles流式发送推文,你需要使用follow过滤器。行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();
有更多的方法可以从流中检索推文,您只需阅读文档或在此网站上搜索即可。祝你好运 我浏览了你提供的链接。如何在我的EclipseIDE上设置这个项目?我发现了一些有趣的东西。谢谢@EmilForslundI浏览了您提供的链接。如何在我的EclipseIDE上设置这个项目?我发现了一些有趣的东西。谢谢@emilforslund这个“配置生成器”是什么?我这里有个错误无法解析ConfigurationBuilder“找到上述注释的解决方案”。我必须进口这个。”导入twitter4j.conf.*;'仍然在看你的答案:)这就是我需要的。谢谢,我的“主页”时间线(不是我的个人资料)上的推文是什么?这是什么“配置生成器”?我这里有个错误无法解析ConfigurationBuilder“找到上述注释的解决方案”。我必须进口这个。”导入twitter4j.conf.*;'仍然在看你的答案:)这就是我需要的。谢谢,我的“主页”时间线(不是我的个人资料)上的推特是怎么回事?