提问人:BooRuleDie 提问时间:9/23/2022 最后编辑:Brian Tompsett - 汤莱恩BooRuleDie 更新时间:9/15/2023 访问量:98
Github API 搜索代码,JSON 中缺少项目
Github API search code, missing items in JSON
问:
我一直在尝试构建一个工具,该工具需要获取 GitHub 代码搜索结果的所有文件的 URL。例如,当您转到此处并搜索 .你会看到有 381 个代码结果,我想获取所有这些 381 个文件的 URL。uber.com api_key
为此,我学习了如何使用 GitHub API V3 并制作了以下函数:
def fetchItems(search, GITHUB_API):
items = set()
response = {"items":[1]}
pageNumber = 1
while(response["items"]):
sleep(3) # trying to avoid rate limit, not successful though :(
url = "https://api.github.com/search/code"
params = {
"q" : search,
"per_page" : 30, # default value, it can be increased to 100
"page" : pageNumber
}
headers = {
"Accept" : "application/vnd.github+json",
"Authorization" : f"Bearer {GITHUB_API}"
}
r = requests.get(url=url, headers=headers, params=params, verify=False)
if r.status_code == 403: # if we exceed the rate limit, sleep until rate limit get reseted
epochReset = int(r.headers["X-Ratelimit-Reset"])
epochNow = time()
if epochNow < epochReset:
sleep((epochReset - epochNow) + 1)
sleep(1)
continue
response = json.loads(r.text)
for file in response["items"]:
items.add(file["html_url"])
pageNumber += 1
return items
page
变量指示每个页面中将返回的项目数,page 是页面:)。通过增加每个请求中的页码,您应该能够根据我的理解获得所有项目。
但是,当我打开数据库并检查已写入的项目时,我发现只有 377 个文件,因此缺少 4 个文件:
.
我检查了数据库编写器功能,我确信这没有任何问题。GitHub API 是否在 JSON 中返回缺失的项目,或者我做错了什么?
答:
1赞
Robert J. Walker
9/15/2023
#1
一种可能性是,为 GitHub 终结点提供支持的索引仅索引小于 384 KB 的文件。如果您在网站上搜索时发现的任何文件太大,它们将不会显示在您的回复中。/search/code
评论
set()