首页 > 解决方案 > 当我通过 github-api v3 搜索 API 提交评论来为拉取请求做出贡献时,有没有办法查询?

问题描述

我正在尝试查询 GitHub Search API 以获取我通过提交对拉取请求的评论所做的贡献。

在我在 GitHub 上的个人资料页面上,有“贡献活动”,其中有一个窗格“在 Y 存储库中审查​​了 X 拉取请求”。当我展开它时,我会看到我通过提交评论所做的贡献列表,其中包含诸如“我何时做出贡献”之类的信息。我确认这不是创建、合并、更新拉取请求的日期。

有没有办法通过 GitHub Search API 获取“当我做出评论贡献时”?

个人资料页面上的审核日期

标签: github-api

解决方案


您可以使用GraphQL Api v4并按作者过滤来自搜索查询的每个拉取请求的评论:

{
  search(query: "reviewed-by:eps1lon is:pr updated:2019-01-01..2019-01-31", type: ISSUE, first: 100) {
    issueCount
      nodes {
        ... on PullRequest {
          repository {
            nameWithOwner
          }
          number
          reviews(author: "eps1lon", last: 1) {
            nodes {
              createdAt
              lastEditedAt
              publishedAt
              body
            }
          }
        }
    }
  }
}

在资源管理器中尝试

如果有超过 100 个结果,您将需要遍历所有结果

要格式化结果并按日期排序,您可以使用像这样的 json 解析器。使用

user=eps1lon
date_range=2019-01-01..2019-01-31
token=YOUR_TOKEN

curl -s -H "Authorization: bearer $token" -d '
{
    "query": "query {search(query: \"reviewed-by:'"$user"' is:pr updated:'"$date_range"'\", type: ISSUE, first: 100) {issueCount nodes {... on PullRequest {repository {nameWithOwner}number reviews(author: '"$user"', last: 1) {nodes {createdAt lastEditedAt publishedAt body}}}}}}"
}
' https://api.github.com/graphql | \
  jq '[ 
        .data.search.nodes[] | 
        {
            repo:.repository.nameWithOwner, 
            number:.number, 
            createdAt:.reviews.nodes[0].createdAt, 
            publishedAt:.reviews.nodes[0].publishedAt,
            lastEditedAt: .reviews.nodes[0].lastEditedAt
        } | 
        select (.createdAt >= "2019-01-01") ] | 
        sort_by(.createdAt) | 
        reverse'

推荐阅读