add github reviewers script
This commit is contained in:
parent
b969ad8689
commit
9eb116daee
1 changed files with 67 additions and 0 deletions
67
github_reviewers.py
Normal file
67
github_reviewers.py
Normal file
|
@ -0,0 +1,67 @@
|
|||
import requests
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
def fetch_pull_requests(repo_name, auth_token):
|
||||
base_url = f"https://api.github.com/repos/{repo_name}/pulls"
|
||||
# Get the date one month ago from today
|
||||
one_month_ago = datetime.now() - timedelta(days=90)
|
||||
since_date = one_month_ago.strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
|
||||
headers = {
|
||||
"Authorization": f"token {auth_token}"
|
||||
}
|
||||
|
||||
params = {
|
||||
"state": "all",
|
||||
"since": since_date
|
||||
}
|
||||
|
||||
response = requests.get(base_url, headers=headers, params=params)
|
||||
if response.status_code == 200:
|
||||
prs = response.json()
|
||||
print(prs)
|
||||
return prs
|
||||
else:
|
||||
print(f"Failed to fetch pull requests: {response.status_code}")
|
||||
return None
|
||||
|
||||
def fetch_reviewers(pr_url, auth_token, reviews):
|
||||
headers = {
|
||||
"Authorization": f"token {auth_token}"
|
||||
}
|
||||
|
||||
response = requests.get(f"{pr_url}/reviews", headers=headers)
|
||||
if response.status_code == 200:
|
||||
pr_data = response.json()
|
||||
# Get the list of reviewers
|
||||
for reviewer in pr_data:
|
||||
login = reviewer["user"]["login"]
|
||||
if reviews.get(login):
|
||||
reviews[login] += 1
|
||||
else:
|
||||
reviews[login] = 1
|
||||
return None
|
||||
else:
|
||||
print(f"Failed to fetch reviewers for PR {pr_url}: {response.status_code}")
|
||||
return None
|
||||
|
||||
def count_reviewers(repo_name, auth_token):
|
||||
pull_requests = fetch_pull_requests(repo_name, auth_token)
|
||||
if pull_requests:
|
||||
total_reviewers = {}
|
||||
for pr in pull_requests:
|
||||
pr_url = pr["url"]
|
||||
print(f"checking {pr_url}")
|
||||
fetch_reviewers(pr_url, auth_token, total_reviewers)
|
||||
return [pull_requests, total_reviewers]
|
||||
else:
|
||||
return [None, None]
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Replace these with your repository name and GitHub token
|
||||
repository_name = "owner/repo"
|
||||
github_token = "yourtokenhere"
|
||||
prs, total_reviewers = count_reviewers(repository_name, github_token)
|
||||
print(f"Unique reviewers across all pull requests: {total_reviewers}")
|
||||
print(f"Total number of unique reviewers across all pull requests: {len(total_reviewers)}")
|
||||
|
Loading…
Add table
Reference in a new issue