mirror of
https://github.com/openmlsys/openmlsys-zh.git
synced 2026-02-04 02:44:10 +08:00
42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
import requests
|
|
import csv
|
|
|
|
def analysis_issue():
|
|
total_data = []
|
|
for page_num in range(20):
|
|
print(f"Pulling page {page_num}")
|
|
response = requests.get('https://api.github.com/repos/openmlsys/openmlsys-zh/issues', params={"state": "all", "per_page": 30, "page": page_num})
|
|
print(f"Result status: {response}")
|
|
data = response.json()
|
|
if len(data) == 0:
|
|
break
|
|
total_data += data
|
|
|
|
all_issues = []
|
|
node_ids = set([])
|
|
for item in total_data:
|
|
if isinstance(item, dict):
|
|
if item["node_id"] not in node_ids:
|
|
all_issues.append([item["user"]["login"], item["author_association"], 1, [item["url"].split("/")[-1]]])
|
|
node_ids.add(item["node_id"])
|
|
print(f"All issues and pr count {len(all_issues)}")
|
|
total_count = {}
|
|
for issue_item in all_issues:
|
|
if total_count.get(issue_item[0], None) is None:
|
|
total_count[issue_item[0]] = issue_item
|
|
else:
|
|
total_count[issue_item[0]][-2] += 1
|
|
total_count[issue_item[0]][-1] += issue_item[-1]
|
|
|
|
keys = sorted(total_count, key=lambda x: total_count[x][-2])
|
|
|
|
final_res = []
|
|
for key in keys:
|
|
total_count[key][-1] = ",".join(total_count[key][-1])
|
|
final_res.append(total_count[key])
|
|
|
|
res_file = open("contribution_stats.csv", "w")
|
|
csv_writer = csv.writer(res_file)
|
|
csv_writer.writerow(["github id", "role", "issue and pr count", "issue or pr ids"])
|
|
csv_writer.writerows(final_res)
|
|
analysis_issue() |