GitHub からランダムにリポジトリを選択してソースコードをダウンロードしたい


GitHubからAPIを通じてランダムにソースコードをダウンロードする方法について知りたいです。

[api.github.com/repositories?since=50000](https://api.github.com/repositories?since=50000)

上記のようにすればレポジトリまではランダムに特定できたような感じなのですが、  
なぜsinceというパラメータでランダムになるのかがわかりません。  
上記は登録不要のAPIを使っているようですが登録が必要なAPIを使っても構いません。  
また、レポジトリのライセンス、作者も取得したいです。  
よろしくお願いします。




すべて登録不要のAPIだけで可能です。

### ランダムにソースコードをダウンロードする方法

<https://api.github.com/repositories>  
で、100件ずつ取得できます。

`id` 順にソートされているので、この配列からランダムに要素を抽出すれば良いです。

`since` パラメータに与える数値を、ランダムに生成して  
クエリとして付けると、さらに良いと思います。

[code]

    html_url: "https://github.com/octocat/Hello-World",
    
[/code]

のように、リポジトリのURLが入っているので  
この文字列を `git clone` に与えれば、ソースコードをダウンロードできます。

### レポジトリのライセンス、作者も取得したい

作者については、上記APIで返ってくる

[code]

      {
        "id": 1296269,
        "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5",
        "name": "Hello-World",
        "full_name": "octocat/Hello-World",
        "owner": {
          "login": "octocat",
          "id": 1,
          "node_id": "MDQ6VXNlcjE=",
          "avatar_url": "https://github.com/images/error/octocat_happy.gif",
          "gravatar_id": "",
          "url": "https://api.github.com/users/octocat",
          "html_url": "https://github.com/octocat",
    
[/code]

の `owner` -> `login` の部分が該当します。  
作者ページのURLが必要ならば、`owner` -> `html_url` です。

  

ライセンスについては、上記APIだけでは取得できません。

上の例の場合、  
<https://api.github.com/repos/octocat/Hello-World>  
というAPIを2便目として投げれば、ライセンス情報の含まれたJSONが返ってきます。

このURLは、1便目である  
<https://api.github.com/repositories>  
の返すJSON内に、

[code]

        "url": "https://api.github.com/repos/octocat/Hello-World",
    
[/code]

として含まれているので、それをそのまま使えます。

ちなみに、ライセンス情報はこんな感じで入っています。

[code]

        "license": {
          "key": "mit",
          "name": "MIT License",
          "spdx_id": "MIT",
          "url": "https://api.github.com/licenses/mit",
          "node_id": "MDc6TGljZW5zZW1pdA=="
        }
    
[/code]

LICENSEファイルが置かれていないリポジトリの場合、

[code]

    license: null,
    
[/code]

ですので、`name` キーが存在するとは限りません。  
nullチェックにご注意ください。

参考: <https://developer.github.com/v3/repos/>




すべて登録不要のAPIだけで可能です。

### ランダムにソースコードをダウンロードする方法

<https://api.github.com/repositories>  
で、100件ずつ取得できます。

`id` 順にソートされているので、この配列からランダムに要素を抽出すれば良いです。

`since` パラメータに与える数値を、ランダムに生成して  
クエリとして付けると、さらに良いと思います。

[code]

    html_url: "https://github.com/octocat/Hello-World",
    
[/code]

のように、リポジトリのURLが入っているので  
この文字列を `git clone` に与えれば、ソースコードをダウンロードできます。

### レポジトリのライセンス、作者も取得したい

作者については、上記APIで返ってくる

[code]

      {
        "id": 1296269,
        "node_id": "MDEwOlJlcG9zaXRvcnkxMjk2MjY5",
        "name": "Hello-World",
        "full_name": "octocat/Hello-World",
        "owner": {
          "login": "octocat",
          "id": 1,
          "node_id": "MDQ6VXNlcjE=",
          "avatar_url": "https://github.com/images/error/octocat_happy.gif",
          "gravatar_id": "",
          "url": "https://api.github.com/users/octocat",
          "html_url": "https://github.com/octocat",
    
[/code]

の `owner` -> `login` の部分が該当します。  
作者ページのURLが必要ならば、`owner` -> `html_url` です。

  

ライセンスについては、上記APIだけでは取得できません。

上の例の場合、  
<https://api.github.com/repos/octocat/Hello-World>  
というAPIを2便目として投げれば、ライセンス情報の含まれたJSONが返ってきます。

このURLは、1便目である  
<https://api.github.com/repositories>  
の返すJSON内に、

[code]

        "url": "https://api.github.com/repos/octocat/Hello-World",
    
[/code]

として含まれているので、それをそのまま使えます。

ちなみに、ライセンス情報はこんな感じで入っています。

[code]

        "license": {
          "key": "mit",
          "name": "MIT License",
          "spdx_id": "MIT",
          "url": "https://api.github.com/licenses/mit",
          "node_id": "MDc6TGljZW5zZW1pdA=="
        }
    
[/code]

LICENSEファイルが置かれていないリポジトリの場合、

[code]

    license: null,
    
[/code]

ですので、`name` キーが存在するとは限りません。  
nullチェックにご注意ください。

参考: <https://developer.github.com/v3/repos/>

