【GitHub】【curl】コード検索の結果をリポジトリ名一覧で取得する
目次
はじめに
お世話になります、hosochinです
GitHub(GUI)の検索って少々使いにくくないですか?てことで今回は「GitHubのRest API」を使ってみようと思います
たとえばキーワードに一致したリポジトリ名の一覧の取得…みたいなのをAPI使って実現しようと思います👍
GitHubのSearch APIについて
公式ドキュメントはこちら
https://docs.github.com/ja/rest/search
検索APIのエントリポイント一覧
エントリポイント | 検索内容 |
/search/code | デフォルトブランチで様々な条件でコードを検索する |
/search/commits | デフォルトブランチで様々な条件でコミットを検索する |
/search/issues | 状態とキーワードでissueを検索する |
/search/labels | 検索キーワードに一致する名前または説明を含むラベルをリポジトリで検索する |
/search/repositories | 様々な基準でリポジトリを検索する |
/search/topics | 様々な基準でトピックを検索する |
/search/users | 様々な基準でユーザを検索する |
特定Organization内のコードを検索する
- サンプルリクエスト
curl -H "Authorization: token <TOKEN>" \
-H 'Accept: application/vnd.github.text-match+json' \
'https://api.github.com/search/code?q=<検索キーワード>+org:<特定のorganization>'
使用可能なラベルについては以下を参照
https://docs.github.com/ja/search-github/searching-on-github/searching-code
text-matchを指定することで検索結果の詳細を取得することができます
検索キーワードに一致したリポジトリ一覧を取得する
jqコマンドを使って結果をいい感じに整形したいと思います
- jqコマンドをインストール
- 公式ドキュメントはこちら
brew install jq
- リポジトリ一覧を取得する
curl -H "Authorization: token <TOKEN>" \
-H 'Accept: application/vnd.github.text-match+json' \
'https://api.github.com/search/code?q=<検索キーワード>+org:<特定のorganization>' \
| jq '[.items[].repository.name] | unique'
[
"repositoryA",
"repositoryB",
"repositoryC"
]
ただこのままだと…
API側の制限で最大100件までしかレスポンス返してくれないんです泣
101件目以降はpage=2みたいにリクエストする必要があり、次ページが尽きるまでリクエストし続ける必要が。。
こちらについてはまた今度書きたいなと思ってます😎
ディスカッション
コメント一覧
まだ、コメントがありません