Запрос Github Graphql: достижение нулевого указателя после 1000 выходных данных (или 10 запросов * 100 элементов на запрос) - PullRequest
0 голосов
/ 18 марта 2020

Я ведущий студент-исследователь в команде, пытающейся анализировать и разрабатывать репозитории GitHub. Мы пытаемся получить (repo_owner и repo_name) для каждого проекта, размещенного на Github, который соответствует следующим критериям:

query MyQuery {
  search(query: "language:Python", type: REPOSITORY, 
    first: 100
  ) {
    pageInfo {
      endCursor
      hasNextPage
    }
    edges {
      node {
        ... on Repository {
          nameWithOwner
          issues {
            totalCount
          }
          defaultBranchRef {
            target {
              ... on Commit {
                history(first: 0) {
                  totalCount
                }
              }
            }
          }
        }
      }
    }
  }
}

Мы можем перебирать курсоры 10 раз. Но когда мы достигаем курсора "Y3Vyc29yOjEwMDA ="

query MyQuery {
  search(query: "language:Python", type: REPOSITORY, 
    first: 100, after:"Y3Vyc29yOjEwMDA="
  ) {
    pageInfo {
      endCursor
      hasNextPage
    }
    edges {
      node {
        ... on Repository {
          nameWithOwner
          issues {
            totalCount
          }
          defaultBranchRef {
            target {
              ... on Commit {
                history(first: 0) {
                  totalCount
                }
              }
            }
          }
        }
      }
    }
  }
}

, мы получаем следующий ответ:

{
  "data": {
    "search": {
      "pageInfo": {
        "endCursor": null,
        "hasNextPage": false
      },
      "edges": []
    }
  }
}

Я знаю из быстрого расширенного поиска на Github, что в настоящее время ~ 4 000 000 python -language publi c репозитории, размещенные на сайте. Мы можем получить только 1000, прежде чем встретим этот нулевой курсор.

Пожалуйста, дайте нам знать, если есть обходной путь для этой проблемы. Мы хотели бы продолжать использовать v4 API из-за минимального вывода данных c (т. Е. Оно дает нам только то, что мы хотим: repo_owner и имя репо, а также количество выпусков и количество коммитов).

Спасибо Вам за помощь!

...