给定 Twitter API 速率限制,如何获取至少 10,000 条推文?
How to grab at least 10,000 tweets given the Twitter API Rate Lmit?
如标题所示,鉴于 Twitter 有其自身的限制,我如何才能获取至少 10,000 条推文?
Twitter 每 15 分钟允许 180 个查询。所以我打算使用 Timer
和 TimerTask
设置一个间隔并保持 运行 代码直到我得到 10,000 条这样的推文:
timer.schedule((TimerTask) getTweets("$FB up"),0,900000);
问题是,每 15 分钟它会返回与前 15 分钟相同的数据。我如何让它从前 15 分钟停止的地方继续?
下面是函数
getTweets(字符串项)
int wantedTweets = 10000;
long lastSearchID = Long.MAX_VALUE;
int remainingTweets = wantedTweets;
Query query = new Query(term);
try{
while(remainingTweets > 0)
{
remainingTweets = wantedTweets - tweets.size();
if(remainingTweets > 100)
{
query.count(100);
}
else
{
query.count(remainingTweets);
}
QueryResult result = twitter.search(query);
tweets.addAll(result.getTweets());
Status s = tweets.get(tweets.size()-1);
long firstQueryID = s.getId();
query.setMaxId(firstQueryID);
remainingTweets = wantedTweets - tweets.size();
}
for (int i=0 ; i < tweets.size() ; i++) {
b = tweets.get(i);
//System.out.println(s);
//System.out.println("@" + b.getUser().getScreenName() + " - " + b.getText());
}
}
catch(TwitterException te)
{
System.out.println("Failed to search tweets: " + te.getMessage());
}
return b;
如标题所示,鉴于 Twitter 有其自身的限制,我如何才能获取至少 10,000 条推文?
Twitter 每 15 分钟允许 180 个查询。所以我打算使用 Timer
和 TimerTask
设置一个间隔并保持 运行 代码直到我得到 10,000 条这样的推文:
timer.schedule((TimerTask) getTweets("$FB up"),0,900000);
问题是,每 15 分钟它会返回与前 15 分钟相同的数据。我如何让它从前 15 分钟停止的地方继续?
下面是函数 getTweets(字符串项)
int wantedTweets = 10000;
long lastSearchID = Long.MAX_VALUE;
int remainingTweets = wantedTweets;
Query query = new Query(term);
try{
while(remainingTweets > 0)
{
remainingTweets = wantedTweets - tweets.size();
if(remainingTweets > 100)
{
query.count(100);
}
else
{
query.count(remainingTweets);
}
QueryResult result = twitter.search(query);
tweets.addAll(result.getTweets());
Status s = tweets.get(tweets.size()-1);
long firstQueryID = s.getId();
query.setMaxId(firstQueryID);
remainingTweets = wantedTweets - tweets.size();
}
for (int i=0 ; i < tweets.size() ; i++) {
b = tweets.get(i);
//System.out.println(s);
//System.out.println("@" + b.getUser().getScreenName() + " - " + b.getText());
}
}
catch(TwitterException te)
{
System.out.println("Failed to search tweets: " + te.getMessage());
}
return b;