【问题标题】:is there any link to show all public repositories in GitHub?是否有任何链接可以显示 GitHub 中的所有公共存储库?
【发布时间】:2023-04-09 10:48:02
【问题描述】:

昨天,我试图获取 GitHub 中所有公共存储库的列表,但我没有找到任何链接。

例如,在 Sourceforge 中,您可以按类别列出所有项目,或者在 Google 代码中您可以搜索所有项目。

是的,我尝试使用诸如“*”或“%”之类的关键字或空字符串进行搜索,但您只能看到此页面https://github.com/search?q=&type=Everything&repo=&langOverride=&start_value=1

【问题讨论】:

标签: github search-engine repository


【解决方案1】:

您可以使用以下请求列出 github 中的所有存储库:

https://api.github.com/repositories?since=0

它将返回 id>0 的前“n”个存储库作为 JSON 数组。 您应该处理这个“n”,存储“id”。当您到达“页面”的末尾时,您只需再次使用 since=lastId: 例如:

https://api.github.com/repositories?since=300

这是我发现列出所有存储库的唯一方法,因为 SEARCH api 的每次搜索限制为 1000 个存储库。 如果您打算处理所有回购,则应准备应对速率限制:

https://developer.github.com/v3/rate_limit/

经过身份验证的用户可以获得更好的限制,您可以使用 access_token(查看文档)。小心,不要提出太多要求。 如果您需要过滤存储库,则需要为每个存储库执行额外的查询(搜索 API)。准备好处理超过一千万个存储库。 Java 示例:(使用 javax.json.Json)

int id=0;
do {
    URL url = new URL("https://api.github.com/repositories?since="+id+"&access_token="+oauth);
    // implement callApi such as Json.createReader(url.openStream()), but please make it sleep for a minute if the limit got reached        
    try (JsonReader rdr = callApi(url)) {
        JsonArray results = rdr.readArray();
        for (JsonObject result : results.getValuesAs(JsonObject.class)) {
            id = result.getInt("id");
            String name = result.getString("name");
            boolean priv = result.getBoolean("private");
            ... do whatever you want...
        }
    }
} while (some stop condition);

祝你好运,我花了一些时间才发现这一点。

【讨论】:

    【解决方案2】:

    查看this search。我不确定这是否列出了所有公共回购,但我敢打赌这是一个好的开始。 (搜索可能需要几秒钟,所以请耐心等待)

    【讨论】:

    • 哇!超过 300 万个存储库;看来github也有一些垃圾邮件问题;)github.com/voklas/…
    猜你喜欢
    • 2022-11-24
    • 2015-07-09
    • 2022-11-20
    • 2013-12-11
    • 2021-09-29
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 2010-12-08
    相关资源
    最近更新 更多