-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathget_TAPAS_stats.py
More file actions
118 lines (96 loc) · 3.86 KB
/
get_TAPAS_stats.py
File metadata and controls
118 lines (96 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import requests
import json
import os
GITHUB_TOKEN = os.getenv("GITHUB_TOKEN")
GIST_ID = os.getenv("GIST_ID")
headers = {'Authorization': f'token {GITHUB_TOKEN}'}
# Fetch the existing Gist content
gist_url = f"https://api.github.com/gists/{GIST_ID}"
gist_response = requests.get(gist_url, headers=headers)
gist_data = gist_response.json()
filename = "stats.json"
accumulated_data = {}
# Assuming the Gist contains JSON data
if gist_response.status_code == 200 and gist_data.get('files'):
# Extract the filename (assuming there's only one file in the Gist)
filename = list(gist_data['files'].keys())[0]
existing_content = gist_data['files'][filename]['content']
# Load existing data from the Gist
accumulated_data = json.loads(existing_content)
else:
accumulated_data = {}
org_name = "ComputationalPsychiatry"
repos_url = f"https://api.github.com/orgs/{org_name}/repos"
repos_response = requests.get(repos_url)
repos = repos_response.json()
total_stars = sum(repo['stargazers_count'] for repo in repos)
total_forks = sum(repo['forks_count'] for repo in repos)
total_issues = sum(repo['open_issues_count'] for repo in repos)
total_downloads = 0
total_clones_new = 0
for repo in repos:
repo_name = repo['name']
clones_count_old = 0
clones_unique_old = 0
# Check if there is existing data
if repo_name in accumulated_data:
repo_data = accumulated_data[repo_name][0]
clones_count_old = repo_data['clones_all']
clones_unique_old = repo_data['clones_unique']
traffic_url = f"https://api.github.com/repos/{org_name}/{repo_name}/traffic/clones"
traffic_response = requests.get(traffic_url, headers=headers)
if traffic_response.status_code == 200:
clones_data = traffic_response.json()
clones_count = clones_data['count'] # Total number of times the repo was cloned
clones_unique = clones_data['uniques'] # Unique number of clones
else:
clones_count = 0
print(f"Repo: {repo_name} - Clones data unavailable (requires admin access)")
# Track download counts for release assets
releases_url = f"https://api.github.com/repos/{org_name}/{repo_name}/releases"
releases_response = requests.get(releases_url, headers=headers)
download_count = 0
if releases_response.status_code == 200:
releases = releases_response.json()
for release in releases:
for asset in release.get('assets', []):
download_count += asset['download_count']
else:
print(f"Repo: {repo_name} - Release data unavailable (requires admin access)")
total_downloads += download_count
total_clones_new += clones_unique
license = "None"
if repo['license'] is not None:
license = repo['license']['spdx_id']
# remove old data
accumulated_data[repo_name] = []
accumulated_data[repo_name].append({
'clones_all': clones_count+clones_count_old,
'clones_unique': clones_unique+clones_unique_old,
'downloads': download_count,
'stargazers': repo['stargazers_count'],
'forks': repo['forks_count'],
'open_issues': repo['open_issues_count'],
'language': repo['language'],
'watchers': repo['watchers_count'],
'license': license
})
# Update the Gist with the new data
updated_content = json.dumps(accumulated_data, indent=4)
update_gist_data = {
"files": {
filename: {
"content": updated_content
}
}
}
update_response = requests.patch(gist_url, headers=headers, data=json.dumps(update_gist_data))
if update_response.status_code == 200:
print("Gist updated successfully!")
else:
print("Failed to update the Gist.")
print(f"Total Stars: {total_stars}")
print(f"Total Forks: {total_forks}")
print(f"Total Issues: {total_issues}")
print(f"Total Downloads: {total_downloads}")
print(f"Total new clones: {total_clones_new}")