4

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

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

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

4

2 回答 2

9

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

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

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

于 2020-03-30T05:26:48.787 回答
5

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

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

以下查询(pytorch 的示例)将获取您需要的数据。将其放入GH 的 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-12-19T19:44:40.440 回答