forked from Princeyadav05/Github-Tracker
-
Notifications
You must be signed in to change notification settings - Fork 1
/
trackerscript.py
73 lines (57 loc) · 2.5 KB
/
trackerscript.py
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
import requests
import json
import csv
import datetime
import urlparse
base_url = "https://api.github.com"
user = []
s = []
with open('database.csv', 'rb') as f:
reader = csv.reader(f)
for data in reader:
user.append(data)
print user
z = len(user)
date = datetime.datetime.now()
name = date.strftime("%d-%m-%Y")
print z
def api_call():
with open(name + '.csv', 'a') as outcsv:
writer = csv.DictWriter(outcsv, fieldnames=['Name', 'Repo', 'Contributor', 'Week', 'Number of Commits',
'Number of Lines Added', 'Number of Lines Deleted'], delimiter=',')
writer.writeheader()
for i in range(1, z):
request_url = (base_url + '/repos/%s/%s/stats/contributors?'
'client_id=6ffcb5c447f054babff3&client_secret='
'6b889df62e3474104a6b23d949c0c55f86a8e50a') % (user[i][0], user[i][1])
print 'GET request url : %s' % request_url
try:
data = requests.get(request_url).json()
if data:
with open('repo_data.json', 'w') as outfile:
json.dump(data, outfile)
f1 = open('repo_data.json')
data = json.load(f1)
f1.close()
for item in data:
week = datetime.datetime.fromtimestamp(
int(item['weeks'][-1]['w'])
).strftime('%Y-%m-%d')
contributor = item['author']['login']
commits = item['weeks'][-1]['c']
add = item['weeks'][-1]['a']
delete = item['weeks'][-1]['d']
writer.writerow({'Name': user[i][0], 'Repo': user[i][1], 'Contributor': str(contributor), 'Week': str(week),
'Number of Commits': str(commits), 'Number of Lines Added': str(add),
'Number of Lines Deleted': str(delete)})
except :
writer.writerow({'Name': user[i][0], 'Repo': user[i][1], 'Contributor': user[i][0], 'Week': 0,
'Number of Commits': 0, 'Number of Lines Added': 0,
'Number of Lines Deleted': 0})
continue
def clear_files():
f = open(name + ".csv", "w") # clear current output.csv
f.truncate()
f.close()
clear_files()
api_call()