使用GitHub GraphQL Api获取按星标排名的前10大javascript /开放源代码存储库

时间:2019-05-22 07:19:03

标签: request graphql github-api

我想在python项目中使用GitHub GraphQL Api获得按星级排名的前10个javascript /开放源代码存储库(以及一些相关信息)。到目前为止,我有这个查询:

query{
  search(type: REPOSITORY, query: "language:javascript", first:10) {
    userCount
    edges {
      node {
        ... on Repository {
          name
          url
          stargazers {
            totalCount
          }
          owner{
            login
          }
        }
      }
    }
  }
}

问题在于它并不总是返回相同的结果:它将在每个查询中返回按starcount排序的10个随机存储库,而不是绝对前10位。

最重要的是,我想获得开源的软件。

我使用查询

query{
licenses{name}
}

以获取许可证列表,但我不知道这是否是详尽的列表(似乎缺少诸如MIT之类的某些许可证)。根据文档,它是

  

返回已知的开源许可证列表。

如何获取许可证的详尽列表并将其添加到上面的主要查询中,以使我的研究更加精确?

我似乎找不到明确的答案,因为有关GitHub的GraphQl api的文档稀缺且含糊不清。

谢谢

1 个答案:

答案 0 :(得分:0)

我从GitHub支持中获得了关于结果不一致的原因的部分解释:这是由于查询运行时间过长导致超时的事实。

  

对于我们的搜索基础结构而言,某些查询在计算上非常昂贵。为了让所有人都能快速搜索,我们限制了单个查询可以运行多长时间。在极少数情况下,当查询超过时间限制时,搜索会返回超时之前找到的所有匹配项,并通知您发生了超时。

     

达到超时并不一定意味着搜索结果不完整。这只是意味着查询在搜索所有可能的数据之前已被终止。

     

我们的团队在这里写过:

     

https://help.github.com/articles/troubleshooting-search-queries/#potential-timeouts

     

鉴于这种现实,这些超时可能会导致分页浏览结果时出现不一致的情况。我们看到了如何在将来的搜索迭代中改善这一点,因此我们已经通知我们的团队,以便他们知道,尽管我们不能对特定的更改做出任何保证。

编辑:由支持人员提供,添加query: "language:javascript stars:>1600"(1600或多或少是前3000次重复的最小恒星计数,但需要足够大才能缩小搜索范围)将始终提供前10个回购订单按星星。