Почему мой код получает твиты только за последние 1 или 2 минуты в Twitter4j
Сказал, что Twitter API будет давать твиты через 7 дней, но когда я попытался реализовать свой код с помощью Java, я просто получил результат твитов меньше, чем достаточно. Это только покрыло твиты в 1 до 2 минут. Количество данных или твитов далеко от моей потребности. Это какая-то ошибка в моем коде? вот мой код:
public class TweetPublic {
public static void main(String[] args) {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true).setOAuthConsumerKey("key")
.setOAuthConsumerSecret("key")
.setOAuthAccessToken("key")
.setOAuthAccessTokenSecret("key");
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
FileOutputStream fos;
DataOutputStream dos;
try {
File file = new File("C:/Users/Charlie Siagian/Desktop/data.doc");
fos = new FileOutputStream(file);
dos = new DataOutputStream(fos);
try {
Query query = new Query("(#hadoop) OR (#bigdata) OR (#data) OR (#datamining) "
+ "OR (#mapreduce) OR (#flume) OR (#semanticanalytic) OR (#dataset) OR (#rdbms)"
+ "OR (#database) OR (#mysql)");
QueryResult result;
result = twitter.search(query);
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText() + "\n=======\n"
+ tweet.getCreatedAt());
dos.writeBytes("@" + tweet.getUser().getScreenName() + " - " + tweet.getText() + "\n"
+ tweet.getCreatedAt() + "\n=======\n");
}
System.exit(0);
} catch (TwitterException te) {
te.printStackTrace();
System.out.println("Failed to search tweets: " + te.getMessage());
System.exit(-1);
}
} catch (IOException e) {
e.printStackTrace();
}
}
1 ответ
У вас есть популярный запрос, поэтому вы получаете только последние 10 твитов. Вы можете вернуться к частям по 100. Используйте "& max_id =ID& count = 100"
Поэтому добавьте внешний цикл и запомните минимальный идентификатор, который вы видели на предыдущих итерациях. Для первой итерации не устанавливайте max_id, а затем продолжайте обновлять max_id до нового минимума на последующих итерациях.
https://api.twitter.com/1.1/search/tweets.json?q=%23hadoop+OR+%23bigdata+OR+%23data+OR+%23datamining+OR+%23mapreduce+OR+%23flume+OR+%23semanticanalytic+OR+%23dataset+OR+%23rdbms+OR+%23database+OR+%23mysql&max_id=758939297495982100&count=100
Похоже, это доступно здесь http://twitter4j.org/javadoc/twitter4j/Query.html
Более общие документы https://dev.twitter.com/rest/reference/get/search/tweets