GitHub API - jq过滤响应的不同结果数

问题描述 投票:0回答:1

我正在尝试使用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结果。我真的不知道我做错了什么,所以我可以使用帮助。

github pagination github-api jq
1个回答
1
投票

这是一个分页问题,​​如文档中所示,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速率限制消息。

© www.soinside.com 2019 - 2024. All rights reserved.