如何从 GitHubs graphql 查询所有语言

How to query all languages from GitHubs graphql

我正在尝试查询 GitHub 以获取有关使用 v4 graphql 的存储库的信息。我想查询的一件事是回购中使用的所有语言的细分。或者,如果可能的话,在所有用户的存储库中细分语言。我尝试了以下代码片段,但它 returns 为空,其中作为主要语言 returns 主要语言

languages: {
  edges: {
    node: {
      name
    }
  }
}

我唯一能找到的与语言相关的是主要语言。但我想显示用户的统计信息以及他们在单个存储库中或跨存储库使用的所有语言。

您缺少切片字段,您可以在此处输入 first: 100 以获取存储库的前 100 种语言:

{
  user(login: "torvalds") {
    repositories(first: 100) {
      nodes {
        primaryLanguage {
          name
        }
        languages(first: 100) {
          nodes {
            name
          }
        }
      }
    }
  }
}

如果你想获得每种语言的统计信息(例如,如果你想知道哪种语言是第二语言、第三语言等...)我担心 graphql 目前无法做到这一点 API 但是使用 List Languages API Rest for instance https://api.github.com/repos/torvalds/linux/languages

我想指出其他可能有帮助的东西。

您可以通过查看语言 size 获得有关语言(即主要、次要等)的更多详细信息。将整个仓库的 totalSize 与它所具有的每种语言的 size 进行比较。

以下查询(pytorch 示例)将获取您需要的数据。放入GH's GQL Explorer查看。

{
  repository(name: "pytorch", owner: "pytorch") {
    languages(first: 100) {
      totalSize
      edges {
        size
        node {
          name
          id
        }
      }
    }
  }
}

您将得到表单的输出

{
  "data": {
    "repository": {
      "languages": {
        "totalSize": 78666590,
        "edges": [
          {
            "size": 826272,
            "node": {
              "name": "CMake",
              "id": "MDg6TGFuZ3VhZ2U0NDA="
            }
          },
          {
            "size": 29256797,
            "node": {
              "name": "Python",
              "id": "MDg6TGFuZ3VhZ2UxNDU="
            }
          }, ...

要获得每种语言的百分比,只需执行 size / totalSize * 100