【问题标题】:Twitter4j - get older tweets for hashtagTwitter4j - 为标签获取较旧的推文
【发布时间】:2014-08-03 22:48:28
【问题描述】:

我想在我的 java 应用程序中从 twitter 流式传输推文。我目前可以使用 Twitter4J 做到这一点。 这是我的代码示例 -

public static void main(String args[])
{
        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true);
        cb.setOAuthConsumerKey("PEBF3A1wUnNLfT83jpjGBEVNn");
        cb.setOAuthConsumerSecret("Cqcuw6xyQ2tVtkGdy76s9fQuDigyDuJwxrgMETNhfuORloNFju");
        cb.setOAuthAccessToken("2492966954-Fut0P36Enh0V1UAAVODUHSTGvYKy4lscWIEpaej");
        cb.setOAuthAccessTokenSecret("x8onfYsnZvgImnyLVd1ncwvMhwNtrieU16gTkywUZOzpP");

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

        StatusListener listener = new StatusListener(){

            public void onStatus(Status status) 
            {
                System.out.println();
                System.out.println("*****************************************************************");
                User user = status.getUser();
                // gets Username
                String username = status.getUser().getScreenName();
                System.out.println(username);
                String profileLocation = user.getLocation();
                System.out.println(profileLocation);
                long tweetId = status.getId(); 
                System.out.println(tweetId);
                String content = status.getText();
                System.out.println(content +"\n");
            }
            public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {}

            public void onTrackLimitationNotice(int numberOfLimitedStatuses) {}

            public void onException(Exception ex) {
                ex.printStackTrace();
            }

            @Override
            public void onScrubGeo(long arg0, long arg1) {
                // TODO Auto-generated method stub

            }
            @Override
            public void onStallWarning(StallWarning arg0) {
                // TODO Auto-generated method stub

            }
        };

        List<String> queries = new ArrayList<String>();
        queries.add("#carb0nx");

        twitterStream.addListener(listener);
        //twitterStream.firehose(20);

        String[] trackQueries = (String[]) queries.toArray(new String[queries.size()]);

        FilterQuery filterQuery = new FilterQuery();
        twitterStream.filter(filterQuery.track(trackQueries));
}

上述程序仅获取运行程序后为主题标签添加的推文。在获取新添加的推文之前,我还想获取所有旧推文。

提前致谢。enter code here

【问题讨论】:

    标签: twitter twitter4j


    【解决方案1】:

    您发布的代码使用流式 API。所以你只会收到新的推文。

    查看此示例以获取旧推文:

    https://github.com/yusuke/twitter4j/blob/master/twitter4j-examples/src/main/java/twitter4j/examples/search/SearchTweets.java

    另请查看 https://dev.twitter.com/docs/rate-limiting/1.1 以了解 REST API 速率限制

    【讨论】:

    • 这个例子是关于获取用户时间线的。我想获取任何用户发布的特定主题标签的推文。
    • 查看此示例以搜索过去的推文:github.com/yusuke/twitter4j/blob/master/twitter4j-examples/src/…
    • 以上链接中的示例仅向我们提供了过去 7 天的推文。我之前已经尝试过这个例子。我想为过去一年的推文等标签获取较旧的推文。有可能吗?
    • 是有可能的,但是过去一年的推文获取时间会比较长。根据当前的速率限制 (dev.twitter.com/docs/rate-limiting/1.1/limits),您每 15 分钟只能获得 450 条推文(用于搜索)。如果您的主题标签有大量推文,则需要几天时间才能获得一年内的推文。
    • 时间不是问题。但是我在许多博客文章中读到,twitter 不允许获取超过 7 天的推文。您是否知道任何为主题标签获取超过 7 天的推文的示例?
    猜你喜欢
    • 2015-11-20
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 2014-12-19
    • 1970-01-01
    相关资源
    最近更新 更多