有没有办法获取 GitHub 存储库中所有版本的列表?
Is there a way to get a list of all the releases in a GitHub repository?
我相信 PyGitHub
库可以做到这一点,但为了我的项目,我直接用 requests
库调用 GitHub API我正在使用 requests-cache
库缓存 API 调用的结果。
根据 documentation 的 per_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
我相信 PyGitHub
库可以做到这一点,但为了我的项目,我直接用 requests
库调用 GitHub API我正在使用 requests-cache
库缓存 API 调用的结果。
根据 documentation 的 per_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