我正在尝试找出Github API,以从以一个搜索词为标准的特定组织获取所有回购。我似乎找不到合适的组合。 Github API文档未显示如何组合您的搜索。到目前为止,我有2个问题。一个,是我无法显示完整列表。第二,我不知道如何在组织中搜索具有特定关键字的所有存储库。就像我想在组织Azure中进行搜索并找到在回购名称或描述中带有单词“ cognitive”的所有回购协议一样(搜索回购名称和描述是默认的,因此无需指定它们)。我该怎么办?
这是我到目前为止所拥有的:
import requests
org = 'Azure'
response = requests.get(f'https://api.github.com/orgs/{org}/repos')
print(response.json())
但是当我运行它时,它仅返回大约30个回购。我猜它不能全部显示(因为有成千上万个),但是如果我添加一个搜索条件,即“认知”一词,这将使存储库的数量减少很多,因此到目前为止我拥有的代码可能仅缺少搜索条件关键字。但这只是一个猜测。
答案 0 :(得分:1)
答案 1 :(得分:0)
看起来像组合不同的搜索限定符可以达到目的。这段代码通过Github上的组织进行搜索,因此我只能从回购的名称或说明的描述中获得回购结果,回购结果中带有单词“ cognitive”的信息。
下面是工作代码,您只需将{org}
和org
替换为您选择的Github组织。该代码获取JSON结果的URL(也称为html_url),然后打印URL。取消注释json.dumps()
函数以获取完整的响应。
注意:cognitive in:name,description
中的空格可以。
代码:
import json
import requests
response = requests.get(f"https://api.github.com/search/repositories?q=cognitive in:name,description+org:{org}&per_page=100")
#print(json.dumps(response.json(), indent=2))
urls = []
for repo in response.json()['items']:
urls.append(repo['html_url'])
print(len(urls), 'repos in the', org, 'organization.')
for url in urls:
print(url)
Github API的页面有助于将其组合在一起:
这显示了存储库搜索的基础:
https://developer.github.com/v3/search/#search-repositories
显示要使用哪些限定词:
https://help.github.com/en/github/searching-for-information-on-github/searching-for-repositories
正如Rishav所提到的,分页部分per_page=100
返回所需数量的正确结果:
https://developer.github.com/v3/#pagination
通过API获取信息的所有可能的端点:
https://api.github.com/