【发布时间】:2020-08-31 18:23:48
【问题描述】:
我想列出最近 30 天内创建的最多明星 Github 存储库,但要显示超过 1000 次搜索,我有此错误消息
{ "message": "只有前 1000 个搜索结果可用", "documentation_url": "https://developer.github.com/v3/search/" }
你有解决这个问题的办法吗?
提前致谢
【问题讨论】:
标签: angular github-api
我想列出最近 30 天内创建的最多明星 Github 存储库,但要显示超过 1000 次搜索,我有此错误消息
{ "message": "只有前 1000 个搜索结果可用", "documentation_url": "https://developer.github.com/v3/search/" }
你有解决这个问题的办法吗?
提前致谢
【问题讨论】:
标签: angular github-api
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)
当然,存储库的数量可能仍然太大。在这种情况下,请尝试
以here 为例。 这是一个从 Github 收集存储库的 Python 工具:https://github.com/radon-h2020/radon-repositories-collector
【讨论】:
根据 git hub API v3 文档,GitHub 搜索 API 为每次搜索提供多达 1000 个结果。 https://developer.github.com/v3/search/
【讨论】:
遇到同样的问题。我认为唯一的解决方法是将您的查询拆分为返回少于 1k 结果的小查询。 (参考github search limit results)
【讨论】: