Получать больше, чем количество друзей, разрешенных Twitter API, используя rtweet - PullRequest
0 голосов
/ 18 октября 2019

Я написал следующий скрипт, который выбирает друзей пользователей Twitter (в данном примере «barackobama») партиями по 75 000 (5000 друзей на вызов API x 15 вызовов API) каждые 15 минут, используя rtweet. Однако после завершения работы скрипта я обнаружил, что идентификаторы друзей повторяются через фиксированный интервал. Например, строки 1, 280001 и 560001 имеют одинаковый идентификатор. Строки 2, 280002 и 560002 имеют одинаковый идентификатор и т. Д. Мне интересно, правильно ли я понимаю next_cursor в API.

u = "barackobama"
n_friends = lookup_users(u)$friends_count
curr_page = -1
fetched_friends = 0
i = 0
all_friends = NULL

while(fetched_friends < n_friends)  {

  if(rate_limit("get_friends")$remaining == 0) {
    print(paste0("API limit reached. Reseting  at ", rate_limit("get_friends")$reset_at))
    Sys.sleep(as.numeric((rate_limit("get_friends")$reset + 0.1) * 60))
  }

  curr_friends = get_friends(u, n = 5000, retryonratelimit = TRUE, page = curr_page)
  i = i + 1
  all_friends = rbind(all_friends, curr_friends)
  fetched_friends = nrow(all_friends)
  print(paste0(i, ". ", fetched_friends, " out of ", n_friends, " fetched."))
  curr_page = next_cursor(curr_friends)
}

Любая помощь будет оценена.

1 Ответ

1 голос
/ 18 октября 2019

Вы не делаете ничего плохого. Начиная с документации :

этот порядок может быть изменен без уведомления и возможные проблемы согласованности

Для очень больших списков,API просто не вернет всю информацию, которую вы хотите.

...