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

投稿者: Anonymous

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

api.github.com/repositories?since=50000

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

解決

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

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

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

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

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

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

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

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

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

  {
    "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",

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内に、

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

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

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

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

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

license: null,

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

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

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *