![見出し画像](https://assets.st-note.com/production/uploads/images/159753751/rectangle_large_type_2_984d34e8c472bfe2f084ee23599b93d4.png?width=1200)
GitHubで対象リポジトリの毎週のアクティビティを取得する
最近GitHub Copilotの利用率悪いね、の話から、
そもそもみんなが開発をしている時間が取れているのか??という疑問が出てきたので、
とりあえずリポジトリのアクティビティ(追加行数、変更行数、削除行数)をデータを取ってみようとなったのでPythonで簡単にscript組んでみました。
※きっともっといい方法があるとは思いますが、”とりあえず”なのでご了承ください
コード
import csv
import requests
from datetime import datetime as dt, timedelta
# GitHub API の設定
url = "https://api.github.com/repos/<OWNER>/<リポジトリ名>/stats/code_frequency"
headers = {
"Accept": "application/vnd.github+json",
"Authorization": "Bearer <personal access token>",
"X-GitHub-Api-Version": "2022-11-28"
}
# APIリクエストを送信
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
# CSVファイルに書き込み
with open(dt.now().strftime('%Y%m%d%H%M%S')+'github_activity.csv', 'w', newline='') as csvfile:
csvwriter = csv.writer(csvfile)
csvwriter.writerow(['Week', 'Additions', 'Deletions', 'Changes'])
for week_data in data:
week_start = dt.fromtimestamp(week_data[0]).strftime('%Y-%m-%d')
additions = week_data[1]
deletions = week_data[2]
changes = additions + abs(deletions)
csvwriter.writerow([week_start, additions, deletions, changes])
print("Data has been written to github_activity.csv")
else:
print(f"Error: {response.status_code}")
print(response.text)
説明
単純にコマンドたたけばデータは取れます。
▼リポジトリの統計情報用 REST API エンドポイント
https://docs.github.com/ja/rest/metrics/statistics?apiVersion=2022-11-28#get-the-weekly-commit-activity
しかしコマンドの結果だと数字の羅列がぶわーっと出るだけなので、あとで分析しやすいようにコマンドの出力結果をcsvに出力するようになっています。
実装時はrequestorのライブラリのインストールが必要ですのでご注意ください。
出力結果
実際に出力されるcsvファイルの中身はこんな感じです。
![](https://assets.st-note.com/img/1730364297-S3Q9B6rUDY58oEjNb0HxPWAK.png)
この表から2023年の12月から1月にかけて大きな変更があったことがわかります。
このようにリポジトリの変更状況をモニタリングしたい場合は参考にしてもらえると嬉しいです。