2016-03-12 19 views
1

我想在最近一年收集一些特定人的推文。我使用Twitter4J,像這樣:如何在特定的時間間隔(Twitter4J)獲取特定人的推文?

Paging paging = new Paging(i, 200); 
    try { 
     statuses = twitter.getUserTimeline("martinsuchan",paging); 
    } catch (TwitterException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

但我怎麼可以過濾用戶的鳴叫在一定的時間間隔?

任何答案讚賞

回答

0

您可以在本地過濾狀態,基於status.getCreatedAt()。例如:

try { 
    int statusesPerPage = 200; 
    int page = 1; 
    String username = "username"; 
    Calendar cal = Calendar.getInstance(); 
    cal.add(Calendar.YEAR, -1); 

    Twitter twitter = new TwitterFactory().getInstance(); 
    Paging paging = new Paging(page, statusesPerPage); 
    List<Status> statuses = twitter.getUserTimeline(username, paging); 

    page_loop: 
    while (statuses.size() > 0) { 
     System.out.println("Showing @" + username + "'s home timeline, page " + page); 
     for (Status status : statuses) { 
      if (status.getCreatedAt().before(cal.getTime())) { 
       break page_loop; 
      } 
      System.out.println(status.getCreatedAt() + " - " + status.getText()); 
     } 
     paging = new Paging(++page, statusesPerPage); 
     statuses = twitter.getUserTimeline(username, paging); 
    } 
} catch (TwitterException te) { 
    te.printStackTrace(); 
} 
+0

我認爲serach/tweets端點不會在一年內返回tweets。您應該使用狀態/ user_timeline端點https://dev.twitter.com/rest/reference/get/statuses/user_timeline – itzmukeshy7

+0

@ itzmukeshy7非常感謝!答案已更新。 – aalazz

+0

@ aalazz,@ itzmukeshy謝謝大家,我會嘗試這些方法。我使用put狀態和創建時間在一起,然後通過時間標記過濾這些字符串,但我認爲這不是一個好的解決方案。謝謝你們。 – QYang

相關問題