有没有办法获取 GitHub 存储库中所有版本的列表?

Is there a way to get a list of all the releases in a GitHub repository?

我相信 PyGitHub 库可以做到这一点,但为了我的项目,我直接用 requests 库调用 GitHub API我正在使用 requests-cache 库缓存 API 调用的结果。

根据 documentationper_page 参数,您可以检索的最大发布数是 100,但是如果我处理的存储库超过 100,我怎么还能得到所有这些的列表?下面的示例代码。

import requests

ACCESS_TOKEN = '<insert token>'

headers = {
    'Authorization': 'token ' + ACCESS_TOKEN,
    'Accept': 'application/vnd.github.v3+json'
}

response = requests.get('https://api.github.com/repos/{insert author}/{insert repository}/releases?per_page=100', headers={'Authorization': 'token ' + ACCESS_TOKEN})

print(response.json())

Github API 使用 pagination 来处理大量响应。您可以通过将 page=<n> 附加到您的请求 url 来请求除第一页以外的页面。例如:

page = 1
while True:
    response = requests.get(
        f"https://api.github.com/repos/{user}/{repo}/releases?per_page=100&page={page}",
        headers={"Authorization": "token " + ACCESS_TOKEN},
    )
    releases = response.json()
    if not releases:
        break
    print(json.dumps(releases, indent=2))
    page += 1