Как программно извлечь репозитории GitHub, содержащие строку кода?

Я ищу способ извлечь репозитории GitHub, содержащие файлы с определенной строкой кода. Я могу сделать это вручную, используя панель поиска GitHub. Например, если я ищу использование библиотеки pymc3, я могу найти ее в строке поиска, а затем щелкнутьCode

Как это сделать программно?

Я попытался просмотреть документацию по GitHub Search API . Search Codeфункциональность позволяет просматривать код, но, похоже, поиск выполняется только по пользователю, организации или репозиторию. Search Repositoriesфункциональность смотрит только на описание, название и README.

Обновление 1:

Просматривая этот пост , я думаю, что нашел ответ, чтобы определить некоторые репозитории, содержащие строку кода.

Если я напишу следующий код -

      url = "https://api.github.com/search/code?q=pymc3 +in:file"

headers = {
  'Authorization': 'Token xxxxxxxxxxxxxxxxx'
}

response = requests.request("GET", url, headers=headers)

print(response.text)

Я получаю следующий результат -

      "total_count":43642,"incomplete_results":false,"items":[{"name":"pymc3_stoch_vol ...

Однако результат дает мне кучу информации, такую ​​как URL-адрес git, URL-адрес HTML и некоторые репозитории, содержащие эту строку. Мне нужно найти способ извлечь все репозитории, содержащие эту строку.

Обновление 2:

Теперь я понимаю, что GitHub ограничивает количество результатов до 100 на странице и 1000 результатов в целом.

Единственный вопрос остается, почему я не нашел эту информацию в документации GitHub Search API? Пожалуйста, дайте мне знать, если мое понимание или связанный ответ неверны.

1 ответ

Запросы такого типа должны больше решаться с помощью GraphQL API, но код поиска по-прежнему не поддерживается .

Только новый код-поиск ( представленный здесь ) может обеспечить это, но:

  • это все еще в бета-версии
  • его API еще не является общедоступным.

Поэтому пока поиск кода во всех репозиториях GitHub не поддерживается.

Другие вопросы по тегам