Как программно извлечь репозитории 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 не поддерживается.