gpt4 book ai didi

fork - 如何使用 GitHub API 获取 GitHub 存储库的 fork 数?

转载 作者:行者123 更新时间:2023-12-04 00:07:20 25 4
gpt4 key购买 nike

我使用 Github API V3 来获取存储库的 fork 计数,我使用:

GET /repos/:owner/:repo/forks

即使存储库包含更多结果,该请求也只给我带来 30 个结果,我搜索了一下,我发现由于内存限制,API 每页只返回 30 个结果,如果我想要下一个结果,我必须指定页数.

只有我我不需要所有这些信息,我需要的只是 fork 的数量。
有没有办法只获得 fork 的数量?

因为如果我开始每页循环一页,如果存储库包含数千个结果,我的脚本可能会崩溃。

最佳答案

我有一份工作需要将所有 fork 作为 git-remotes 一个github项目。

我写了简单的python脚本https://gist.github.com/urpylka/9a404991b28aeff006a34fb64da12de4

程序的基础是递归函数,用于获取 fork 的 fork 。我遇到了同样的问题( GitHub API 只返回了 30 个项目 )。

我用 ?page=1 的增量解决了它并添加对来自服务器的空响应的检查。

def get_fork(username, repo, forks, auth=None):

page = 1
while 1:

r = None
request = "https://api.github.com/repos/{}/{}/forks?page={}".format(username, repo, page)
if auth is None: r = requests.get(request)
else: r = requests.get(request, auth=(auth['login'], auth['secret']))
j = r.json()
r.close()

if 'message' in j:
print("username: {}, repo: {}".format(username, repo))
print(j['message'] + " " + j['documentation_url'])
if str(j['message']) == "Not Found": break
else: exit(1)

if len(j) == 0: break
else: page += 1

for item in j:
forks.append({'user': item['owner']['login'], 'repo': item['name']})

if auth is None:
get_fork(item['owner']['login'], item['name'], forks)
else:
get_fork(item['owner']['login'], item['name'], forks, auth)

关于fork - 如何使用 GitHub API 获取 GitHub 存储库的 fork 数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33141081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com