GitHubリポジトリのオーナーに公開されているGraphs/Trafficで自分のリポジトリのアクセス記録を過去14日分見られる。
このページの内容はGitHub Developerで説明されているAPIで取得できるので, それを使ってアクセス記録を得るスクリプトをpythonで書いてみた。
実行環境
|
|
スクリプト
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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
レポジトリ名
結果
|
|
以降省略
出力はスクリプトの18行目から21行目までで定義されているこれの
|
|
順で出てくることを確認した。