如何使用 Twitter4j 检索超过 100 个结果

2024-03-08

我正在使用 Twitter4j 库来检索推文,但我得到的信息还不足以满足我的目的。目前,我从一页最多获取 100 个。如何在处理中的以下代码中实现 maxId 和sinceId,以便从 Twitter 搜索 API 检索超过 100 个结果?我对处理(以及一般的编程)完全陌生,所以任何关于这方面的指导都会很棒!谢谢!

void setup() {

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

  Twitter twitter = new TwitterFactory(cb.build()).getInstance();
  Query query = new Query("#peace");
  query.setCount(100);

  try {
    QueryResult result = twitter.search(query);
    ArrayList tweets = (ArrayList) result.getTweets();

    for (int i = 0; i < tweets.size(); i++) {
      Status t = (Status) tweets.get(i);

      GeoLocation loc = t.getGeoLocation();

      if (loc!=null) {
        tweets.get(i++);

        String user = t.getUser().getScreenName();
        String msg = t.getText();

        Double lat = t.getGeoLocation().getLatitude();
        Double lon = t.getGeoLocation().getLongitude();

        println("USER: " + user + " wrote: " + msg + " located at " + lat + ", " + lon);

      }
    }
  }

  catch (TwitterException te) {
    println("Couldn't connect: " + te);
  };
}

void draw() {
}

不幸的是你不能,至少不能以直接的方式,比如这样做

query.setCount(101);

As the javadoc http://twitter4j.org/javadoc/twitter4j/Query.html#setCount%28int%29表示最多只允许 100 条推文。

为了克服这个问题,您只需分批请求它们,并在每批中将您获得的最大 ID 设置为比上一个获得的最后一个 ID 小 1。为了总结这一点,您将进程中的每条推文收集到一个 ArrayList 中(顺便说一下,它不应该保持通用,而是将其类型定义为ArrayList<Status>- 一个带有 Status 对象的 ArrayList),然后打印所有内容!这是一个实现:

void setup() {

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

  Twitter twitter = new TwitterFactory(cb.build()).getInstance();
  Query query = new Query("#peace");
  int numberOfTweets = 512;
  long lastID = Long.MAX_VALUE;
  ArrayList<Status> tweets = new ArrayList<Status>();
  while (tweets.size () < numberOfTweets) {
    if (numberOfTweets - tweets.size() > 100)
      query.setCount(100);
    else 
      query.setCount(numberOfTweets - tweets.size());
    try {
      QueryResult result = twitter.search(query);
      tweets.addAll(result.getTweets());
      println("Gathered " + tweets.size() + " tweets");
      for (Status t: tweets) 
        if(t.getId() < lastID) lastID = t.getId();

    }

    catch (TwitterException te) {
      println("Couldn't connect: " + te);
    }; 
    query.setMaxId(lastID-1);
  }

  for (int i = 0; i < tweets.size(); i++) {
    Status t = (Status) tweets.get(i);

    GeoLocation loc = t.getGeoLocation();

    String user = t.getUser().getScreenName();
    String msg = t.getText();
    String time = "";
    if (loc!=null) {
      Double lat = t.getGeoLocation().getLatitude();
      Double lon = t.getGeoLocation().getLongitude();
      println(i + " USER: " + user + " wrote: " + msg + " located at " + lat + ", " + lon);
    } 
    else 
      println(i + " USER: " + user + " wrote: " + msg);
  }
}

注:线

ArrayList<Status> tweets = new ArrayList<Status>();

正确地应该是:

List<Status> tweets = new ArrayList<Status>();

因为你如果您想添加不同的实现,则应始终使用该接口 https://stackoverflow.com/questions/3194278/should-you-always-code-to-interfaces-in-java。当然,如果您使用的是Processing 2.x,那么一开始就需要这样:

import java.util.List;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Twitter4j 检索超过 100 个结果 的相关文章

随机推荐

  • jquery验证器表单:如何在完成远程电子邮件验证后访问表单操作

    History 我之前开始这个问题这个线程 https stackoverflow com questions 31966294 form post is omitted after jquery validation is complet
  • phoneGap - iOS - 图像可以通过 wifi 正常使用,但无法使用 3G 加载(使用 safari 工作正常)

    我遇到了一种奇怪的行为 我的应用程序的 远程托管 图像仅在这种情况下不会显示 使用3G加载 在 iPhone 上 using phonegap 在以下情况下图像加载正常 我启动该应用程序 有 wifi 即使是热点 我启动了该应用程序的网站版
  • 如何在MongoDB中指定字段进行多条件查找查询?

    这是单个文档 id firstName john lastName Doe cars id carName BMW carModel 330 carColor silver id carName Lexus carModel IS300 c
  • Python 的 3D 场景渲染器 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个易于使用的 Python 3D 场景渲染器 我所寻找的只是能够 加载3D场景模型 使用正
  • 无法在azure devops中构建asp.net应用程序

    能够在本地构建应用程序 但是当我尝试在 azure Devops 管道中构建时 它显示以下错误 我已经安装了实体框架并在 Web 配置文件中添加了 system data entity design 程序集 不走运 请在此处查找管道 htt
  • Bash 确认不会等待用户输入

    我正在尝试使用 bash 脚本实现确认提示 但由于某种原因 提示不会等待用户输入 我尝试过很多例子 但到目前为止还没有运气 如果有什么区别的话我用的是MacOS 只是我尝试过的几个例子 所有复制 粘贴来自SO中的其他答案 bin bash
  • [Int] 之和导致溢出

    我有一个返回的函数 Int 我想计算列表的总和 然而 虽然每个单独的元素都小于maxBound Int 总和肯定更大 一个 人为的 例子 ghci gt sum 1 10000000 Int 2004260032 有没有办法强制 sum 累
  • 使用 Mono Touch 时,我还可以打包为标准 Window 应用程序吗?

    我知道 Mono Touch 可以使用几乎一份源代码进行开发并部署到 Android iO 和 Windows Mobile 当然会有 3 个项目和一些与平台相关的代码 但我会有重要的 C 通用代码 但我还需要我的开发能够在标准 Windo
  • Ruby 是脚本语言还是解释语言?

    我刚刚注意到在Ruby的维基百科页面中 这种语言被定义为解释性语言 我明白我的背景中可能缺少一些东西 我一直都知道不需要编译器的解释型语言和编译型语言 需要在程序执行之前进行编译 之间的区别 但是脚本语言有什么特点呢 Ruby 可以定义为脚
  • webrtc如何选择输入视频设备?

    我正在研究webRTC应用程序 我参考的是这个软件 apprtc https code google com p webrtc source browse trunk samples js apprtc https code google
  • 编程中“let”变量的语言含义[重复]

    这个问题在这里已经有答案了 所以 我是一名 javascript 程序员 新版本的JavaScript ES6 http www ecma international org ecma 262 6 0 index html有一个用于声明变量
  • OpenCV = 运算符

    我正在研究 OpenCV 但我有一个困惑 我经历过这个link http opencv willowgarage com documentation cpp core basic structures html cv mat operato
  • 矩阵问题Python

    例如 如果我有矩阵 x 1 7 U1 1 5 8 U1 2 5 5 U2 如何获取 x 中除最后一个数据之外的所有数据 然后我需要对这些元素求和 这就是我需要的 sum 1 7 1 5 8 2 5 5 Thanks EDIT2 I try
  • 如何在.net中调试测试

    我想调试我的测试 检查每个测试 看看到底哪里失败了 我正在使用 coderush 这是一个很棒的工具 但我的 1 个月试用期已过期 欢迎任何建议 正如马克所说 如果你发现一个工具确实有用 就购买它 我个人使用 ReSharper 来运行我的
  • 在子查询中聚合按位或

    给出下表 CREATE TABLE BitValues n int 是否可以计算按位或n对于子查询中的所有行 例如 如果 BitValues 包含以下 4 行 n 1 2 4 3 我希望子查询返回 7 有没有办法在不创建 UDF 的情况下内
  • 实体框架+验证注解

    我想使用验证注释 我已经有一个由实体框架实现的模型 我需要数据验证 并且我知道有一个非常好的数据注释 但我真的不知道如何正确使用它与实体框架 我应该编辑实体吗 或者我应该写单独的课程 或者我应该编写从实体继承的类 你能告诉我应该使用的最佳方
  • 通过 HttpClient 对 HTTP Post 的非字符串属性进行 UrlEncode

    这段代码是Python中的 dataParams urllib urlencode name myname id 2 dataReq urllib2 Request mylink dataParams dataRes urllib2 url
  • 在 C 中使用嵌套循环打印星号('*')菱形?

    我希望当用户输入 5 作为钻石时能够打印这样的钻石 但也适用于任何奇数且大于 0 的值 我有一个代码 可以为用户输入 5 创建一个菱形 但不适用于所有奇数输入 half size 2 1 for a 1 a lt half a top to
  • 如何在 JavaScript 中执行 JSTL 的 c:url 的等效操作?

    我有一些 JavaScript 对相对 url 进行 Ajax 调用 使用 jQuery var servletUrl someservlet ajax type POST url servletUrl success function r
  • 如何使用 Twitter4j 检索超过 100 个结果

    我正在使用 Twitter4j 库来检索推文 但我得到的信息还不足以满足我的目的 目前 我从一页最多获取 100 个 如何在处理中的以下代码中实现 maxId 和sinceId 以便从 Twitter 搜索 API 检索超过 100 个结果