как эффективно вызывать github api для извлечения реальных имен нескольких участников репо - PullRequest
0 голосов
/ 27 февраля 2019

Я хотел бы получить настоящие имена всех участников в список репозиториев 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"

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...