当前位置: 首页 > 面试题库 >

实时收听推文

酆华皓
2023-03-14
问题内容

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

但是,我可以使用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才能实时访问tweets。但是我在Java中找不到任何示例代码来访问深绿色时间推文。


问题答案:

Twitter4j提供了示例,其中一个正是您要查找的示例,但是您需要更改行号

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();
    }
}

这样,您将开始接收示例公共流。如果要获取特定的推文,则需要使用一些过滤器。例如,如果您想要特定查询的推文,则需要更改此行

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();

有更多方法可以从流中检索推文,您只需阅读文档或在此站点上进行搜索。祝好运!



 类似资料:
  • 我正在尝试使用Twitter API实时收听许多用户(特定用户)的推文,但我无法找到任何关于此的留档。我发现了很多关于收听使用某个主题标签或关键字的推文的信息,但没有关于实时收听来自某些用户的所有推文的信息。 使用Twitter4J API,我能够指定多个用户,创建一个流,然后在其中一个用户发推文时运行一段代码。我如何使用PHP完成这一点?

  • 问题内容: 从很长一段时间以来,我一直在尝试收听.pls文件(广播)。我不得不说我失败了。由于StreamFurious可以做到,因此一定有可能。首先,我尝试通过套接字(TCP和UDP)连接到shoutcast –>失败。我什至无法从服务器收到一个字节。 我快要哭了。我什至不知道建立连接并随后不断下载/接收数据流的最佳方法是什么。 我真的希望有人可以指出正确的方向,并提供一个简短的代码段(如果有)

  • 问题内容: 我有一个。当用户在更改时按下键时,我会tp做点什么。我怎样才能做到这一点? 最简单的方法: 问题答案: 文本观察器的示例代码

  • 我正在尝试使用Twitter API的第2版来实现标题中描述的目标。到目前为止,我已经尝试了以下内容: > 只使用一个规则设置监听过滤流,即规则。但它会返回以下两个错误: "对无效操作符'has: geo'的引用。操作符在当前产品或产品包装中不可用。请参阅https://developer.twitter.com/en/docs/twitter-api/enterprise/rules-and-f

  • 我在JMeter中有一个性能测试。我有一些SSH监听器,它们应该检索CPU和RAM的使用情况。我希望得到一个关于Jmeter在测试运行时收集侦听器值所使用的延迟的明确解释。用户是否可以设置延迟值?如果可以,Jmeter支持的最小值是多少。目前的数据收集监听器是有点随机的,我认为这是不好的。目前,我在结果中没有类似数量的条目,尽管在两个监听器中我有相同数量的命令。我试图将jmeter.propert

  • 问题内容: 当我查看net / http服务器接口时,没有看到一种明显的方式来通知并在http.Server启动并 开始 侦听时作出反应: 直到服务器真正关闭后,该函数才返回。我还查看了服务器类型,但似乎没有什么可以让我把握这一时机。某些功能或频道会很棒,但我看不到任何东西。 有什么方法可以让我检测到该事件,还是我只需要“熟睡”一下以伪造它? 问题答案: ListenAndServe是一个帮助程序