2014年12月6日土曜日

GitHubでのリリースバイナリのダウンロード数を取得する

Getting the download count for your releases - User Documentation によると、Web APIを使う必要があるようです。
今回はMacのターミナルを使ってAPIを叩いてダウンロード数を取得してみます。
手順は

  1. OAuthアクセストークンを生成する
  2. 生成したトークンを用いてAPIを叩き、全てのリリース情報をJSONで取得する
  3. 取得したJSONからダウンロード数を見つける
となります。

1. OAuthアクセストークンを生成する

githubのユーザ設定画面のApplicationsタブを選択し、Personal access tokensの"Generate new tokens"ボタンをクリックします。


すると情報入力画面が表示されます。


Token descriptionは適当で良いと思います。また、Select scopesは"repo"だけで十分です。
Generate tokenボタンを押下するとアクセストークンが発行されるので控えておきます。



2. 生成したトークンを用いてAPIを叩き、全てのリリース情報をJSONで取得する

以降、ターミナルで作業します。
アクセストークンを使う方法はいくつか有りますが、GitHub API v3にあるように今回はGETパラメータとして指定する方法を用います。
$ curl https://api.github.com/?access_token=OAUTH-TOKEN
ひとまずリリース情報を取得する前に、上記URLで401や403が返ってこないことを確認すると良いと思います。
さて、Releases | GitHub APIによると、全てのリリース情報を取得する場合のURLは
GET /repos/:owner/:repo/releases
という形式になります。すなわち、hogeユーザのfugaレポジトリの全リリース情報は
$ curl https://api.github.com/repos/hoge/fuga/releases?access_token=OAUTH-TOKEN
というコマンドで取得できます。
なお、特定のリリースのみ指定することも可能です。
ただし、その場合固有IDを指定する必要があり、結局一度全リリース情報を取得しなければいけないようなので、今回は行っていません。

3. 取得したJSONからダウンロード数を見つける

curlの標準出力をファイルに保存し、vimやTextEditなど適当なエディタで開きます。
出力内容は各リリース情報の配列となっており、新しいリリースが配列の先頭に来るようです。

各リリースのタグ名は"tag_name"というキーで判別します。
そのタグにファイルを添付している場合は、"assets"というキーに各ファイルの情報が収められています。
各ファイルのダウンロード数はそのassetの"download_count"キーを調べると知ることができます。

実際にこの方法で自分のレポジトリを調べてみたらカウント数0でした。ヒャッハー!