Использование Github API для получения всех участников с Python - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь собрать всех членов нашей организации на Github. У нас около ~ 4K.

Используя документацию здесь , я пытаюсь пролистать результаты, но не просматриваю страницы результатов.

Вот Код:

from dotenv import load_dotenv, find_dotenv
import json
import requests
import os

load_dotenv(find_dotenv())

headers = {
    "authorization": f"{os.getenv('github_token')}",
    "content-type": "application/json"
}


query_url = "https://api.github.com/orgs/<name of Org>/members?page="

members = [ ]

page_no = 1

loop_control = 0
while loop_control == 0:
    url = query_url + str(page_no)

    request = requests.get(url, headers=headers)

    print(url)
    print(request.status_code)

    response = request.json()

    print(len(response))

    for i in response:
        members.append(i)

    if len(response) == 30:
        page_no += 1
    elif len(response) < 30: 
        loop_control = 1
        with open('data/github/response.json', 'w') as file:
            print(len(members))
            json.dump(members, file)

С помощью кода он получает первые 30 результатов, затем 7 для страницы 2 результатов.

Есть идеи?

1 Ответ

0 голосов
/ 17 июня 2020

Две вещи, которые следует проверить в вашем скрипте:

  • убедитесь, что токен связан с учетной записью, которая является членом организации
  • убедитесь, что ваш токен имеет область действия read:org set

Если одно из этих условий не выполнено, сценарий будет видеть только пользователей, имеющих членство publi c в организации, что объясняет разницу в числах, которые вы видите.

Чтобы также улучшить производительность скрипта, вы можете добавить параметр строки запроса per_page=100, чтобы получать 100 результатов на каждый вызов API вместо 30 по умолчанию. Это задокументировано в разделе Pagination API. документы

...