Как получить все пользовательские репозитории по github api? (включая прикрепленные репозитории)

Я пытаюсь получить все пользовательские репозитории с помощью PyGithub. Для ясности пользователь: https://github.com/mbostock имеет 53 публичных репо.

мой код:

import github
con = github.Github(mylogin, pass)
u = g.get_user('mbostock').get_repos('all')

и я получаю 53, это правильное число, но я заметил, что среди всех полученных репозиториев я не могу найти закрепленные репозитории некоторых пользователей, например, d3 / d3, хотя этот пользователь также вносит большой вклад в этом репо.

Если кто-то знает github api и способ получения всех пользовательских репозиториев, пожалуйста, помогите.

1 ответ

Решение

Не все закрепленные репозитории пользователя принадлежат этому пользователю - они принадлежат организациям, членом которых является пользователь, поэтому они не отображаются при запросе API для репозиториев пользователя через GET /users/:user/repos (извините, я не знаком с PyGithub, поэтому я буду говорить только в стандартных URL API).

Нет простого способа получить список репозиториев, в которые пользователь вносит свой вклад, без выполнения нескольких запросов API - например, получить список организаций, к которым принадлежит пользователь (GET /user/:user/orgs), а затем перечисление репозиториев в этой организации (GET /orgs/:org/repos). Однако при использовании этого подхода нет гарантии, что пользователь внес вклад в каждое хранилище в организации.

Конечно, вы могли бы дополнительно отфильтровать по авторам коммитов, но в этот момент вы, вероятно, потратили много усилий (и ограничение скорости).

Другие вопросы по тегам