次のリクエストを使用して、github 内のすべてのリポジトリを一覧表示できます。
https://api.github.com/repositories?since=0
id>0 の最初の "n" 個のリポジトリを JSON 配列として返します。この「n」を処理して、「id」を保存する必要があります。「ページ」の最後に到達したら、since=lastId を使用してもう一度ヒットします。たとえば、次のようになります。
https://api.github.com/repositories?since=300
SEARCH API には検索ごとに 1000 リポジトリの制限があるため、これがすべてのリポジトリを一覧表示する唯一の方法です。すべてのリポジトリを処理する場合は、レート制限に対処する準備をする必要があります。
https://developer.github.com/v3/rate_limit/
認証されたユーザーはより良い制限を取得します。access_token を使用できます (ドキュメントを参照)。注意してください。あまりにも多くのリクエストをプッシュしないでください。リポジトリをフィルタリングする必要がある場合は、リポジトリごとに (API を検索するために) 追加のクエリを実行する必要があります。1,000 万を超えるリポジトリを処理する準備をしてください。Java の例: (javax.json.Json を使用)
int id=0;
do {
URL url = new URL("https://api.github.com/repositories?since="+id+"&access_token="+oauth);
// implement callApi such as Json.createReader(url.openStream()), but please make it sleep for a minute if the limit got reached
try (JsonReader rdr = callApi(url)) {
JsonArray results = rdr.readArray();
for (JsonObject result : results.getValuesAs(JsonObject.class)) {
id = result.getInt("id");
String name = result.getString("name");
boolean priv = result.getBoolean("private");
... do whatever you want...
}
}
} while (some stop condition);
幸運なことに、これを発見するのに時間がかかりました。