レポジトリ一覧取得ワンライナー
$ USER=rcmdnk
とかした状態で
$ curl -s "https://api.github.com/users/$USER/repos?per_page=100"|grep \"name\"|cut -d'"' -f4
rep-1
rep-2
...
とすれば$USER
のレポジトリ一覧を取ってこれます。
GitHubのAPIで/users/:user/repos
でレポジトリの情報をJSON形式で取ってこれますが、
デフォルトの状態だと30レポジトリまでが最初のページに表示される設定なので
これを100まで上げています。
100がMaxなので、もし100以上のレポジトリがある場合は
$ for page in $(seq 1 10);do result=$(curl -s "https://api.github.com/users/$USER/repos?page=$page&per_page=100"|grep \"name\"|cut -d'"' -f4);if [ -z "$result" ];then break;fi;echo "$result";done
こんな感じでpage
というオプションを使うと2ページ目、3ページ目…とってこれて、ここでは1-10ページ目まで最大で見るので
最大1000個のレポジトリまで見れますが、もっとあるならseq 1 10
の10を増やします。
せっかくJSON形式で返してくれるのでそれを有効に使いたい場合、jq コマンドをインストールしてあるなら、
$ curl -s "https://api.github.com/users/$USER/repos?per_page=100"|jq -c '[.[] .name]'
["repo-1","repo-2"...]
みたいな感じで処理することも出来ます。
名前だけ取ってくるならJSON出力にする意味はあまりないかもしれませんが、 他にも色々情報を一緒に集めたい時は便利です。
沢山APIでリクエストをしていると
$ curl -s "https://api.github.com/users/$USER/repos?per_page=100"
{
"message": "API rate limit exceeded for xxx.xxx.xxx.xxx. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)",
"documentation_url": "https://developer.github.com/v3/#rate-limiting"
}
みたいなエラーが出る事もあります。 APIの仕様は1時間で60回に制限されてるので、必要な場合はトークンを取得することでこれを回避する必要があります。
GitHubのSettingsから一番下にあるPersonal Access Tokens
へ行き、右上にあるGenerate new token
で新しいトークンを作成します。
色々な権限がありますが、この作業だけならuser
の項目にあるread:user
だけで十分です。
作成するとトークンが表示されるのでそれをコピーします。(一度ページを離れてしまうとトークンが見れなくなるのでその際は再度作り直すしかありません。)
コピーしたトークン(<your_token>
)を使って、
$ curl -s curl -s -H "Authorization: token <your_token>" "https://api.github.com/users/$USER/repos?per_page=100"
とすれば 1時間5000回までAPIを使うことが出来ます。