Github, Releaseのダウンロード数をカウントする

調べると標準では用意されていないのでAPIを叩いて取得するのが一般的らしい。

cURL

curlを使ってこんな感じで処理するのがどうも定番。

> curl https://api.github.com/repos/ユーザー/リポジトリ/releases

json形式でドカッとデータが取れるので、findstrで(Windowsの場合ね)download_count を抽出すればダウンロード数が新しい順に取得できる。

> curl https://api.github.com/repos/ユーザー/リポジトリ/releases -o download.txt
> findstr "download_count" download.txt
        "download_count": 53,
        "download_count": 57,
        "download_count": 14,
        "download_count": 22,

対応するtagの確認は tag_name で抽出。

> findstr "tag_name"  download.txt
    "tag_name": "20171020",
    "tag_name": "20170622",
    "tag_name": "20161118",
    "tag_name": "20160712",

Python

curlだけだと使い勝手がいまいちなのでPythonでスクリプトを書いてみた。

import requests

r = requests.get('https://api.github.com/repos/hoge/Project01/releases')
for item in r.json():
    print("tag_name: ",item["tag_name"])
    print("name: ", item["name"])
    print(item["assets"][0]["url"])
    print("download count: ", item["assets"][0]["download_count"])
    print("")

実行結果

tag_name:  20171020
name:  Release 0.9.1 (2017/10/20)
https://api.github.com/repos/hoge/Project01/releases/assets/5117284
download count:  53

tag_name:  20170622
name:  Release 0.8.3 (2017/6/19)
https://api.github.com/repos/hoge/Project01/releases/assets/4154981
download count:  57

tag_name:  20161118
name:  Release 0.8.2 (2016/11/18)
https://api.github.com/repos/hoge/Project01/releases/assets/2666798
download count:  14

tag_name:  20160712
name:  Release 0.8.0 (2016/7/12)
https://api.github.com/repos/hoge/Project01/releases/assets/2239693
download count:  22

ではでは


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です