GitHub APIを使ってリポジトリのアクセス数をpythonで取得した
GitHubリポジトリのオーナーに公開されているGraphs/Trafficで自分のリポジトリのアクセス記録を過去14日分見られる。
このページの内容はGitHub Developerで説明されているAPIで取得できるので, それを使ってアクセス記録を得るスクリプトをpythonで書いてみた。
実行環境
$ python --version
Python 2.7.5
スクリプト
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
import os, json, functools | |
from urllib2 import urlopen, Request | |
# GitHub Traffic API | |
# https://developer.github.com/v3/repos/traffic/ | |
def openTrafficAPI (owner, repo, token, path): | |
url = "https://api.github.com/repos/%s/%s/traffic/%s" % (owner, repo, path) | |
headers = { | |
'Authorization': 'token %s' % token, | |
'Accept': 'application/vnd.github.spiderman-preview' | |
} | |
return urlopen (Request (url, headers=headers)) | |
# 取ってくるデーター | |
paths = [ | |
'popular/referrers', | |
'popular/paths', | |
'views', | |
'clones', | |
] | |
connections = [] | |
try: | |
# openTrafficAPI関数の部分適用 (認証情報を環境変数から得て) | |
fAPI = functools.partial (openTrafficAPI, | |
os.environ['GITHUB_OWNER'], | |
os.environ['GITHUB_REPO'], | |
os.environ['GITHUB_TOKEN']) | |
# open connections | |
connections = [fAPI (p) for p in paths] | |
# JSONパース | |
datadicts = [json.loads (c.read ()) for c in connections] | |
finally: | |
[c.close () for c in connections if c is not None] # 後始末 | |
del connections | |
# 辞書型のデーターをダンプ | |
dumps = [json.dumps (d, indent=2) for d in datadicts] | |
# 結合 | |
print "\n".join (dumps) |
使い方
以下の環境変数をセットして、スクリプトを実行してください。
- GITHUB_TOKEN
GitHubアクセストークン - GITHUB_OWNER
GitHubオーナー名 - GITHUB_REPO
レポジトリ名
結果
[
{
"count": 48,
"referrer": "ak1211.com",
"uniques": 2
},
{
"count": 38,
"referrer": "github.com",
"uniques": 2
}
]
[
{
"count": 30,
"path": "/ak1211/IR-control-amp/blob/1589504b1af6bafcb82ef90ac7f855417b19bd2f/AudioAmpApplication/AudioAmpApplication/i2c_display.c",
"uniques": 1,
"title": "IR-control-amp/i2c_display.c at 1589504b1af6bafcb82ef90ac7f855417b19bd2f \u00b7 ak..."
}
]
以降省略
出力はスクリプトの18行目から21行目までで定義されているこれの
'popular/referrers',
'popular/paths',
'views',
'clones'
順で出てくることを確認した。