【问题标题】:Twitter Query API filter not working in date rangeTwitter 查询 API 过滤器在日期范围内不起作用
【发布时间】:2015-11-06 22:07:17
【问题描述】:

我正在尝试使用 twitter4j 来查询 twitter 状态数据。我只需要在他/她的时间线上发布一天的用户的推文。 到目前为止,我使用这段代码来实现这一点:

try {
    for (int i = 0; i < userNames.length; i++) {
        int totalCount = 0;
        Query query = new Query(userNames[i]);
        query.setCount(100);
        int searchResultCount;
        long lowestTweetId = Long.MAX_VALUE;
        totalCount = 0;
        Date date = new Date(
                DateTimeUtils.getNDaysbackDailySliceStamp(1));
        String modifiedDate = new SimpleDateFormat("yyyy-MM-dd")
                .format(date);
        System.out.println(modifiedDate);
        query.setSince(modifiedDate);
        date = new Date(DateTimeUtils.getDailySliceStamp());
        modifiedDate = new SimpleDateFormat("yyyy-MM-dd").format(date);
        System.out.println(modifiedDate);
        query.setUntil(modifiedDate);
        List<DBObject> dbl = new ArrayList<DBObject>();
        Set<Long> ste =  new HashSet<Long>();
        do {
            QueryResult queryResult = twitter.search(query);
            searchResultCount = queryResult.getTweets().size();
            for (Status st : queryResult.getTweets()) {
                if (!st.isRetweet()) {
                    URLEntity[] uEn = st.getURLEntities();
                    StringBuilder url = new StringBuilder();
                    for (URLEntity urle : uEn) {
                        if (urle.getURL() != null && !urle.getURL().isEmpty()) {
                            url.append(urle.getExpandedURL());
                        }
                    }
                    ste.add(st.getId());
                    dbl.add(createTweetObject(userNames[i]/*, total*/,
                            st.getText(), st.getRetweetCount(), st.getId(),
                            url.toString(), st.getCreatedAt(), st.isRetweet()));
                }
                }
        } while (searchResultCount != 0 && searchResultCount % 100 == 0);
        System.out.println(dbl.size());
        System.out.println(dbl);
        if (dbl != null && !dbl.isEmpty()) {
        //  populateTweetCollection(dbl);
        }
        System.out.println("TweetCount"+ste.size());
        System.out.println(ste);
    }
} catch (Exception e) {
    log.error("Exception in TwitterTime line api---"
            + Config.getStackTrace(e));
}

但是这段代码给了我其他人在推文中提到我正在寻找的用户。
例如,我在一天内搜索了我的推文,实际上是 8 条,但它给了我 12 条结果,因为我的一些朋友在他们的时间线上使用 @username 运算符在推特上提到了我的推特名称。

还有一件事我想确认截断的推文是否在整个组中具有相同的id

问候

【问题讨论】:

    标签: java twitter twitter4j


    【解决方案1】:

    试试这个

            try {
    
             ResponseList<User> users = twitter.lookupUsers("user name"); 
             for (User auser : users) { 
                 System.out.println("Friend's Name " + auser.getName()); 
                 if (auser.getStatus() != null) {
                     System.out.println("Friend timeline"); 
                     List<Status> statusess =
                         twitter.getHomeTimeline(); 
                     for (Status status3 : statusess) {
                            System.out.println(status3.getText()); 
                     } 
                } 
            }
        } catch (TwitterException e) {
            e.printStackTrace();
        }
    

    【讨论】:

      【解决方案2】:

      使用此代码可以正常工作 if (!st.isRetweet() && (st.getUser().getScreenName().equalsIgnoreCase(userNames[i]))) { URLEntity[] uEn = st.getURLEntities(); StringBuilder url = new StringBuilder(); } if (st.getId() < lowestTweetId) { lowestTweetId = st.getId(); query.setMaxId(lowestTweetId); }

      我确认它不是 RT,并且用户名屏幕名称也与我正在寻找的用户相似。

      问候
      维伦德拉·阿加瓦尔

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-24
        • 2014-11-02
        • 2019-10-20
        • 2021-08-12
        • 2012-02-07
        • 1970-01-01
        相关资源
        最近更新 更多