Skip to content

Commit d21a611

Browse files
authored
Merge branch 'master' into issue_16_ratelimit_exception
2 parents 3fa7a13 + 02af10d commit d21a611

File tree

3 files changed

+65
-17
lines changed

3 files changed

+65
-17
lines changed

git_logger.py

Lines changed: 41 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
import csv
22
import requests
33
import json
4+
import pytz
45

56
from github import Github, Repository, GithubException, PullRequest
67

78
EMPTY_FIELD = 'Empty field'
9+
810
timedelta = 0.05
911

1012

13+
timezone = 'Europe/Moscow'
14+
15+
1116
def login(token):
1217
client = Github(login_or_token=token)
1318

@@ -67,8 +72,12 @@ def log_commit_to_stdout(info):
6772
print(info)
6873

6974

70-
def log_repository_commits(repository: Repository, csv_name):
75+
def log_repository_commits(repository: Repository, csv_name, start, finish):
7176
for commit in repository.get_commits():
77+
if commit.commit.author.date.astimezone(
78+
pytz.timezone(timezone)) < start or commit.commit.author.date.astimezone(
79+
pytz.timezone(timezone)) > finish:
80+
continue
7281
if commit.commit is not None:
7382
info = {'repository name': repository.full_name,
7483
'author name': commit.commit.author.name,
@@ -163,11 +172,13 @@ def get_connected_pulls(issue_number, repo_owner, repo_name, token):
163172
else:
164173
return list_url
165174
return 'Empty field'
175+
166176

167-
168-
169-
def log_repository_issues(repository: Repository, csv_name, token):
177+
def log_repository_issues(repository: Repository, csv_name, token, start, finish):
170178
for issue in repository.get_issues(state='all'):
179+
if issue.created_at.astimezone(pytz.timezone(timezone)) < start or issue.created_at.astimezone(
180+
pytz.timezone(timezone)) > finish:
181+
continue
171182
info_tmp = {
172183
'repository name': repository.full_name, 'number': issue.number, 'title': issue.title,
173184
'state': issue.state, 'task': issue.body,
@@ -219,7 +230,7 @@ def log_repository_issues(repository: Repository, csv_name, token):
219230

220231

221232
def log_pr_to_csv(info, csv_name):
222-
fieldnames = ['repository name', 'title', 'state', 'commit into', 'commit from', 'created at', 'creator name',
233+
fieldnames = ['repository name', 'title', 'id', 'state', 'commit into', 'commit from', 'created at', 'creator name',
223234
'creator login', 'creator email',
224235
'changed files', 'comment body', 'comment created at', 'comment author name', 'comment author login',
225236
'comment author email', 'merger name', 'merger login', 'merger email', 'source branch',
@@ -277,13 +288,17 @@ def get_related_issues(pull_request_number, repo_owner, repo_name, token):
277288
issue_node = issue["node"]
278289
list_issues_url.append(issue_node["url"])
279290
return list_issues_url
291+
280292

281-
282-
def log_repositories_pr(repository: Repository, csv_name, token):
293+
def log_repositories_pr(repository: Repository, csv_name, token, start, finish):
283294
for pull in repository.get_pulls(state='all'):
295+
if pull.created_at.astimezone(pytz.timezone(timezone)) < start or pull.created_at.astimezone(
296+
pytz.timezone(timezone)) > finish:
297+
continue
284298
info_tmp = {
285299
'repository name': repository.full_name,
286300
'title': pull.title,
301+
'id': pull.number,
287302
'state': pull.state,
288303
'commit into': pull.base.label,
289304
'commit from': pull.head.label,
@@ -331,13 +346,14 @@ def log_repositories_pr(repository: Repository, csv_name, token):
331346
sleep(timedelta)
332347

333348

334-
def log_pull_requests(client: Github, repositories, csv_name, token):
349+
def log_pull_requests(client: Github, repositories, csv_name, token, start, finish):
335350
with open(csv_name, 'w', newline='') as file:
336351
writer = csv.writer(file)
337352
writer.writerow(
338353
(
339354
'repository name',
340355
'title',
356+
'id',
341357
'state',
342358
'commit into',
343359
'commit from',
@@ -363,15 +379,19 @@ def log_pull_requests(client: Github, repositories, csv_name, token):
363379
)
364380

365381
for repo in get_next_repo(client, repositories):
382+
366383
try:
367-
log_repositories_pr(repo, csv_name)
384+
log_repositories_pr(repo, csv_name, tokrn, start, finish)
368385
sleep(timedelta)
369386
except e:
370387
print(e)
371388

372389

373390

374-
def log_issues(client: Github, repositories, csv_name, token):
391+
392+
393+
394+
def log_issues(client: Github, repositories, csv_name, token, start, finish):
375395
with open(csv_name, 'w', newline='') as file:
376396
writer = csv.writer(file)
377397
writer.writerow(
@@ -401,15 +421,19 @@ def log_issues(client: Github, repositories, csv_name, token):
401421
)
402422

403423
for repo in get_next_repo(client, repositories):
424+
404425
try:
405-
log_repository_issues(repo, csv_name)
426+
log_repository_issues(repo, csv_name, token, start, finush)
406427
sleep(timedelta)
407428
except e:
408429
print(e)
409430

410431

411432

412-
def log_commits(client: Github, repositories, csv_name):
433+
aq
434+
435+
436+
def log_commits(client: Github, repositories, csv_name, start, finish):
413437
with open(csv_name, 'w', newline='') as file:
414438
writer = csv.writer(file)
415439
writer.writerow(
@@ -425,8 +449,12 @@ def log_commits(client: Github, repositories, csv_name):
425449
)
426450

427451
for repo in get_next_repo(client, repositories):
452+
428453
try:
429-
log_repository_commits(repo, csv_name)
454+
log_repository_commits(repo, csv_name, starr, finish)
430455
sleep(timedelta)
431456
except e:
432457
print(e)
458+
459+
460+

main.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
11
import argparse
2+
from datetime import datetime
3+
import pytz
4+
25
import git_logger
36

47

@@ -9,9 +12,20 @@ def parse_args():
912
parser.add_argument('-t', '--token', type=str, required=True, help='token github account')
1013
parser.add_argument('-l', '--list', type=str, required=True, help='repos names file')
1114
parser.add_argument('-o', '--out', type=str, required=True, help='output filename')
15+
parser.add_argument('-s', '--start', type=str, required=False, help='start time', default='2000/01/01-00:00:00')
16+
parser.add_argument('-f', '--finish', type=str, required=False, help='finish time', default='2400/01/01-00:00:00')
1217
return parser.parse_args()
1318

1419

20+
def parse_time(datetime_str):
21+
start = datetime_str[0].split('/') + datetime_str[1].split(':') if len(datetime_str) == 2 \
22+
else datetime_str[0].split('/') + ['00', '00', '00']
23+
start = [int(i) for i in start]
24+
start_datetime = datetime(year=start[0], month=start[1], day=start[2], hour=start[3], minute=start[4],
25+
second=start[5])
26+
return start_datetime.astimezone(pytz.timezone(git_logger.timezone))
27+
28+
1529
def main():
1630
args = parse_args()
1731
token = args.token
@@ -23,12 +37,17 @@ def main():
2337
except Exception as e:
2438
print(e)
2539
else:
40+
if args.start:
41+
start = parse_time(args.start.split('-'))
42+
if args.finish:
43+
finish = parse_time(args.finish.split('-'))
2644
if not args.p and not args.i:
27-
git_logger.log_commits(client, repositories, csv_name)
45+
git_logger.log_commits(client, repositories, csv_name, start, finish)
2846
if args.p:
29-
git_logger.log_pull_requests(client, repositories, csv_name, token)
47+
git_logger.log_pull_requests(client, repositories, csv_name, token, start, finish)
3048
if args.i:
31-
git_logger.log_issues(client, repositories, csv_name, token)
49+
git_logger.log_issues(client, repositories, csv_name, token, start, finish)
50+
3251

3352

3453
if __name__ == '__main__':

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
PyGithub~=1.55
2-
requests~=2.31.0
2+
pytz~=2023.3
3+
requests~=2.31.0

0 commit comments

Comments
 (0)