java - 如何使用 twitter4j 获取用户时间线的完整推文?

标签 java twitter twitter4j

我想使用java库twitter4j从某些用户时间线获取推文,目前我有源代码可以从用户时间线获取〜3200条推文,但我无法获取完整的推文。我在互联网上搜索了各种资源,但找不到解决我的问题的方法。任何人都可以帮助我,或者任何人都可以提供替代方案,通过 Java 编程从用户时间线获取完整的推文吗?

我的源代码:

public static void main(String[] args) throws SQLException {
    ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
      .setOAuthConsumerKey("aaa")
      .setOAuthConsumerSecret("aaa")
      .setOAuthAccessToken("aaa")
      .setOAuthAccessTokenSecret("aaa");
    TwitterFactory tf = new TwitterFactory(cb.build());
    Twitter twitter = tf.getInstance();

    int pageno = 1;
    String user = "indtravel";
    List statuses = new ArrayList();
    while (true) {
        try {
            int size = statuses.size();
            Paging page = new Paging(pageno++, 100);
            statuses.addAll(twitter.getUserTimeline(user, page));
            System.out.println("***********************************************");
            System.out.println("Gathered " + twitter.getUserTimeline(user, page).size() + " tweets");

            //get status dan user
            for (Status status: twitter.getUserTimeline(user, page)) {
                //System.out.println("*********Place Tweets :**************\npalce country :"+status.getPlace().getCountry()+"\nplace full name :"+status.getPlace().getFullName()+"\nplace name :"+status.getPlace().getName()+"\nplace id :"+status.getPlace().getId()+"\nplace tipe :"+status.getPlace().getPlaceType()+"\nplace addres :"+status.getPlace().getStreetAddress());
                System.out.println("["+(no++)+".] "+"Status id : "+status.getId());
                System.out.println("id user : "+status.getUser().getId());
                System.out.println("Length status :  "+status.getText().length());
                System.out.println("@" + status.getUser().getScreenName() +" . "+status.getCreatedAt()+ " : "+status.getUser().getName()+"--------"+status.getText());
                System.out.println("url :"+status.getUser().getURL());
                System.out.println("Lang :"+status.getLang());
            }
            if (statuses.size() == size)
                break;
        }catch(TwitterException e) {
            e.printStackTrace();
        }
    }
    System.out.println("Total: "+statuses.size());
}

更新: 在@AndyPiper给出答案之后

我的问题是我收到的每条推文都会被截断或不完整。如果我收到的推文长度超过 140 个字符,则会被截断。我找到了引用tweet_mode=extended ,但我不知道如何使用它。如果你知道什么请告诉我。

最佳答案

你的配置应该是这样的:

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

解释得很好here

关于java - 如何使用 twitter4j 获取用户时间线的完整推文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48056010/

相关文章:

java - 在 Java 中创建并迭代字符串列表

java - 使用 ArrayList 进行二进制搜索集合

python - 如何使用 tweepy 验证推文是否地理定位/接受坐标

java - 在 Tomcat/Spring 中映射静态和动态文件?

java - Android - 在 ImageView 上绘制图片

c# - Linq to XML 从 twitter API 解析单个 "status"节点

python - twython get_followers_list 只能获取200个关注者

android - 如何在 Android 中集成 Twitter 关注按钮?

java - 使用 Twitter4j 从推文中删除主题标签、用户名和 URL

java - twitter4j 和处理出现问题