Я хотел бы получить настоящие имена всех участников в список репозиториев github.Я могу это сделать, но для этого нужно выполнить серию циклических вызовов API github.Если я хочу сделать, скажем, 100 лучших пакетов R, мой подход будет принимать 2100 вызовов API (при условии 20 участников на репо).Если я недооцениваю количество участников, я могу нарушить ограничения для авторизованных пользователей.Я хотел бы знать, если есть подход, который требует меньше вызовов API.Ниже приводится то, что я считаю «сложным» способом сделать это.Этот пример просто получает одного участника из одного репозитория, для иллюстрации, без перебора списков.
library(dplyr)
library(jsonlite)
#this would actually be a list of multiple repos
repo_name <- "dplyr"
# we don't know the github username associated with the package so construct a search
# to get the most likely candidate
search_url <- paste0("https://api.github.com/search/repositories?q=",
repo_name,
".%20is:name+language:r&sort=stars&order=desc")
# first api call. would need to would need to loop/map/apply over multiple contributors repo names
all_repos<-jsonlite::read_json(search_url,simplifyVector = TRUE)
# assume first repo is target. Hope so.
target_repo<-all_repos$items$full_name[1]
search_url <- paste0("https://api.github.com/repos/",
target_repo,
"/contributors")
#second api call
contributors <- jsonlite::read_json(search_url,simplifyVector = TRUE)
#third api call. would need to loop/map/apply over multiple contributors
real_name <- jsonlite::read_json(contributors$url[1])$name
real_name
#> [1] "Romain François"
Спасибо.