【问题标题】:How to get more than 1000 search results with API Github如何使用 API Github 获得 1000 多个搜索结果
【发布时间】:2020-08-31 18:23:48
【问题描述】:

我想列出最近 30 天内创建的最多明星 Github 存储库,但要显示超过 1000 次搜索,我有此错误消息

{ "message": "只有前 1000 个搜索结果可用", "documentation_url": "https://developer.github.com/v3/search/" }

你有解决这个问题的办法吗?

提前致谢

【问题讨论】:

    标签: angular github-api


    【解决方案1】:

    zifan 是对的。 您可以在过去 30 天内每天创建一个查询;或每天两次查询(每 12 小时一次);等等。间隔越小,查询调用越多。同时,您捕获的存储库越多。

    下面是一个 Python 示例。它运行curl 调用,因此您可以轻松地将其翻译成不同的语言。

    import requests
    from datetime import datetime, timedelta
    
    URL = f'https://api.github.com/search/repositories?q=is:public created:SINCE..UNTIL'
    HEADERS = {'Authorization': 'token <PASTE_HERE_GITHUB_ACCESS_TOKEN>'}
    
    since = datetime.today() - timedelta(days=30)  # Since 30 days ago
    until = since + timedelta(days=1)   # Until 29 days ago 
    
    while until < datetime.today():
        day_url = URL.replace('SINCE', since.strftime('%Y-%m-%dT%H:%M:%SZ')).replace('UNTIL', until.strftime('%Y-%m-%dT%H:%M:%SZ'))
        r = requests.get(day_url, headers=HEADERS)
        print(f'Repositories created between {since} and {until}: {r.json().get("total_count")}')
    
        # Update dates for the next search
        since = until
        until = since + timedelta(days=1)
    

    当然,存储库的数量可能仍然太大。在这种情况下,请尝试

    1. 使用分页;
    2. 减少间隔 SINCE..UNTIL 以及 timedelta;
    3. 在查询中添加更多过滤器,例如:排除存档和分叉的存储库,获取仅具有最少星数的存储库,等等。

    here 为例。 这是一个从 Github 收集存储库的 Python 工具:https://github.com/radon-h2020/radon-repositories-collector

    【讨论】:

    • 我尝试运行你的 sn-p 但它每天都返回 None。
    • 感谢您提及这一点。实际上,api 端点是错误的(搜索/存储库而不是搜索/存储库)。我编辑了脚本并对其进行了测试。
    【解决方案2】:

    根据 git hub API v3 文档,GitHub 搜索 API 为每次搜索提供多达 1000 个结果。 https://developer.github.com/v3/search/

    【讨论】:

      【解决方案3】:

      遇到同样的问题。我认为唯一的解决方法是将您的查询拆分为返回少于 1k 结果的小查询。 (参考github search limit results

      【讨论】:

        猜你喜欢
        • 2011-05-26
        • 1970-01-01
        • 2014-02-25
        • 1970-01-01
        • 2017-08-13
        • 2022-11-12
        • 2017-07-28
        • 1970-01-01
        • 2021-04-10
        相关资源
        最近更新 更多