我正在尝试使用GitHub API来列出记录良好的开源Java库。为此,我浏览了GitHub API文档并完成了这个简单的卷曲。
curl -G https://api.github.com/search/repositories?q=language:Java+stars:%3E=500+library+java+in:readme > output1.txt
这个输出是一个巨大的txt文件,包含有关找到的所有存储库的信息。在这个例子中,总共有736个匹配。但是,上面命令中的文件非常难以理解,所以我决定使用jq
进行一些解析,这导致了以下代码:
curl -G https://api.github.com/search/repositories?q=language:Java+stars:%3E=500+library+java+in:readme \
| jq ".items[] | {name, description, language, watchers_count, html_url}" > parsedOutput1.txt
在此之后,我获得了大约30个存储库,而不是736个结果,这对我来说是不可接受的。
进行此搜索:GitHub搜索框中的language:java stars:>=500 java library in:readme
给出了相同的736结果。我真的不知道我做错了什么,所以我可以使用帮助。
这是一个分页问题,如文档中所示,api每个请求只提供30个项目,因此您需要添加一些代码以包含所有页面。我正在使用bash所以我的代码最终是这样的:
for i in `seq 1 34`;
do
URL="https://api.github.com/search/repositories?q=language:Java+stars:%3E=500+library+java+in:readme&page=$i"
echo $URL
curl -G $URL \
| jq ".items[] | {name, description, language, watchers_count, html_url}" >> parsedOutput1.txt
done
另外请注意,在执行大量请求时,您应该进行身份验证,否则最终会超出API速率限制消息。