下载匹配主题的GitHub存储库列表?

时间:2018-01-22 20:51:22

标签: git github command-line github-api

有没有办法下载符合GitHub主题的项目列表? 例如,如果我写:

https://github.com/topics/haskell

在Web浏览器中,返回一个包含与Haskell相关的GitHub项目的页面。我阅读了他们的GitHub API,但他们似乎没有实现该功能:https://developer.github.com/v3/

此外,端点https://api.github.com/似乎不包含任何选项。我得到的所有尝试都是https://api.github.com/topics/haskell

{
  "message": "Not Found",
  "documentation_url": "https://developer.github.com/v3"
}

4 个答案:

答案 0 :(得分:1)

主题的正确GitHub API端点是:https://api.github.com/search/topics,您需要在q查询参数中提供主题查询。这是一个直接来自API documentation的示例查询:

curl -H 'Accept: application/vnd.github.mercy-preview+json' 'https://api.github.com/search/topics?q=ruby+is:featured'

以下是查找搜索主题的示例' haskell':

curl -H 'Accept: application/vnd.github.mercy-preview+json' 'https://api.github.com/search/topics?q=haskell'

请参阅:     https://developer.github.com/v3/search/#search-topics

答案 1 :(得分:0)

如果您要搜索与主题匹配的存储库,请将/search/repositoriestopic属性一起使用:

curl -H "Accept: application/vnd.github.mercy-preview+json" \
    https://api.github.com/search/repositories?q=topic:haskell

您必须在开发人员预览中提供application/vnd.github.mercy-preview+json

  

注意:目前GitHub上存储库的主题属性   可供开发人员预览。要查看主题属性   如果调用返回存储库结果,则必须提供自定义媒体   在Accept标头中键入:

     

应用/ vnd.github.mercy预览+ JSON

答案 2 :(得分:0)

“您可以在整个GitHub Enterprise上全局搜索代码,或者在特定存储库或组织内搜索代码。要在所有公共存储库中搜索代码,必须登录GitHub Enterprise帐户。”

此curl仅返回标签或主题 curl -H'接受:application / vnd.github.mercy-preview + json''https://api.github.com/search/topics?q=haskell'

来源:https://help.github.com/en/enterprise/2.13/user/articles/searching-code#:~:text=You%20can%20search%20for%20code%20globally%20across%20all%20of%20GitHub,%22About%20searching%20on%20GitHub.%22

答案 3 :(得分:0)

您可以使用 GraphQL API 获取主题中的存储库。

试试看:https://docs.github.com/en/graphql/overview/explorer

query { 
  search(first: 10, type: REPOSITORY, query: "topic:databases") {
    repositoryCount
    nodes {
      ... on Repository {
        nameWithOwner
      }
    }
  }
}
{
  "data": {
    "search": {
      "repositoryCount": 831,
      "nodes": [
        {
          "nameWithOwner": ".../..."
        },
        {
          "nameWithOwner": ".../..."
        },
...

警告:您不能使用 GraphQL api 来获取主题列表。

主题查询受限。

Query.topic 用于搜索单个主题和 Repository.repositoryTopicsTopic.relatedTopics 存在为“相关主题列表,包括该主题的别名,按最相关的在前排序。最多返回 10 个主题。”。