【问题标题】:How to query all languages from GitHubs graphql如何从 GitHubs graphql 查询所有语言
【发布时间】:2020-07-10 07:41:23
【问题描述】:

我正在尝试使用他们的 v4 graphql 查询 GitHub 以获取有关存储库的信息。我想查询的一件事是 repo 中使用的所有语言的细分。或者如果可能的话,对所有用户存储库中的语言进行细分。我尝试了以下 sn-p,但它返回 null,其中作为主要语言返回主要语言

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

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

【问题讨论】:

    标签: github graphql github-api github-graphql


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      您可以通过查看语言size 来获取有关一种语言(即主要、次要等)的更多详细信息。将整个 repo 的 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

      【讨论】:

        猜你喜欢
        • 2021-07-19
        • 2018-06-14
        • 2019-06-14
        • 2018-03-10
        • 2021-04-21
        • 1970-01-01
        • 2023-01-26
        • 1970-01-01
        • 2020-09-12
        相关资源
        最近更新 更多