Twitter 速率限制更改为 NULL,R tweetscores 包自行终止

Twitter rate limit changes to NULL, R tweetscores package self-terminates

我正在使用 R tweetscores 包来估计 Twitter 用户的意识形态得分(即根据他们关注的帐户估计用户的意识形态)。 我正在使用下面的代码循环访问用户名列表,了解他们关注的人 (getFriends()),然后估计他们的意识形态分数 (estimateIdeology2())。 getFriends() 函数调用 Twitter API 直到达到速率限制。在这种情况下,它应该等待然后恢复拨打电话。 但是,循环似乎在大约 40 分钟后自行终止。 看起来保存剩余调用次数的变量在一段时间后从 0 变为 NULL,导致循环中断。 有没有人遇到过这个 and/or 知道如何解决这个问题?我尝试过调整代码以在该变量变为 NULL 并更改其值时捕获它,但这并不能阻止循环终止。理想情况下,我希望保持此循环 运行 而不是每 40 分钟手动重新启动一次。 getFriends() 函数的原始代码在这里(似乎在第 47 行中断):https://github.com/pablobarbera/twitter_ideology/blob/master/pkg/tweetscores/R/get-friends.R

for(user in usernames$user_screen_name){
  skip_to_next <- FALSE
  tryCatch({
    friends <- getFriends(screen_name=user, oauth=my_oauth)
    results <- estimateIdeology2(user, friends)
  }, error=function(e){skip_to_next <<- TRUE})
  if(skip_to_next) { next }     
  print("results computed successfully.")
  user_scores[nrow(user_scores) + 1,] = list(screen_name = user, 
                                             ideology_score = results)
}

Tweetscores 包使用 API v1 端点和 rtweet 包。这些正在被 API v2 和 academictwitter 取代。所以我建议你通过academictwitteR获取好友列表。

get_user_following(user_ids, bearer_token)

但速率限制是真实存在的:您每 15 分钟可以发出 15 个请求 window。因此,如果您的用户只关注少数几个帐户(这样就不需要分页),在最好的情况下,您可以每分钟获得一个用户的关注者。如果您有数十万用户,这可能需要很长时间。寻找解决此问题的方法。